JSON
JavaScript Object Notation
JSONとは、データを key とvalue の組み合わせで記述する連想配列のひとつで、データを記述する方法は無限にあります。相手が人間の場合は、例えば「表」を使えば、情報を整理して伝えることができますが、相手がコンピュータの場合、それを厳密なルールに則って記述する必要があります。
JSONは、複雑な構造のデータを、人間にも読みやすく、かつコンピュータにも読みやすい記法の1つとして誕生したものです。ここでは、活用事例のひとつとして、地理情報を記述する GeoJSON についても概説します。
CONTENTS
JSON
データ形式
{ Key:Value, Key:Value, : }
- データはテキスト形式
- 拡張子は .json
書き方の事例
{ "foo": [ 1, null ], "bar": { "hoge": [ true, "kos" ] , "piyo": "qux" } }
Key:キーワード
データを取り出す際に使うキーワードで、ダブルクォーテーション [ ” ] で囲みます(通常の配列では、データの取り出しに「添字」を使います)。
Value:値
JSONには以下の6種類の「値」があります。値は1つとは限らず、複数の値を対応させる場合には [ ] で括った配列を使うこともできます。
- 文字列値(string):任意の情報を"で囲んだ記述。"abc", "def"
- 数値(number):数値をそのまま書いた記述。1, 12.5
- 真偽値(boolean):true , false
- ヌル値(null):値が空
- 配列値(array):複数個の値の並びを表現する記述。[1,2,3]
- オブジェクト値(object):{}や{"foo":"bar"}や{"foo":"bar", "baz":null}など
Member:メンバー
名前(name)と、その名前に対する「値」を、コロン(:)でつないだものをメンバーと呼びます。
- "foo": "hoge"
- "bar":1
- "fuga":[1,2,3]
参考:メタ構文変数
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E6%A7%8B%E6%96%87%E5%A4%89%E6%95%B0
GeoJSON
GeoJSONとは、様々な地理的データをJSON形式でコーディングしたデータでファイルフォーマットです。拡張子は json または geojson。
オブジェクトのタイプ
- ジオメトリオブジェクト(coordinates)
- フィーチャーオブジェクト(geometry, properties)
- フィーチャーコレクションオブジェクト(features)
ジオメトリオブジェクト
富士山頂点の情報を書いた例
{ "type": "Point", "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, "coordinates": [138.7309, 35.3628] }
- type:図形のタイプ
"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", "Geometry Collection", "Feature", および"FeatureCollection"のいずれか
- crs:カーソル
- coordinates
経度,緯度,(高度)の順で並べて記載します。
フィーチャーオブジェクト
{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [125.6, 10.1] }, "properties": { "name": "Dinagat Islands" } }
- type
"Feature" と記載します。
- geometry:
Point(住所や座標)、LineString(各種道路や境界線)、Polygon(国や地域)などの図形をジオメトリオブジェクトとして表現します。
- properties:
その座標に関する情報を定義します。
フィーチャーコレクションオブジェクト
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ ] }, "properties": { } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ ] }, "properties": { } } ] }
フィーチャーオブジェクトをグルーピングした書き方になります。
GeoJSON のデータ
- geojson.io:https://geojson.io/
様々な GeoJSON データが公開されていて、- 地図上のマウス操作で GeoJSON データを出力することができます。
- GeoJSON データ から地図を表示することができます。
- 国土交通省国土政策局国土情報課が提供しているデータ
http://nlftp.mlit.go.jp/ksj/
行政区域データには GeoJSON ファイルがあります。
関連情報
- Geospatial Information Authority of Japan
https://github.com/gsi-cyberjapan
参考:GIS
地理情報システム(GIS:Geographic Information System)とは、地理的位置を手がかりに、位置に関する情報を持ったデータ(空間データ)を総合的に管理・加工し、視覚的に表示し、高度な分析や迅速な判断を可能にする技術。
- 国土地理院:https://www.gsi.go.jp/GIS/whatisgis.html
- GISオープン教材:https://github.com/gis-oer
- Open Geospatial Consortium:https://www.ogc.org/