使ってみよう! Bing API/SDK

第12回 使ってみよう! Bing Spatial Data Services──ジオコーディングをバッチ処理

この記事を読むのに必要な時間:およそ 15.5 分

Bing Spatial Data Services

第9回から3回に渡って,Bing Maps REST Servicesを紹介しました。今回は,違うサービスとして区分されていますが,REST Servicesと同様にREST APIを持つBing Spatial Data Servicesを使ってみましょう。Spatial Data(空間データ)とは,地図や経緯度・住所などの地理情報です。

Bing Spatial Data Servicesには今のところ,Geocode Dataflow APIというひとつのAPIが含まれています。このAPIを利用すると住所から経緯度などの地理情報を得るジオコーディング経緯度情報から住所などの情報を得る逆ジオコーディングが行えます。REST ServicesのLocation APIと同じ内容ですが,異なる点は,大量のデータのバッチ処理にあります。

REST Servicesとレスポンス構造などは共通していますので,REST Servicesの内容も参照すると(特に第9回)⁠理解の手助けになるかと思います。

Geocode Dataflow API

Geocode Dataflow APIの利用手順は次のようになります。

  1. ジオコーディングまたは逆ジオコーディングするデータを次のURLへアップロードし,ジョブを作成します。

    • http://spatial.virtualearth.net/REST/v1/dataflows/Geocode?input=xml&output=xml&key=BingMapsKey

    アップロードしたデータは順次,サーバーで処理されていきます。

  2. ジョブの進行状態を次のURLで確認します。

    • https://spatial.virtualearth.net/REST/v1/dataflows/jobID?output=xml&key=BingMapsKey
  3. ジョブが完了したら,次のURLから処理後のデータをダウンロードします。

    • https://spatial.virtualearth.net/REST/v1/dataflows/Geocode/jobID/output/succeeded&key=BingMapsKey

アップロードおよびダウンロードするデータは,XML形式やCSV(カンマ区切り)⁠タブ区切り,パイプ(|)区切りに対応しています。ジョブの進行状態は,XMLまたはJSON形式で確認できます。

日本のサポート状況

日本への対応ですが,残念ながらあまりよくありません。第9回で紹介しているLocation APIによるジオコーディングでは日本語の住所から経緯度情報の取得が可能でしたが,このGeocode Dataflow APIでは少なくとも執筆時点では日本語から変換は確認できませんでした。また,逆ジオコーディングについてはLocation APIと同等で,都道府県レベルまでとなっています。

なお,同じリクエストを行った場合も,結果が得られる場合と得られない場合がある現象が確認できています。また日本語の場合,逆ジオコーディングのときと同じ内容のリクエストであるにも関わらず,日本語で地名が得られる場合とローマ字で得られる場合があります。

このように執筆時点ではAPIの結果が不安定であること,および日本のサポート状況を踏まえたうえで,参考程度に利用してください。

Bing Maps Key

Geocode Dataflow APIの利用には,これまでのAPIと同じく認証のためBing Maps Keyが必要になります。あらかじめ,Bing Maps Account Center図1で取得してください。

図1 Maps Account Center――Bing Maps Keyの作成

図1 Maps Account Center――Bing Maps Keyの作成

それではもう少し詳しく手順を確認しコードを書いてみましょう。

データのアップロードとジョブの作成

ジオコーディング・逆ジオコーディングを行うデータは,サーバーにアップロードしジョブとして登録します。

リクエストURLの書式

データは,以下の書式のURLにHTTP POSTメソッドによりアップロードします。ひとつのBing Maps Keyで同時に10個までデータをアップロードし処理できます。またひとつのデータは100MBまでです。

  • http://spatial.virtualearth.net/REST/version/dataflows/Geocode?
      description=description&
      input=input&
      output=output&
      key=BingMapsKey

※ HTTPだけではなくHTTPSも使用できます。

URLの各パラメーターの内容は次の通りです。

パラメーター(省略名) 説明
version APIのバージョン(必須)
vと数字の組み合わせで記述します。
例:v1
description データを説明するテキスト
アプリケーションで使用するためのユーザー定義です。
input アップロードするデータ形式(必須)
以下のいずれかを指定します。
  • xml
  • csv
  • tab
  • pipe
output(o) レスポンスの形式
JSON・XML形式を指定します。
  • json(規定値)
  • xml
例:o=xml
key Bing Maps Key(必須)

versionとkeyパラメーターは,APIのすべてのURLで使用します。versionの値は現在v1です。これ以降の説明は省略します。

アップロードデータ

アップロードするデータは,XML・CSV(カンマ区切り)⁠タブ区切り・パイプ区切りのテキストデータをサポートしています。HTTPリクエストのContentTypeヘッダーにはデータ形式に合わせて次のいずれかを指定します。

  • xml:application/xml
  • csv, tab, pipe:text/plain

データ形式についてはこの後に詳しく説明します。

レスポンス

データをアップロードすると指定した形式(JSONまたはXML)でジョブの状態を表すレスポンスが返ってきます。レスポンス形式についても後ほど詳しく説明します。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp

コメント

コメントの記入