GeoJson 이란, 지리정보를 표시하는 국제 표준 json 이다.
실제 지형의 모양이라든지, 각종 건물이나 도로 등의 정보를 담고 있고, 이를 통해 유니티에서 실제 터레인과 건물, 도로등을 그릴 수 있다.
https://datatracker.ietf.org/doc/html/rfc7946#section-6
RFC 7946: The GeoJSON Format
GeoJSON is a geospatial data interchange format based on JavaScript Object Notation (JSON). It defines several types of JSON objects and the manner in which they are combined to represent data about geographic features, their properties, and their spatial
datatracker.ietf.org
- 주요 속성
- geometry 키 : 실제 표시해야 하는 위도 경로가 있음
- type 키 : 총 7개의 대소문자를 구분하는 키를 명시
- Point : 점
- MultiPoint : 다중 점
- LineString : 선
- MultiLineString : 다중 선
- Polygon : 1개의 폴리곤
- MultiPolygon : 다중 폴리곤
- GeometryCollection : 다수의 geometry 포함 (면, 선, 점 등을 다중으로 포함)
- coordinates : 실제 위도 경도 값. type 에 따라 1쌍일 수도 있고, 여러 쌍 일 수도 있음.
- longtitude, latitude 순으로 적혀 있음.
- type 키 : 총 7개의 대소문자를 구분하는 키를 명시
- geometry 키 : 실제 표시해야 하는 위도 경로가 있음
- 활용법
- 위의 데이터로 오브젝트를 그리기 위해선, 해당 데이터가 위치한 지도의 중심좌표값을 설정하고, 실제 데이터들의 좌표값 차이를 이용하여 오브젝트를 그려야 함.
- 대한민국의 중심좌표값 : "36.38900", "127.38500”
- 대한민국의 중심좌표값을 그려야 하는 대상 (예 : Terrain) 의 중앙값으로 설정
- 데이터 좌표값과 중심좌표값의 차를 이용하여 그려야 하는 대상 (예 : Terrain) 위치 선정하여 그림
- 위의 데이터로 오브젝트를 그리기 위해선, 해당 데이터가 위치한 지도의 중심좌표값을 설정하고, 실제 데이터들의 좌표값 차이를 이용하여 오브젝트를 그려야 함.
- Unity 에서 매쉬 그리기 (정석적인 방법)
- 위의 json에 있는 좌표값을 가지고, 매쉬를 그려야 한다.
- json 좌표계는 2차원이고, 매쉬는 3차원이므로 z 값을 구해야 한다 (추후 확인)
- https://dean83.tistory.com/169 (매쉬 생성)
- Unity 에서 사각형 건물, 도로 그리기 (높이값은 별도)
- 만일 건물이 큐브 형태라면, 기본 큐브를 이용하여 위치, scale 만 조정하여 간단히 그릴 수 있다.
- 데이터에서 4개의 꼭지점 (좌,우 상단 하단) 을 구하고, center 좌표 기반으로 position 조정
- 4개의 꼭지점의 길이 차를 이용하여 scale 조정
- 만일 건물이 큐브 형태라면, 기본 큐브를 이용하여 위치, scale 만 조정하여 간단히 그릴 수 있다.
MapBox 라는 패키지를 이용하여 geojson 을 파싱, 렌더링 할 수 있으나 해당 버전이 너무 오래되었다.
json 구조를 가지고 직접 구현하든 MapBox 패키지를 이용하든 해도 된다.
https://docs.mapbox.com/unity/maps/guides/
'Unity' 카테고리의 다른 글
LOD (0) | 2023.11.06 |
---|---|
각종 inspector 옵션들에 대한 설명 및 설정 팁 (0) | 2023.11.06 |
카메라 워킹 설정 (스크립트 없이 경로상 카메라 이동) (2) | 2023.10.26 |
머테리얼 및 텍스쳐 변경 (코드에서) (0) | 2023.10.18 |
Probuilder CSG 사용 (0) | 2023.10.18 |