Amazon Location Service入門ワークショップ-ジオコーディング
2023/02/05
ジオコーディングにより住所を緯度経度に変換したり、逆に緯度経度から住所を求めたりできます。
Amazon Location ServiceにはジオコーディングのAPIがあります。
目次
関連記事
- Amazon Location Service入門ワークショップの前提環境準備
- Amazon Location Service入門ワークショップ-マップの操作
- Amazon Location Service入門ワークショップ-ルート計算
- Amazon Location Service入門ワークショップ-トラッカー
- Amazon Location Service入門ワークショップ-ジオフェンス
SearchPlaceIndexForText
1 2 |
aws location search-place-index-for-text --index-name WorkshopIndex --text "大阪府大阪市中央区道頓堀1" |
作成しておいたプレースインデックスWorkshopIndexに対して、AWS CLIで実行しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
{ "Results": [ { "Place": { "Country": "JPN", "Geometry": { "Point": [ 135.50440972, 34.66873338000005 ] }, "Interpolated": false, "Label": "大阪府大阪市中央区道頓堀1", "Municipality": "中央区", "Neighborhood": "1", "Region": "大阪府" }, "Relevance": 1 } ], "Summary": { "DataSource": "Esri", "MaxResults": 50, "ResultBBox": [ 135.50440972, 34.66873338000005, 135.50440972, 34.66873338000005 ], "Text": "大阪府大阪市中央区道頓堀1" } } |
テキストに含まれる情報に基づいた結果が返ってきました。
SearchPlaceIndexForText APIがアプリの住所検索でも使用されています。
住所から緯度経度が返ってきて、ピンが設定されています。
1 2 |
aws location search-place-index-for-text --index-name WorkshopIndex --text "城" |
城などキーワードで検索すると該当する複数の結果が返る。
BiasPosition、FilterBBox、FilterCountries、MaxResultsを組み合わせて返す内容を限定できる。
BiasPositionは中央検索地点で、FilterBBoxは緯度経度の範囲、FilterCountriesは国コードのリスト、MaxResultsは件数です。
例えば次のように日本で京都の任意の場所を中心に城を2件抽出などできます。
1 2 3 4 5 6 7 |
aws location search-place-index-for-text \ --index-name WorkshopIndex \ --text "城" \ --bias-position ["135.67323934, 34.92311454000003"] \ --filter-countries "JPN" \ --max-results 2 |
BiasPositionの代わりにFilterBBoxを使うこともできます。
同時に使うことはできませんでした。
1 2 3 4 5 6 7 |
aws location search-place-index-for-text \ --index-name WorkshopIndex \ --text "城" \ --filter-b-box ["135, 34, 140, 40"] \ --filter-countries "JPN" \ --max-results 2 |
住所の不足や表記ゆれも対応しているようです。
SearchPlaceIndexForPosition
逆ジオコーディングです。
1 2 3 4 |
aws location search-place-index-for-position \ --index-name WorkshopIndex \ --position "[135.50440972, 34.668733380000055]" |
ポジションとして緯度経度を渡します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
{ "Results": [ { "Distance": 9.239102020048415, "Place": { "AddressNumber": "17", "Country": "JPN", "Geometry": { "Point": [ 135.50444395072032, 34.66865530454956 ] }, "Interpolated": false, "Label": "大阪府大阪市中央区道頓堀1-3-17", "Municipality": "中央区", "Neighborhood": "1", "PostalCode": "5420071", "Region": "大阪府" } } ], "Summary": { "DataSource": "Esri", "MaxResults": 50, "Position": [ 135.50440972, 34.668733380000056 ] } } |
緯度経度に該当する情報が返ってきます。
位置情報が取得できるアプリなどで緯度経度を取得して、そこから返ってきた情報やキーワードを元に広告を表示したり移動履歴としてユーザーに提供したりなどに使用できます。
SearchPlaceIndexForSuggestions
1 2 3 4 |
aws location search-place-index-for-suggestions \ --index-name WorkshopIndex \ --text "居酒屋" |
キーワードをもとに候補を返してくれます。
BiasPosition、FilterBBoxが使用できるので、特定地域のスポットを検索するような用途で使えそうです。
大阪付近で居酒屋を検索しようとしたら徳島、兵庫、奈良しか出ませんでした。
まだまだ情報が足りてないんですかね。
1 2 3 4 5 |
aws location search-place-index-for-suggestions \ --index-name WorkshopIndex \ --text "居酒屋" \ --filter-b-box ["134, 33, 136, 35"] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "Results": [ { "PlaceId": "AQAAAIAAhWJdclfWTk0rEBIl3oukK4QaVTDkN90pC8rmYbdV_WP_k3xnhPrtiTklxAC-avE1kIeFQoimptgg-90-P3c4EgBByyjxbxBqCHwY89F6JEPvw1e6sgOyK1rpbc9-gz23ZYPQR7UraA2GlmcIeqGowVU8kkh724SBf5SNHjtvCGLVyThpDgAbPnfBldcyfJJ7NKwJGpQpjFqX3AztGZXjqg", "Text": "徳島県阿南市居酒屋美千代" }, { "PlaceId": "AQAAAIAAYyeCQlwW3-s7R0V2NtqblId5ETL9LiMh3PPRkfLpGk1IZ62OCVQtNpDA0r28E2fSk1q1MD_GtRWZhqjhp7Tmq_78cjd0srUc1b6-VARSjmP9cGx3suWloJKnoDQHsDzxZMSlF8RANlDJqwl41zq6h4Ddp2v55TIBPWDfnbdhG_Sr9dABLf2u85i4KYjXLLMrCrgPunBGyJw665-91AbtzA", "Text": "兵庫県明石市居酒屋風れすとらんたんご" }, { "PlaceId": "AQAAAIAAUAXuCOXMLvgw-Fb8LrdBTIRzDYiOWzcmMwE0GBpWfo6jv7TVC_KXqrUhb858OkV67kMErVvCnycwN2EyjZ95jYicBwhtOM_8xzD8sgRqw5U-U42d-uZ4bB56S3SukaE6ThZF5VWPPYg7mguQ7A0iJc_9sW_mq8J-JSvy743wnwaZi7py_uPhSeEFmso3cTJTcs4x2UZs6NwIl03KRBkHaw", "Text": "奈良県磯城郡田原本町居酒屋鞍馬" } ], "Summary": { "DataSource": "Esri", "FilterBBox": [ 134, 33, 136, 35 ], "MaxResults": 5, "Text": "居酒屋" } } |
GetPlace
一度取得したPlaceIdはキャッシュしておけばGetPlaceで再利用できます。
1 2 3 4 |
aws location get-place \ --index-name WorkshopIndex \ --place-id "AQAAAIAAhWJdclfWTk0rEBIl3oukK4QaVTDkN90pC8rmYbdV_WP_k3xnhPrtiTklxAC-avE1kIeFQoimptgg-90-P3c4EgBByyjxbxBqCHwY89F6JEPvw1e6sgOyK1rpbc9-gz23ZYPQR7UraA2GlmcIeqGowVU8kkh724SBf5SNHjtvCGLVyThpDgAbPnfBldcyfJJ7NKwJGpQpjFqX3AztGZXjqg" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "Place": { "Country": "JPN", "Geometry": { "Point": [ 134.6721310490001, 33.924575799000024 ] }, "Interpolated": false, "Label": "徳島県阿南市居酒屋美千代", "Region": "徳島県" } } |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
SendGridのイベントをAPI Gateway -> Lambda(Python) -> DynamoDBに格納する
SendGridのメールイベントログはコンソールで確認出来るのは直近7日分で一括 …
-
Amazon Quantum Ledger Database(QLDB)でサンプル台帳の作成と検証
Quantum Ledger Database(QLDB)を触ったことなかったの …
-
AWS Organizationsからアカウントを新規作成してみて
AWS Organizationsでアカウントを新規作成することがありましたので …
-
PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる
JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …
-
Amazon CloudWatch クロスリージョンクロスアカウントダッシュボードを作成
本ブログのCloudFrontとWAFのアカウントと、EC2、RDS、S3などオ …
-
Amazon Pollyを使って覚えたい資料を耳から身体に染み込ませる
Amazon Pollyを使うとソースコードを一切かかなくても、テキストを音声に …
-
AWS Code Commitをプライベートリポジトリとして使う
GitHubでもいいんですが、アクセスキーとかパスワードとかコンフィグ系で書いて …
-
T3.nanoで仮想メモリ割当をユーザーデータで実行する
T3.nanoはメモリがだいたい500MBです。 実行する処理によってはメモリエ …
-
EC2ユーザーデータからメタデータを取得してRocket.Chatで80ポートを使用する
Rocket.Chatのデフォルトポート番号は3000です。 80を使うようにす …
-
RDSのポイントインタイムリカバリをしました
WordPressで画像アップロードができなくなった(AWS WAFでブロックし …