본문으로 이동

GeoJSON

위키백과, 우리 모두의 백과사전.
GeoJSON
파일 확장자.json, .geojson
인터넷 미디어 타입application/geo+json[1]
포맷 종류GIS 파일 포맷
표준RFC 7946
오픈 포맷?예
웹사이트geojson.org

GeoJSON(지오제이슨)[2]은 위치정보를 갖는 점을 기반으로 체계적으로 지형을 표현하기 위해 설계된 개방형 공개 표준 형식이다. 이것은 JSON인 자바스크립트 오브젝트 노테이션(Object Notation)을 사용하는 파일 포맷이다.[3][4]

지리좌표계의 점을 기반으로 Geocoding된 지형지물(주소 및 위치), 라인스트링(LineString - 거리, 고속도로 및 경계등 정보를 담고있는 문자열) 또는 폴리라인, 다각형 (국가,도시, 토지) 및 이러한 유형의 여러 부분으로 구성된 모음을 특징으로 한다.[5] GeoJSON 기능은 물리적 세계의 엔티티만을 나타낼 필요는 없다. 예를 들어, 모바일 라우팅 및 네비게이션 애플리케이션은 GeoJSON을 사용하여 서비스 범위를 확장 기술할 수 있다.[6] 또한 GPX가 특정 목적을 위한 경로 정보 공유 도구로 활용되는것처럼 즉, 산악 등반이나 마운틴 바이크를 위한 루트 및 길안내 자료등으로 사용할 수 있다.

GeoJSON 형식은 공식 표준 조직이 아니라 국제 인터넷 표준화 기구 산하 워킹그룹에 의해 작성되고 유지된다는 점에서 다른 GIS 표준과 다르지만[7]XML을 기반으로 한GPX와 함께 사실상 표준처럼 사용된다. 특징으로는 일반적인 구글맵이나 오픈스트리트맵서비스가 [위도,경도]의 표기법을 사용하나 GeoJSON은 WGS 84가 권장하는 [경도,위도]의 표기법을 지원한다는 점이다.[8] GeoJSON은 지형 공간 토폴로지를 인코딩하며 일반적으로 파일 크기가 더 작다.

GeoJSON의 주목할만한 계열은 TopoJSON이다.

워킹그룹

[편집]

GeoJSON 형식의 워킹그룹과 토론은 2007년 3월에 시작되었으며[9] 형식 지정은 2008년 6월에 마무리되었다.

2015년 4월 IETF(Internet Engineering Task Force)는 GeoJSON을 2016년 8월 RFC 7946으로 제안된 Geographic JSON 워킹그룹을 구성했다.[10]

예

[편집]

다음은 말레이시아, 싱가포르등이 위치해 있는 자바 해의 말레이 제도에서의 가상의 GeoJson 표현이다.[11]

{
  "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
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
            [100.0, 1.0], [100.0, 0.0]
          ]
        ]
      },
      "properties": {
        "prop0": "value0",
        "prop1": { "this": "that" }
      }
    }
  ]
}

주요 Geometries 형태

[편집]
기본형태(Geometry primitives)
주요 형식(Type) 사용예(Examples)
Point Image
{
    "type": "Point",
    "coordinates": [30, 10]
}
LineString(polyline) Image
{
    "type": "LineString",
    "coordinates": [
        [30, 10], [10, 30], [40, 40]
    ]
}
Polygon Image
{
    "type": "Polygon",
    "coordinates": [
        [[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]]
    ]
}
Image
{
    "type": "Polygon",
    "coordinates": [
        [[35, 10], [45, 45], [15, 40], [10, 20], [35, 10]],
        [[20, 30], [35, 35], [30, 20], [20, 30]]
    ]
}
복잡한 형태(Multipart geometries)
형식(Type) 사용예(Examples)
MultiPoint Image
{
    "type": "MultiPoint",
    "coordinates": [
        [10, 40], [40, 30], [20, 20], [30, 10]
    ]
}
MultiLineString Image
{
    "type": "MultiLineString",
    "coordinates": [
        [[10, 10], [20, 20], [10, 40]],
        [[40, 40], [30, 30], [40, 20], [30, 10]]
    ]
}
MultiPolygon Image
{
    "type": "MultiPolygon",
    "coordinates": [
        [
            [[30, 20], [45, 40], [10, 40], [30, 20]]
        ],
        [
            [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]
        ]
    ]
}
Image
{
    "type": "MultiPolygon",
    "coordinates": [
        [
            [[40, 40], [20, 45], [45, 30], [40, 40]]
        ],
        [
            [[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]],
            [[30, 20], [20, 15], [20, 25], [30, 20]]
        ]
    ]
}

지원 소프트웨어

[편집]

GeoJSON은 OpenLayers[12], Leaflet, MapServer[13], Geoforge 소프트웨어[14] GeoServer[15], GeoDjango[16], GDAL[17], Safe Software FME 등 많은 매핑 및 GIS 소프트웨어 패키지에서 지원하고있다.[18] CartoDB[19]와 GDAL OGR 변환 라이브러리를 통해 형식을 처리하는 PostGIS[20]와 Mapnik[21]에서 GeoJSON을 사용할 수도 있다. Bing Maps, 야후!, HERE[22] 및 Google은 API 서비스에서 GeoJSON을 지원한다.

