はじめに
今回はAmazon Location Serviceプレースインデックス機能の3つのエンドポイントへリクエストしてみました。
プレースインデックス作成の設定はあくまで今回の例です、実際に試す方は必要に応じて変更してください。
Amazon Location Serviceプレースインデックス機能
ジオコーディング、逆ジオコーディング、地点の検索機能を扱うことができます。
- ジオコーディング
住所、POI などを検索し、座標データを取得できます。 - 逆ジオコーディング
座標を入力し、その位置に関するメタデータを受け取ることができます。 - サジェスト検索
住所や地名に含まれる文字列で検索し、候補を返すことができます。
作成手順
Amazon Location Serviceの画面から「プレースインデックス作成」ボタンを押します。
入力フォームから以下の内容を入力します。今回権限関連はAPIキーを作成して使用します。
- 名前:TestIndex
- データプロバイダー:Esri
- データストレージオプション:いいえ、単回使用のみ
- APIキー:APIキーを作成する
- APIキー名:test_key
- アクション:「GetPlace」「SearchPlaceIndexForPosition」「SearchPlaceIndexForSuggestions」「SearchPlaceIndexForText」のみチェック
Amazon Location Serviceエンドポイントへリクエストする
エンドポイント情報
今回はAmazon Location Serviceのエンドポイントへリクエストしようと思います。
リファレンスを参照すると、エンドポイントの構成は以下のようにまとめることができます。
https://サービスコード.geo.リージョンコード.amazonaws.com/places/v0/indexes/インデックス名/search/コマンド
APIにリクエストしてみる
では実際にリクエストを投げてみましょう。今回はChromeエクステンションのTalend API Testerを使用してみました。
- 住所の検索
以下のレスポンスが返されます。
{
"Summary": {
"Text": "東京都千代田区東京駅",
"MaxResults": 50,
"ResultBBox": [
139.76706,
35.68113,
139.767211447,
35.681184616
],
"DataSource": "Esri"
},
"Results": [
{
"Place": {
"Label": "東京都千代田区東京駅",
"Geometry": {
"Point": [
139.767211447,
35.681184616
]
},
"Region": "東京都",
"Country": "JPN",
"Interpolated": false,
"Categories": [
"PointOfInterestType",
"Train Station"
]
},
"Relevance": 1
},
{
"Place": {
"Label": "とうきょうと千代田区東京駅",
"Geometry": {
"Point": [
139.76706,
35.68113
]
},
"SubRegion": "千代田区",
"Region": "とうきょうと",
"Country": "JPN",
"Interpolated": false,
"Categories": [
"PointOfInterestType",
"Train Station"
]
},
"Relevance": 1
}
]
}
- 座標の検索
- Post URL:
https://places.geo.ap-northeast-1.amazonaws.com/places/v0/indexes/TestIndex/search/position
- パラメータ:key=上記作成したtest_keyの値
- body: { "position" : [139.76721144700002, 35.68118461600005] }
- Post URL:
以下のレスポンスが返されます。
{
"Summary": {
"Position": [
139.76721144700002,
35.68118461600005
],
"MaxResults": 50,
"DataSource": "Esri"
},
"Results": [
{
"Place": {
"Label": "東京都千代田区丸の内1-9-1",
"Geometry": {
"Point": [
139.766185236986,
35.681729882807
]
},
"AddressNumber": "1",
"Neighborhood": "1",
"Region": "東京都",
"Country": "JPN",
"PostalCode": "1000005",
"Interpolated": false,
"Categories": [
"AddressType"
],
"SubMunicipality": "丸の内"
},
"Distance": 110.88122647200349
}
]
}
- サジェスト検索による候補の取得
- Post URL:
https://places.geo.ap-northeast-1.amazonaws.com/places/v0/indexes/TestIndex/search/suggestions
- パラメータ:key=上記作成したtest_keyの値
- body: { "Text" : "市役所" }
- Post URL:
以下のレスポンスが返されます。
{
"Summary": {
"Text": "市役所",
"MaxResults": 5,
"DataSource": "Esri"
},
"Results": [
{
"Text": "埼玉県久喜市市役所通り歯科",
"PlaceId": "AQABAKEACxB7n-rKmI69YmmneMPoGaPt7GmFBjLX5_YzZMa8DeQ8TV2xF1vASsQecOJm5RxonPrkNHY5chMWl_0FNozR_YhNJATCvd310HGmsFPoy2Lkrn669qpvB5QKMBXgjBMh03TRJ5J73yDId094dBbOjLLLzSV1etk0FJT2SUdFjZYnGq00KPR4eK3X7EhFlwBye1C317FWeXfA1U0VlvOaYtZm-GchhmU0tOBoIdp04_xq2rKgbFEiVnenCPyuitYKQw"
},
{
"Text": "広島県福山市市役所通りクリニック",
"PlaceId": "AQABAKEA_EqmYaN5ooN2Uj_KHXaqqF48zoTquBJMA3AyOV_a8Y7ubjTfbuylTFDSLDySHbRvXPE-Hz2xAyT3p0uuoaGDiE-tVEF-DhiPABsbHYtywbyZTXHbnlusZJJZNejQDuyMN2hd4oNsDqrzkh2-FGdy5GAZDQneU6jKOa5MGD8igFXqmo2RX3wbVEL42eyhTL_EqS-VqUO-StbSlMi4X7hXtl9jirSRbJW5PuwbhN37shi72pptRO2KTg9UlDg0T7vyBQ"
},
{
"Text": "兵庫県姫路市市役所前局",
"PlaceId": "AQABAKEAFopOytKciOQl0qbW4ym5F2INV6TyNoM5vO7ldOFSQApZPOA67mhyYFmQChJuhb6TguoHoArwVpGf9XFlSET3TNrtD2usETekejRLfYflyHuk7v5ef4zoRDkPVU7ApDJ5mV50OLLFOP2u0ERJRDWT0-T5a6ozuQvJCB76xAhxEax3FMidB9MJAruUXzYvaIyeS9rpNXt6DKHMxCx_4uMe1Ptv1h69CqcQFpVdz0AaKr32pq5evUacQomHzHDhY2qeuQ"
},
{
"Text": "兵庫県尼崎市市役所北交差点",
"PlaceId": "AQABAKEALlJZSZKOb4uxBuc32FrMIdJvUska9PKQRWnhzu7Gtm9HwvuEHz2oVfS_jovHe5PSwqUMd5dimV9-OfPA5H4StULV8qtVuKyEFVD6YPl1ps6U_rV1o-PVuG4pMHDCKcqMYyFo5zV98B1qTGRJMjtiPCpxzjCWPGWrks-uj8pYGCFNNHgKb6WOHIA9_8bIJzOmQYMRfb2wd55lqy-lF2FKKHY-ixEw66g4FRWTZBwgReSSzJL5qFq3tLQhb_s2WCR9bw"
},
{
"Text": "北海道小樽市市役所下交差点",
"PlaceId": "AQABAKEAd3zbR2R0yWQpR_FHw-_wjChs6pu1ymDP9TN8DsQY5bm3jJriqUsy6WraTE9yxYeeF-YSyKv3aLH-r75_KpWNW19PZ16OVIDADlJjEsE3yxWo5DhHqHur2dQGD5KJBPJKJS7rTFWM2mrGtGnQYxoyBjDTqUayUx6-B8h8ljODDGraW4uqrgNkahjRY5GRxFXvH4ZurvwXtehKSapfKBlDDesiI98u3R5puR-6MELDyf4jaXEKNzsUX8RDm-KWQzJzrA"
}
]
}
市役所でサジェスト検索しようとしたら、市役所ではない場所も返されて、5件の結果の中に都道府県がバラバラであることも気になりますね。データがまだ足りないでしょうか、サジェスト検索はまだ課題がありそうです。
おわりに
Amazon Location Serviceを触ってみようと思う方は、AWS公式の入門ワークショップを参考にすることが多いではないでしょうか。
入門ワークショップでは以下のようにAWS CLIでコマンドを使用してリクエストする方法が紹介されています。
# 住所の検索 search-place-index-for-textコマンド
aws location search-place-index-for-text --index-name WorkshopIndex --text "東京都千代田区東京駅"
今回はそのコマンド形式ではなく、APIエンドポイントへリクエストを投げてみました。
プレースインデックス機能にはフィルター機能もあり、返す内容を限定することもできます。フィルター機能についてはまた次の記事で紹介しようと思います。
では、以上になります。最後まで読んでいただき有難うございました。