GeoJSON

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

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

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

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

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

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

예
다음은 말레이시아, 싱가포르등이 위치해 있는 자바 해의 말레이 제도에서의  가상의 GeoJson 표현이다.
{
  "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 형태

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

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

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

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

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

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

같이 보기 
 GeoServer
 GPX
 KML

참고

오픈스트리트맵
구글맵
속성과 형상 데이터 표현이 가능한 GeoJSON - Taewook Kang
WHAT IS GPX?

지리 정보 시스템
자유 소프트웨어
JSON