世界の測量

Sibling of "Relevant, Timely, and Accurate, " but much lighter and shorter ※自らの所属する組織の見解を示すものでない

地理空間情報クリアリングハウスの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))