Google Maps JavaScript API v3은 2014년 3월 19일 기준으로 GeoJSON 데이터 레이어의 통합을 직접 지원한다.[23][24] Julia 언어의 경우 GeoJSON.jl 패키지를 사용할 수 있다.

GitHub은 GeoJSON 렌더링[25]과 Potrace GeoJSON 내보내기도 지원한다.

Geojson.io는 웹 브라우저에서 GeoJSON 렌더링 및 편집을 지원합니다.


TopoJSON 스키마

[편집]

위도0 °와 경도 0 ° 근처에 GIS 정보가 주어지면 모든 메타 데이터를 포함하고있는 단순하지만 유효하고 완전한 topojson 파일의 'Polygon', ' LineString ', 'Point' ,'arc' 및 'properties'는 다음과 같이 정의할 수 있다.

Image
Topojson 속성들과 표현
{
  "type":"Topology",
  "transform":{
    "scale": [1,1],
    "translate": [0,0]
  },
  "objects":{
    "two-squares":{
      "type": "GeometryCollection",
      "geometries":[
        {"type": "Polygon", "arcs":[[0,1]],"properties": {"name": "Left_Polygon" }},
        {"type": "Polygon", "arcs":[[2,-1]],"properties": {"name": "Right_Polygon" }}
      ]
    },
    "one-line": {
      "type":"GeometryCollection",
      "geometries":[
        {"type": "LineString", "arcs": [3],"properties":{"name":"Under_LineString"}}
      ]
    },
    "two-places":{
      "type":"GeometryCollection",
      "geometries":[
        {"type":"Point","coordinates":[0,0],"properties":{"name":"Origine_Point"}},
        {"type":"Point","coordinates":[0,-1],"properties":{"name":"Under_Point"}}
      ]
    }
  },
  "arcs": [
    [[1,2],[0,-2]],
    [[1,0],[-1,0],[0,2],[1,0]],
    [[1,2],[1,0],[0,-2],[-1,0]],
    [[0,-1],[2,0]]
  ]
}

확장성

[편집]

GeoJSON은 GPX와 호환되면서도, XML에 기반한 GPX와는 다르게 스키마나 태그의 엘리먼트 제약으로부터 훨씬 자유롭다. 따라서 폴리라인(라인스트링)의 압축이 가능하고 적은 량(light-weight)의 데이타로 응용 프로그램의 적재에 용이할 수 있다.[26][27]

같이 보기

[편집]

각주

[편집]
  1. ↑ “The GeoJSON Format (RFC 7946)”. Internet Engineering Task Force (IETF).
  2. ↑ The GeoJSON Format
  3. ↑ “보관된 사본”. 2018년 8월 19일에 원본 문서에서 보존된 문서. 2018년 8월 15일에 확인함.
  4. ↑ https://tools.ietf.org/html/rfc7946
  5. ↑ OSM
  6. ↑ iOS Location and Maps Programming Guide
  7. ↑ “The GeoJSON Discussion List”. 2018년 8월 1일에 원본 문서에서 보존된 문서. 2018년 8월 14일에 확인함.
  8. ↑ lon,lat-4. Coordinate Reference System
  9. ↑ “March 2007 Archives by thread”. 2018년 9월 8일에 원본 문서에서 보존된 문서. 2018년 8월 14일에 확인함.
  10. ↑ https://datatracker.ietf.org/wg/geojson/history/
  11. ↑ mapbox,OSRM
  12. ↑ “Archived copy”. 2010년 3월 16일에 원본 문서에서 보존된 문서. 2010년 3월 16일에 확인함.
  13. ↑ http://mapserver.org/output/template_output.html
  14. ↑ “보관된 사본”. 2018년 8월 15일에 원본 문서에서 보존된 문서. 2018년 8월 14일에 확인함.
  15. ↑ “Archived copy”. 2009년 12월 13일에 원본 문서에서 보존된 문서. 2009년 12월 13일에 확인함.
  16. ↑ “Archived copy”. 2009년 9월 7일에 원본 문서에서 보존된 문서. 2009년 10월 9일에 확인함.
  17. ↑ “Archived copy”. 2009년 4월 15일에 원본 문서에서 보존된 문서. 2009년 10월 9일에 확인함.
  18. ↑ “Archived copy” (PDF). 2008년 7월 24일에 원본 문서 (PDF)에서 보존된 문서. 2008년 7월 24일에 확인함.
  19. ↑ “보관된 사본”. 2014년 6월 27일에 원본 문서에서 보존된 문서. 2018년 8월 14일에 확인함.
  20. ↑ “Archived copy” (PDF). 2010년 6월 1일에 원본 문서 (PDF)에서 보존된 문서. 2010년 6월 1일에 확인함.
  21. ↑ “Archived copy”. 2009년 5월 2일에 원본 문서에서 보존된 문서. 2009년 5월 2일에 확인함.
  22. ↑ “보관된 사본”. 2018년 6월 12일에 원본 문서에서 보존된 문서. 2018년 8월 14일에 확인함.
  23. ↑ https://developers.google.com/maps/documentation/javascript/examples/layer-data-simple
  24. ↑ http://googledevelopers.blogspot.com/2014/03/maps-made-easier-geojson-in-javascript.html
  25. ↑ https://github.com/blog/1528-there-s-a-map-for-that
  26. ↑ 구글맵
  27. ↑ “구글맵”. 2018년 8월 15일에 원본 문서에서 보존된 문서. 2018년 8월 15일에 확인함.

외부 링크

[편집]