世界の測量

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

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