地理空間情報クリアリングハウスのCKAN APIを叩いてみる Pt. 2
地理空間情報クリアリングハウスのCKAN APIを叩いてみる Pt. 1 - 世界の測量の続き。
Get a full JSON representation of a dataset, resource or other object (cnt'd)
http://ckan.gsi.go.jp/api/3/action/tag_show?id=気象
特定タグのデータセットのリストを取り出す。ここで、地理空間情報クリアリングハウスではタグの値に日本語を用いているところがひとつの懸案点であるが、モダンブラウザでは難なくクリア。ただし、検索結果を日本語で見たいのでスクリプトを組んでみる。ruby で。
# 04.rb CC0 require 'uri' require 'open-uri' require 'json' url = URI.escape('http://ckan.gsi.go.jp/api/3/action/tag_show?id=気象') print JSON.pretty_generate(JSON.parse(open(url).read)['result'])
require 'uri' して、URI.escape をかけたところがポイント。
$ ruby 04.rb { "vocabulary_id": null, "packages": [ { "owner_org": "a3584284-76c1-45be-874a-18a8b2eea606", "maintainer": null, "relationships_as_object": [ ... 膨大なので途中省略 ... "display_name": "気象", "id": "cdeb2a73-6ce7-46a7-bca6-9023749bc1b8", "name": "気象" }
OK。
Search for packages or resources matching a query
http://ckan.gsi.go.jp/api/3/action/package_search?q=福江
# 05.rb CC0 require 'uri' require 'open-uri' require 'json' url = URI.escape('http://ckan.gsi.go.jp/api/3/action/package_search?q=福江') print JSON.pretty_generate(JSON.parse(open(url).read))
結果はOKであるが、長いので省略。
http://ckan.gsi.go.jp/api/3/action/resource_search?query=title:2万5千分1地形図
エラーが出る。409 Conflict が返る。研究が必要。以下は、スクリプト(クエリ内容が少し違う)。
# 06.rb CC0 require 'uri' require 'open-uri' require 'json' url = URI.escape('http://ckan.gsi.go.jp/api/3/action/' + 'resource_search?query=title:2万5千分1地形図 白野江') print JSON.pretty_generate(JSON.parse(open(url).read))
Get an activity stream of recently changed datasets on a site
http://ckan.gsi.go.jp/api/3/action/recently_changed_packages_activity_list
こんな感じで取れる。
# 07.rb CC0 require 'uri' require 'open-uri' require 'json' url = URI.escape( 'http://ckan.gsi.go.jp/api/3/action/recently_changed_packages_activity_list') print JSON.pretty_generate(JSON.parse(open(url).read))