Unity

GeoJson 이란? 그리고 유니티와 연동하기.

Dean83 2023. 10. 30. 11:11

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

  1. 주요 속성
    • geometry 키 : 실제 표시해야 하는 위도 경로가 있음
      • type 키 : 총 7개의 대소문자를 구분하는 키를 명시
        • Point : 점
        • MultiPoint : 다중 점
        • LineString : 선
        • MultiLineString : 다중 선
        • Polygon : 1개의 폴리곤
        • MultiPolygon : 다중 폴리곤
        • GeometryCollection : 다수의 geometry 포함 (면, 선, 점 등을 다중으로 포함)
      • coordinates : 실제 위도 경도 값. type 에 따라 1쌍일 수도 있고, 여러 쌍 일 수도 있음.
        • longtitude, latitude 순으로 적혀 있음.
  2. 활용법
    • 위의 데이터로 오브젝트를 그리기 위해선, 해당 데이터가 위치한 지도의 중심좌표값을 설정하고, 실제 데이터들의 좌표값 차이를 이용하여 오브젝트를 그려야 함.
      • 대한민국의 중심좌표값 : "36.38900", "127.38500”
    • 대한민국의 중심좌표값을 그려야 하는 대상 (예 : Terrain) 의 중앙값으로 설정
    • 데이터 좌표값과 중심좌표값의 차를 이용하여 그려야 하는 대상 (예 : Terrain) 위치 선정하여 그림
  3. Unity 에서 매쉬 그리기 (정석적인 방법)
  4. Unity 에서 사각형 건물, 도로 그리기 (높이값은 별도)
    • 만일 건물이 큐브 형태라면, 기본 큐브를 이용하여 위치, scale 만 조정하여 간단히 그릴 수 있다.
      • 데이터에서 4개의 꼭지점 (좌,우 상단 하단) 을 구하고, center 좌표 기반으로 position 조정
      • 4개의 꼭지점의 길이 차를 이용하여 scale 조정

 

MapBox 라는 패키지를 이용하여 geojson 을 파싱, 렌더링 할 수 있으나 해당 버전이 너무 오래되었다. 

json 구조를 가지고 직접 구현하든 MapBox 패키지를 이용하든 해도 된다. 
https://docs.mapbox.com/unity/maps/guides/