GeoJSON

GeoJSONはJavaScript Object Notation（JSON）を用いて空間データをエンコードし非空間属性を関連付けるファイルフォーマットである。属性にはポイント（住所や座標）、ライン（各種道路や境界線）、 ポリゴン（国や地域）などが含まれる。他のGISファイル形式との違いとして、Open Geospatial Consortiumではなく世界各地の開発者達が開発し管理している点で異なる。TopoJSONはGeoJSONに影響され開発された。

歴史
GeoJSONフォーマットについての議論は2007年3月に始まり、フォーマット仕様は2008年6月に完成した。

2015年4月、Internet Engineering Task ForceがGeographic JSON working groupを設立した。2016年8月、GeoJSONはRFC 7946としてリリースされた。

例
{
  "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" }
      }
    }
  ]
}

ジオメトリ 
点（Point）は[x, y]または[x, y, z]である。[longitude, latitude ] または[eastings, northings]のいずれとしても解釈される可能性がある。3番目の数値はオプションの標高である。10進数で表現する。

たとえば、ロンドン（51.5074° North, 0.1278° West）は、[-0.1278, 51.5074]と表現される。

対応状況 
OpenLayers、Leaflet、GeoServer、Django 、GDAL、CartoDB、PostGIS及びMapnik（GDAL OGR変換ライブラリを経由し扱う）など多くのGIS関連ソフトウェアが対応しており、
Bing MapsやYahoo!、GoogleはAPIが対応している。
Googleマップにはライブラリを使用するか、オブジェクトをインスタンス化することによって利用できる。
GitHubはGeoJSONのレンダリングに対応している。

TopoJSON 
TopoJSONはGeoJSONの拡張であり、トポロジーを記述する。

以下に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]]
  ]
}

派生
転送効率向上、ストリーミング型処理等を目指し、各種の派生フォーマットがある。
 Newline-delimited GeoJSON
 FlatGeobuf
 GeoArrow
 GeoParquet

脚注

外部リンク
 公式サイト
 RFC 7946 - The GeoJSON Format

データシリアライゼーションフォーマット
GISベクターファイルフォーマット
JSON
7946