LogoMark.png

JSON のバックアップの現在との差分(No.1)


#author("2019-11-27T10:09:54+09:00","default:inoue.ko","inoue.ko")
#author("2021-12-01T12:56:25+09:00;2021-12-01T12:54:27+09:00","default:inoue.ko","inoue.ko")
*JSON
JavaScript Object Notation
~

JSONとは、データを表現するための記法のひとつです。データを表現する方法は無限にありますが、相手が人間の場合は、例えば「表」を使えば、情報を整理して伝えることができますが、相手がコンピュータの場合、それを厳密なルールに則って記述する必要があります。
 JSONは、複雑な構造のデータを、人間にも読みやすく、かつコンピュータにも読みやすい記法の1つとして誕生したものです。
JSONとは、データを key とvalue の組み合わせで記述する連想配列のひとつで、データを記述する方法は無限にあります。相手が人間の場合は、例えば「表」を使えば、情報を整理して伝えることができますが、相手がコンピュータの場合、それを厳密なルールに則って記述する必要があります。

JSONは、複雑な構造のデータを、人間にも読みやすく、かつコンピュータにも読みやすい記法の1つとして誕生したものです。ここでは、活用事例のひとつとして、地理情報を記述する GeoJSON についても概説します。
~

***CONTENTS
#contents2_1
~

***形式
**JSON

***データ形式
 { 
   Key:Value,
   Key:Value,
   :
 }
-データはテキスト形式
-拡張性は ''.json''
-拡張子は ''.json''
~


***書き方の事例
 {
   "foo": [ 1, null ],
   "bar": {
      "hoge": [ true, "kos" ] ,
      "piyo": "qux"
    }
 }
~

***Key:キーワード
データを取り出す際に使うキーワードで、ダブルクォーテーション [ ” ] で囲みます(通常の配列では、データの取り出しに「添字」を使います)。 
~

***Value:値
JSONには以下の6種類の「値」があります。
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

&aname(GeoJSON);
~
~
***参考:メタ構文変数
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''。
-https://geojson.org/
-https://geojson.io/
~

***オブジェクトのタイプ
-ジオメトリオブジェクト(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 ファイルがあります。

~


***関連情報
-GIS実習オープン教材
https://gis-oer.github.io/gitbook/book/materials/web_gis/GeoJSON/GeoJSON.html

-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/


//ちなみに [[GISファイル>Google:GISファイル]]形式は、Open Geospatial Consortium が開発していますが、GeoJSONは、世界各地の開発者が開発し管理しています。

~
~