GeoJSON

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기
GeoJSON
확장자 .json, .geojson
표준 RFC 7946
웹사이트 geojson.org

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

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

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

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

워킹그룹[편집]

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

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


[편집]

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

{
  "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 SFA Point.svg
{
    "type": "Point",
    "coordinates": [30, 10]
}
LineString(polyline) SFA LineString.svg
{
    "type": "LineString",
    "coordinates": [
        [30, 10], [10, 30], [40, 40]
    ]
}
Polygon SFA Polygon.svg
{
    "type": "Polygon",
    "coordinates": [
        [[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]]
    ]
}
SFA Polygon with hole.svg
{
    "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 SFA MultiPoint.svg
{
    "type": "MultiPoint",
    "coordinates": [
        [10, 40], [40, 30], [20, 20], [30, 10]
    ]
}
MultiLineString SFA MultiLineString.svg
{
    "type": "MultiLineString",
    "coordinates": [
        [[10, 10], [20, 20], [10, 40]],
        [[40, 40], [30, 30], [40, 20], [30, 10]]
    ]
}
MultiPolygon SFA MultiPolygon.svg
{
    "type": "MultiPolygon",
    "coordinates": [
        [
            [[30, 20], [45, 40], [10, 40], [30, 20]]
        ],
        [
            [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]
        ]
    ]
}
SFA MultiPolygon with hole.svg
{
    "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[11], Leaflet, MapServer[12], Geoforge 소프트웨어[13] GeoServer[14], GeoDjango[15], GDAL[16], Safe Software FME 등 많은 매핑 및 GIS 소프트웨어 패키지에서 지원하고있다.[17] CartoDB[18]와 GDAL OGR 변환 라이브러리를 통해 형식을 처리하는 PostGIS[19]Mapnik[20]에서 GeoJSON을 사용할 수도 있다. Bing Maps, 야후!, HERE[21]GoogleAPI 서비스에서 GeoJSON을 지원한다.

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

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

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


TopoJSON 스키마[편집]

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

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)의 데이타로 응용 프로그램의 적재에 용이할 수 있다.[25][26]

함께보기[편집]

참고[편집]

  1. The GeoJSON Format
  2. http://geojson.org/
  3. https://tools.ietf.org/html/rfc7946
  4. (OSM)https://wiki.openstreetmap.org/wiki/GeoJSON
  5. iOS Location and Maps Programming Guide
  6. The GeoJSON Discussion List
  7. (lon,lat-4. Coordinate Reference System)https://tools.ietf.org/html/rfc7946#section-1.3
  8. March 2007 Archives by thread
  9. https://datatracker.ietf.org/wg/geojson/history/
  10. (mapbox,OSRM)http://geojson.io/#map=5/3.755/99.580
  11. “Archived copy”. 2010년 3월 16일에 원본 문서에서 보존된 문서. 2010년 3월 16일에 확인함. 
  12. http://mapserver.org/output/template_output.html
  13. http://leafletjs.com/reference.html#geojson
  14. “Archived copy”. 2009년 12월 13일에 원본 문서에서 보존된 문서. 2009년 12월 13일에 확인함. 
  15. “Archived copy”. 2009년 9월 7일에 원본 문서에서 보존된 문서. 2009년 10월 9일에 확인함. 
  16. “Archived copy”. 2009년 4월 15일에 원본 문서에서 보존된 문서. 2009년 10월 9일에 확인함. 
  17. “Archived copy” (PDF). 2008년 7월 24일에 원본 문서 (PDF)에서 보존된 문서. 2008년 7월 24일에 확인함. 
  18. http://developers.cartodb.com/documentation/cartodb-js.html
  19. “Archived copy” (PDF). 2010년 6월 1일에 원본 문서 (PDF)에서 보존된 문서. 2010년 6월 1일에 확인함. 
  20. “Archived copy”. 2009년 5월 2일에 원본 문서에서 보존된 문서. 2009년 5월 2일에 확인함. 
  21. https://developer.here.com/documentation/maps/topics_api/h-data-geojson-intro.html
  22. https://developers.google.com/maps/documentation/javascript/examples/layer-data-simple
  23. http://googledevelopers.blogspot.com/2014/03/maps-made-easier-geojson-in-javascript.html
  24. https://github.com/blog/1528-there-s-a-map-for-that
  25. (구글맵)https://developers.google.com/maps/documentation/utilities/polylinealgorithm
  26. (구글맵)https://google-developers.appspot.com/maps/documentation/utilities/polyline-utility/polylineutility