地理空間情報クリアリングハウスのCKAN APIを叩いてみる Pt. 1
地理空間情報クリアリングハウスにはAPIが用意されている。http://docs.ckan.org/en/latest/api/index.htmlを参考に、試しに叩いてみる。
Get JSON-formatted lists of a site’s datasets, groups or other CKAN objects
http://ckan.gsi.go.jp/api/3/action/package_list
データセットのリストを取得する。大量のidが出てくるので、数えてみよう。ruby で。
# 01.rb CC0 require 'open-uri' require 'json' url = 'http://ckan.gsi.go.jp/api/3/action/package_list' p JSON.parse(open(url).read)['result'].size
$ ruby 01.rb 67144
なるほど、http://ckan.gsi.go.jp/dataset で表示されている「67,144 件のデータセットが見つかりました」と整合している。
http://ckan.gsi.go.jp/api/3/action/group_list
この結果は、要するに
{"success": true, "result": []}
である。これは、http://ckan.gsi.go.jp/group にあるとおり、「地理空間情報クリアリングハウス(試行版)では、現在のところグループ機能については使っておりません。」であるためであろう。
http://ckan.gsi.go.jp/api/3/action/tag_list
タグリストを取得する。この結果では、日本語がUnicodeエスケープされていて、ブラウザの直接表示ではよくわからない。デコードしてみよう。ruby で。
# 02.rb CC0 require 'open-uri' require 'json' url = 'http://ckan.gsi.go.jp/api/3/action/tag_list' p JSON.parse(open(url).read)['result']
$ ruby 02.rb ["位置", "健康", "全地球基本地図画像", "公共事業_通信", "土地台帳計画", "地球科学の情報", "境界", "大洋", "構造物", "気象", "環境", "生物相", "社会", "経済", "農業", "運輸", "陸水", "高さ"]
OK。ruby の json gem を使えば、Unicode エスケープのデコードは、自動的に行われるので意識しなくても良いということだ。ところで、この分類は、JMP 2.0 に規定されているものだ。
Get a full JSON representation of a dataset, resource or other object
http://ckan.gsi.go.jp/api/3/action/package_show?id=02og5y53
上記の中のidの値は、http://ckan.gsi.go.jp/api/3/action/package_list の result の中から適当に持ってきたもの。この結果も当然 Unicode エスケープされているので、分かるように書き出してみよう。ruby で。
# 03.rb CC0 require 'open-uri' require 'json' url = 'http://ckan.gsi.go.jp/api/3/action/package_show?id=02og5y53' print JSON.pretty_generate(JSON.parse(open(url).read)['result'])
$ ruby 03.rb { "license_title": "ライセンスが指定されていません", "maintainer": null, "relationships_as_object": [ ], "private": false, "maintainer_email": null, "revision_timestamp": "2014-03-13T16:31:51.996500", "id": "306b40a3-1187-4164-9176-7e2819130d3a", "metadata_created": "2014-03-13T16:31:51.996500", "owner_org": "58918f38-4259-4e68-aaea-ae9ab815a21b", "metadata_modified": "2014-03-14T06:38:10.634074", "author": null, "author_email": null, "state": "active", "version": null, "license_id": "notspecified", "type": "dataset", "resources": [ { "resource_group_id": "95840f3a-55ac-48ca-86c0-3ee23bcf9388", "cache_last_updated": null, "revision_timestamp": "2014-03-13T16:31:57.645488", "webstore_last_updated": null, "id": "e8dfa627-cae9-487f-948c-a638e9da9d24", "size": null, "state": "active", "hash": "", "description": "", "format": "XML", "tracking_summary": { "total": 0, "recent": 0 }, "mimetype_inner": null, "mimetype": null, "cache_url": null, "name": "115-07-02-04", "created": "2014-03-14T01:31:57.663548", "url": "http://ckan.gsi.go.jp///storage/f/2014-03-14T013152/02og5y53_resource.xml", "webstore_url": null, "last_modified": null, "position": 0, "revision_id": "f7ebb94b-8c7e-45ec-8c47-43c8c58c6b89", "resource_type": "file.upload" } ], "num_resources": 1, "tags": [ { "vocabulary_id": null, "display_name": "地球科学の情報", "name": "地球科学の情報", "revision_timestamp": "2014-03-13T16:31:51.996500", "state": "active", "id": "e02a306e-c919-4ba8-bbc1-2c1608479b89" } ], "tracking_summary": { "total": 0, "recent": 0 }, "groups": [ ], "relationships_as_subject": [ ], "num_tags": 1, "name": "02og5y53", "isopen": false, "url": null, "notes": "##要約\n2万5千分1地形図 仁方\n##刊行日\n1970-03-30", "title": "2万5千分1地形図 仁方", "extras": [ { "value": "{\"type\": \"Polygon\", \"coordinates\": [[[132.62244216549399, 34.169907390855798], [132.622439647009, 34.253230852851701], [132.747428462747, 34.253233468975701], [132.747430992234, 34.169910001425997]]]}", "key": "spatial", "__extras": { "package_id": "306b40a3-1187-4164-9176-7e2819130d3a", "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a" } }, { "value": "115-07-02-04", "key": "ファイル識別子", "__extras": { "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a", "package_id": "306b40a3-1187-4164-9176-7e2819130d3a" } }, { "value": "JMP2.0", "key": "メタデータ規格", "__extras": { "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a", "package_id": "306b40a3-1187-4164-9176-7e2819130d3a" } }, { "value": "地球科学の情報", "key": "主題分類", "__extras": { "package_id": "306b40a3-1187-4164-9176-7e2819130d3a", "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a" } }, { "value": "{\"organisationName\": \"国土地理院地理空間情報部情報サービス課\", \"contactInfo\": {\"address\": {\"country\": \"jpn\", \"electronicMailAddress\": \"seika@gsi.go.jp\"}}, \"role\": \"007\"}", "key": "問合せ先(責任者)", "__extras": { "package_id": "306b40a3-1187-4164-9176-7e2819130d3a", "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a" } }, { "value": "shiftJIS", "key": "文字集合", "__extras": { "package_id": "306b40a3-1187-4164-9176-7e2819130d3a", "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a" } }, { "value": "2012-07-24", "key": "日付", "__extras": { "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a", "package_id": "306b40a3-1187-4164-9176-7e2819130d3a" } }, { "value": "日本語", "key": "言語", "__extras": { "package_id": "306b40a3-1187-4164-9176-7e2819130d3a", "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a" } }, { "value": "{\"keyword\": [\"2万5千分1地形図\", \"仁方\", \"115-7-2-4\", \"基本図\"], \"type\": \"005\"}", "key": "記述的キーワード", "__extras": { "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a", "package_id": "306b40a3-1187-4164-9176-7e2819130d3a" } }, { "value": "shiftJIS", "key": "識別情報-文字集合", "__extras": { "package_id": "306b40a3-1187-4164-9176-7e2819130d3a", "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a" } }, { "value": "{\"EX_GeographicBoundingBox\": {\"extentTypeCode\": \"1\", \"extentReferenceSystem\": {\"authority\": {\"title\": \"測量法施行令(昭和24年政令第322号)(日本測地系)\", \"date\": {\"date\": \"1949-08-31\", \"dateType\": \"001\"}}, \"code\": \"TD / (B,L)\"}, \"westBoundLongitude\": \"132.625000\", \"eastBoundLongitude\": \"132.750000\", \"southBoundLatitude\": \"34.166667\", \"northBoundLatitude\": \"34.250000\"}}", "key": "識別情報-範囲1-地理要素1", "__extras": { "package_id": "306b40a3-1187-4164-9176-7e2819130d3a", "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a" } }, { "value": "日本語", "key": "識別情報-言語", "__extras": { "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a", "package_id": "306b40a3-1187-4164-9176-7e2819130d3a" } } ], "organization": { "description": "", "title": "国土地理院", "created": "2014-03-12T10:21:23.872343", "approval_status": "approved", "revision_timestamp": "2014-03-14T06:38:10.634074", "is_organization": true, "state": "active", "image_url": "http://www.gsi.go.jp/common/000051403.gif", "revision_id": "8d4ee750-d7ca-4847-94a5-f977485ef01c", "type": "organization", "id": "58918f38-4259-4e68-aaea-ae9ab815a21b", "name": "gsi" }, "revision_id": "75c08c7f-73f5-4f05-b2b1-7946d456394a" }
とりあえず Pt.1 はここまで。引き続き API guide — CKAN 2.2a documentation を舐める形で叩いてみたい。ruby で。