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
関連記事
-  
              
- 
      CodeGuru ProfilerでLambda関数(Python 3.9)のパフォーマンスを確認したCodeGuru ProfilerでPython 3.9のLambda関数の推奨 … 
-  
              
- 
      Redmineの添付ファイルをS3に同期するRedmineをAWS上で構築するデザインを考えていて、せっかくなので冗長化しよ … 
-  
              
- 
      Amazon API GatewayのIAM認証の動作を確認しましたAPI GatewayのIAM認証は、IAMユーザーが実行できるように認証する、 … 
-  
              
- 
      Amazon RDS MySQLでCSVをload data するときに「Access denied」発生超小ネタです。 AWSのデータベースサービスの Amazon RDSのMySQL … 
-  
              
- 
      AlexaにAWSの最新Feedを読み上げてもらう(Lambda Python)年末にAmazon Echo Dotを購入しましたので、練習がてらAlexaスキ … 
-  
              
- 
      WordPressで発生した「No space left on device」に対応CloudWatch Logsメトリクスフィルターで「No space left … 
-  
              
- 
      AWS CLIを使用せずにCodeCommitへhttpsで接続するAWS CLIやアクセスキーID、シークレットアクセスキーなどを開発環境にセット … 
-  
              
- 
      Kinesis Data Analyticsの検索結果をKinesis Data FirehoseからS3バケットに保存するKinesis Data AnalyticsをKinesis Data Stre … 
-  
              
- 
      Active Directory認証でAWSマネジメントコンソールにSSOこちらの2つのサイトを参考にすすめました。 Active Directory資産 … 
-  
              
- 
      S3バケットポリシーでクロスアカウントのPrincipalについて確認確認したこと ドキュメントではこちらで確認しました。 AWS JSON ポリシー … 


