2014年3月8日

地図を使って何かしようとする時、GeoJSONという言葉をよく見ます。
名前から「地図に関係するJSONなんだな」と思いますが、一体コイツは何でしょう?
GeoJSONフォーマット仕様では、以下のように説明されています。

GeoJSONとは

GeoJSON は様々な地理的データ構造をエンコードするためのフォーマットです。 GeoJSON オブジェクトはジオメトリ、フィーチャー、もしくはフィーチャーのコレクションを表現します。 GeoJSON は Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, そして GeometryCollection というジオメトリタイプをサポートします。 GeoJSON のフィーチャーはジオメトリオブジェクトと追加属性、 それからフィーチャーのリストを表現するフィーチャーコレクションを含みます。

説明を見てもよく分かんないですね。
とりあえず、実際のGeoJSONの例を見てみましょう。

{ "type": "FeatureCollection",
  "features": [
    { "type": "Feature",
      "properties": {"prop0": "好きな値!"},
      "geometry": {
        "type": "Point",
        "coordinates": [102.0, 0.5]
      }
    },
    { "type": "Feature",
      "properties": {"prop0": "好きな値!"},
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
            [100.0, 1.0], [100.0, 0.0] ]
          ]
      }
    },
    //...たくさん続く
  ]
}

色々書いてありますが、一番大事なのはgeometryオブジェクトです。
ここに地図上に示す点や線、地図の形などが格納されています。
typeの種類は決められていて、主に以下の6つがあります。

  • Point
  • LineString
  • Polygon
  • MultiPoint
  • MultiLineString
  • MultiPolygon

coordinatesには経度/緯度で表される、地図上の位置データが入ります。
typeがPointだったらx,yの配列、Polygonだったらx,yの配列が並んだもので面を表現します。
ということで、geometryオブジェクトををずらずら並べることで、何と地図が表現できるという寸法です!

propertiesには好きな値を入れることができます。
例えば国や県の名前、人口などがよく入ります。
D3.jsではここの値を使って、地図に様々な情報を付与していきます。

まとめ

仕組みが分かれば単純なので、手書きでGeoJSONを作ることもできます。

ただ、それはあまりにも無謀なので、geojson.ioといった地理情報作成サービスを使ってみると良いのではないでしょうか。
次回はD3.jsによるジオマッピングの話をしたいと思います。

CATEGORIES