LoginSignup
1
0

Amazon Location Serviceプレースインデックス機能のAPIエンドポイントへリクエストをしてみた

Posted at

はじめに

今回はAmazon Location Serviceプレースインデックス機能の3つのエンドポイントへリクエストしてみました。
プレースインデックス作成の設定はあくまで今回の例です、実際に試す方は必要に応じて変更してください。

Amazon Location Serviceプレースインデックス機能

ジオコーディング、逆ジオコーディング、地点の検索機能を扱うことができます。

  • ジオコーディング
    住所、POI などを検索し、座標データを取得できます。
  • 逆ジオコーディング
    座標を入力し、その位置に関するメタデータを受け取ることができます。
  • サジェスト検索
    住所や地名に含まれる文字列で検索し、候補を返すことができます。

作成手順

Amazon Location Serviceの画面から「プレースインデックス作成」ボタンを押します。
入力フォームから以下の内容を入力します。今回権限関連はAPIキーを作成して使用します。

スクリーンショット 2024-03-15 143310.png

  • 名前:TestIndex
  • データプロバイダー:Esri
  • データストレージオプション:いいえ、単回使用のみ
  • APIキー:APIキーを作成する
  • APIキー名:test_key
  • アクション:「GetPlace」「SearchPlaceIndexForPosition」「SearchPlaceIndexForSuggestions」「SearchPlaceIndexForText」のみチェック

123.png
スクリーンショット 2024-03-15 143206.png

Amazon Location Serviceエンドポイントへリクエストする

エンドポイント情報

今回はAmazon Location Serviceのエンドポイントへリクエストしようと思います。
リファレンスを参照すると、エンドポイントの構成は以下のようにまとめることができます。

https://サービスコード.geo.リージョンコード.amazonaws.com/places/v0/indexes/インデックス名/search/コマンド

APIにリクエストしてみる

では実際にリクエストを投げてみましょう。今回はChromeエクステンションのTalend API Testerを使用してみました。

  • 住所の検索
    • Post URL:https://places.geo.ap-northeast-1.amazonaws.com/places/v0/indexes/TestIndex/search/text
    • パラメータ:key=上記作成したtest_keyの値
    • body: { "Text" : "東京都千代田区東京駅" }
      スクリーンショット 2024-03-19 163104.png

以下のレスポンスが返されます。

{
    "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] }

以下のレスポンスが返されます。

{
    "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" : "市役所" }

以下のレスポンスが返されます。

{
    "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エンドポイントへリクエストを投げてみました。
プレースインデックス機能にはフィルター機能もあり、返す内容を限定することもできます。フィルター機能についてはまた次の記事で紹介しようと思います。
では、以上になります。最後まで読んでいただき有難うございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0