OpenStreetMapを使って開発をしてたら
JSONとかGeoJSONとやらを使うらしい。知らなかったのでまとめてみる。
まずはJSONとは?
dev.classmethod.jpこちらのサイトがわかりやすかった。
ざっくり言うと、JSONとはデータの形式のひとつ。JSON形式で記述したデータのことを、JSON-textという。
(正式名称:JavaScript Object Notation)
どんな形式か
メンバー(member)によって構成される。メンバーとは「コロンを文字列値と値で挟んだもの」こんな感じ。
{ "foo": [ 1, null ], "baz": { "foo": [ true, "bar" ], "baz": "qux" } }
単純な表形式では表現できないものを表現することができる。
そしてGeoJSONとは?
名前から想像がつきそうだけど位置情報をもつJSON形式のデータってことかな。Wikipediaみると、「JSONを用いて空間データをエンコードし非空間属性を関連付けるファイル形式である。」
こういうものらしい。
{ "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] ] }, "properties": { "prop0": "value0", "prop1": 0.0 } }, ] }
GeoJSONオブジェクトは次の3種類で、ジオメトリ (形状)、フィーチャー (地物)、フィーチャーコレクション(フィーチャーの集まり)を表現する。まとまりの大きさ的には、フィーチャーコレクション>フィーチャー>ジオメトリの順。
ジオメトリオブジェクト
"type"が次のいずれか。Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygonまたはGeometryCollectionこれらの詳細はhttp://s.kitazaki.name/docs/geojson-spec-ja.html#id5を参照。
必ず"coordinates" メンバーを持つ(GeometryCollection以外のとき)。
coordinatesメンバー
中身は配列で経度、緯度(、高度)の順。次のいずれかが入る。- ひとつの位置 (Point)
- 位置の配列 (LineString や MultiPoint)
- 位置の配列の配列 (Polygons か MultiLineStrings)
- 位置の多次元配列 (MultiPolygon)
フィーチャーオブジェクト
"type" が"Feature"必ず"geometry"、"properties"のメンバーをもつ。内容はそれぞれジオメトリオブジェクトかJSONのNull、任意のJSONオブジェクトかJSONのNull。
"properties"メンバーには、国や県の名前などを入れることが多いらしい。
フィーチャーコレクションオブジェクト
"type" が"FeatureCollection"フィーチャーオブジェクトの集まり。"features" に対応する値は配列。
参考にさせていただいたサイトはこちら
http://s.kitazaki.name/docs/geojson-spec-ja.html
GeoJSONって何だろう? | Qaramell Blog