地理编码 - Amazon Location Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

地理编码

地理编码是一种将文本(例如地址、区域、企业名称或兴趣点)转换为一组地理坐标的过程。您可以使用地点索引资源提交地理编码请求,并合并从地理编码中检索到的数据,从而在 Web 或移动应用程序的地图上显示数据。

本节将指导您如何发送简单的地理编码请求,以及如何发送带有可选规格的地理编码请求。

地理编码

您可以使用将地址转换为一组坐标的SearchPlaceIndexForText操作提交简单的地理编码请求。一个简单的请求包含以下必需参数:

  • Text— 要转换为一组坐标的地址、名称、城市或区域。例如,字符串Any Town

要指定每页的最大结果数,请使用以下可选参数:

  • MaxResults— 限制查询响应中返回的最大结果数。

您可以使用AWS CLI或亚马逊位置 API。

API

以下示例SearchPlaceIndexForText请求在地点索引资源中搜索名为 Any T ow n 的地址、名称、城市或区域。ExamplePlaceIndex

POST /places/v0/indexes/ExamplePlaceIndex/search/text Content-type: application/json { "Text": "Any Town", "MaxResults": 10 }
AWS CLI

以下示例是一个search-place-index-for-text命令,用于在地点索引资源中搜索名为 Any T ow n 的地址、名称、城市或区域。ExamplePlaceIndex

aws location \ search-place-index-for-text \ --index-name ExamplePlaceIndex \ --text "Any Town" \ --max-results 10

在位置附近进行地理编码

进行地理编码时,可以使用以下可选参数在给定位置附近进行地理编码:

  • BiasPosition— 您要在附近搜索的位置。这会通过搜索最接近给定位置的结果来缩小搜索范围。定义为[longitude, latitude]

以下示例是在位置索引资源中搜索名为 Any T own 的地址、名称、城市或地区的SearchPlaceIndexForText请求 [-123.456745.6789]。

POST /places/v0/indexes/ExamplePlaceIndex/search/text Content-type: application/json { "Text": "Any Town", "BiasPosition": [-123.4567,45.6789] }

在边界框内进行地理编码

您可以使用以下可选参数在边界框内进行地理编码,将结果缩小到给定边界内的坐标:

  • FilterBBox— 您指定的边界框,用于将结果筛选为方框边界内的坐标。定义为[LongitudeSW, LatitudeSW, LongitudeNE, LatitudeNE]

    注意

    请求不能同时包含FilterBBoxBiasPosition参数。在请求中指定这两个参数会返回ValidationException错误。

以下示例SearchPlaceIndexForText请求在边界框内搜索名为 Any T ow n 的地址、名称、城市或区域。边界框如下所示:

  • 西南角的经度为 -124.1450

  • 西南角的纬度为 41.7045

  • 东北角的经度为 -124.1387

  • 东北角的纬度为 41.7096

POST /places/v0/indexes/ExamplePlaceIndex/search/text Content-type: application/json { "Text": "Any Town", "FilterBBox": [ -124.1450,41.7045, -124.1387,41.7096 ] }

在一个国家/地区内进行地理编码

您可以使用以下可选参数在指定的一个或多个国家/地区内进行地理编码:

  • FilterCountries— 您要在其中进行地理编码的国家或地区。您可以使用 ISO 3166 三个字母的国家/地区代码在一次请求中定义多达 100 个国家。例如,在澳大利亚使用AUS

以下示例是在德国和法国SearchPlaceIndexForText请求搜索名为 Any T own 的地址、名称、城市或地区。

POST /places/v0/indexes/ExamplePlaceIndex/search/text Content-type: application/json { "Text": "Any Town", "FilterCountries": ["DEU","FRA"] }

使用首选语言进行地理编码

您可以使用可选Language参数为搜索结果设置语言首选项。例如,100 Main St, Any Town, USA默认情况下,搜索100 Main St, Anytown, USA可能会返回。但是,如果您选择fr作为Language,则结果可能会100 Rue Principale, Any Town, États-Unis改为返回。

  • Language— 用于呈现查询结果的语言代码。该值必须是有效的 BCP 47 语言代码。例如,en对于英语。

注意

Language如果未指定,或者结果不支持指定语言,则将使用合作伙伴对该结果的默认语言。

以下示例SearchPlaceIndexforText请求搜索名为Any Town且首选语言指定为de

POST /places/v0/indexes/ExamplePlaceIndex/search/text Content-type: application/json { "Text": "Any Town", "Language": "de" }

响应示例

以下是您从 Amazon Location Places API 调用该SearchPlaceIndexForText操作时的示例响应。结果包括相关地点和请求摘要。根据选择 Esri 或 HERE 作为合作伙伴,将显示两个响应。

Example request
POST /places/v0/indexes/ExamplePlaceIndex/search/text Content-type: application/json { "Text": "Amazon", "MaxResults": 1, "FilterCountries": ["USA"], "BiasPosition": [-112.10, 46.32] }
Example response (Esri)
{ "Results": [ { "Place": { "Country": "USA", "Geometry": { "Point": [ -112.10667999999998, 46.319090000000074 ] }, "Interpolated": false, "Label": "Amazon, MT, USA", "Municipality": "Amazon", "Region": "Montana", "SubRegion": "Jefferson County" }, "Distance": 523.4619749879726, "Relevance": 1 } ], "Summary": { "BiasPosition": [ -112.1, 46.32 ], "DataSource": "Esri", "FilterCountries": [ "USA" ], "MaxResults": 1, "ResultBBox": [ -112.10667999999998, 46.319090000000074, -112.10667999999998, 46.319090000000074 ], "Text": "Amazon" } }
Example response (HERE)
{ "Summary": { "Text": "Amazon", "BiasPosition": [ -112.1, 46.32 ], "FilterCountries": [ "USA" ], "MaxResults": 1, "ResultBBox": [ -112.10668, 46.31909, -112.10668, 46.31909 ], "DataSource": "Here" }, "Results": [ { "Place": { "Label": "Amazon, Jefferson City, MT, United States", "Geometry": { "Point": [ -112.10668, 46.31909 ] }, "Neighborhood": "Amazon", "Municipality": "Jefferson City", "SubRegion": "Jefferson", "Region": "Montana", "Country": "USA", "Interpolated": false, "TimeZone": { "Name": "America/Denver", "Offset": -25200 } }, "PlaceId": "AQAAAIAADsn2T3KdrRWeaXLeVEyjNx_JfeTsMB0NVCEAnAZoJ-o3nqdlJZAdgcT2oWi1w9pS4wXXOk3O1vsKlGsPyHjV4EJxsu289i3hVO_BUPgP7SFoWAi8BW2v7LvAjQ5NfUPy7a1v9ajT3feIqcUZszWSTqKbJHFYvQqW7wdqhpQq3Wy-et39ZQDWSPLZUzgcjN-6VD2gyKkH0Po7gSm8YSJNSQ", "Distance": 523.4619749905755 } ] }