도메인 domains/위치 기반 Location-based

Q. GeoJSON이란? GeoJSON을 이루는 객체 종류는?

Tap to restart 2023. 10. 7. 17:00
반응형

A. GeoJSON은 다양한 지리 데이터 구조를 인코딩하기 위한 형식이다.

geojson.org 에 나온 영어 원문 정의는 아래와 같다.

GeoJSON is a format for encoding a variety of geographic data structures.
출처: geojson.org

원문 설명을 보자.

GeoJSON supports the following geometry types: Point, LineString, Polygon, MultiPoint, MultiLineString, and MultiPolygon. Geometric objects with additional properties are Feature objects. Sets of features are contained by FeatureCollection objects.

위 설명처럼 GeoJSON은 Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon 6가지 기하학 유형들을 지원한다. 추가 속성을 가진 기하학 객체들은 특성Feature 객체들이다. 특성 객체들의 집합은 특성집합FeatureCollection 객체라고 한다.

 

geojson.org에 나온 GeoJSON 예시는 아래와 같다. 

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}

하나의 특성Feature 객체로 이루어져 있고, 특성 객체는 Point 유형의 기하학 객체란 것을 알 수 있고, 속성에 디나가트섬들Dinagat Islands이란 이름이 추가되어 있다.

 

GeoJSON을 이루는 객체 종류

GeoJSON을 이루는 객체 종류를 표로 정리하면 아래와 같다.

예시는 The GeoJSON Format RFC7946 문서에 나온 예들이다,

 

객체 종류 객체 번역 정의와 예
기하학 객체
Geometry Object
Position 위치 [102.0, 0.5]
Point 좌표 하나
예)
{
   "type": "Point",
   "coordinates": [102.0, 0.5]
}
MultiPoint 점 여러 개 좌표들의 배열
예)
{
     "type": "MultiPoint",
     "coordinates": [
         [100.0, 0.0], [101.0, 1.0]
     ]
 }
LineString 둘 이상의 좌표들의 배열
예)
{
   "type": "LineString",
   "coordinates": [
       [102.0, 0.0], [103.0, 1.0], [104.0, 0.0]
   ]
}
MultiLineString 선 여러 개 LineString의 배열
예)
 {
     "type": "MultiLineString",
     "coordinates": [
         [ [100.0, 0.0], [101.0, 1.0] ],
         [ [102.0, 2.0], [103.0, 3.0] ]
     ]
 }
Poligon 다각형 4개 이상의 좌표로 둘러싸인 선형 링
MultiPoligon 다각형 여러개 Poligon의 배열
예)
 {
     "type": "MultiPolygon",
     "coordinates": [
         [
             [
                 [102.0, 2.0],
                 [103.0, 2.0],
                 [103.0, 3.0],
                 [102.0, 3.0],
                 [102.0, 2.0]
             ]
         ],
         [
             [
                 [100.0, 0.0],
                 [101.0, 0.0],
                 [101.0, 1.0],
                 [100.0, 1.0],
                 [100.0, 0.0]
             ]
         ]
     ]
 }
GeometryCollection 기하학 집합 Position, Point, ... MultiPoligon 객체 배열
Antimeridian Cutting 반대자오선 분할 반대자오선을 넘어선 특성feature를 표현할 때 분할해서 표현
예)   
{
   "type": "MultiLineString",
   "coordinates": [
       [  [170.0, 45.0], [180.0, 45.0]  ], 
       [  [-180.0, 45.0], [-170.0, 45.0] ]
   ]
}
Uncertainity and Precision 불확실성과 정확성 좌표 위치 값의 자릿수가 불확실성 수준을 나타내는 지표는 아님.
특성 객체
Feature Object
    특성은 기하학 객체 geometry와 속성들properties을 속성으로 가진 객체
예)
{
   "type": "Feature",
   "geometry": {
       "type": "Point",
       "coordinates": [102.0, 0.5]
   },
   "properties": {
       "prop0": "value0"
   }
}
특성 집합 객체
FeatureCollection Object
    특성feature를 배열로 가진 속성 feature를 갖고 있는 객체
예)
{
"type": "FeatureCollection",
"features": [{
   "type": "Feature",
   "geometry": {
       "type": "Point",
       "coordinates": [102.0, 0.5]
   },
   "properties": {
       "prop0": "value0"
   }
}, {
   "type": "Feature",
   "geometry": {
       "type": "LineString",
       "coordinates": [
           [102.0, 0.0],
           [103.0, 1.0],
           [104.0, 0.0],
           [105.0, 1.0]
       ]
   },
   "properties": {
       "prop0": "value0",
       "prop1": 0.0
   }
}]
}

 

활용

구글맵 API, 네이버맵 API 등에서 GeoJSON을 활용한다.

 

구글맵 API 예 GeoJSON 로드

 

 

네이버맵 GeoJSON 데이터 레이어 표시하기 예

 

 

반응형