本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
索引位置数据
您可以使用Amazon IoT 队列索引将设备上次发送的位置数据编入索引,并使用地理查询搜索设备。此功能解决了设备监控和管理用例,例如位置跟踪和邻近搜索。位置索引的工作原理与其他队列索引功能类似,并且需要在事物索引中指定其他配置。
常见用例包括:搜索和聚合位于所需地理边界内的设备,使用索引数据源中与设备元数据和状态相关的查询词获取特定位置的见解,提供精细视图,例如筛选特定地理区域的结果,以减少车队监控地图中的渲染延迟,跟踪上次报告的设备位置,识别超出所需边界限制的设备并使用队列指标生成警报。要开始使用位置索引和地理查询,请参阅入门教程。
支持的数据格式
Amazon IoT 舰队索引支持以下位置数据格式:
-
坐标参考系的众所周知的文本表示
遵循地理信息-众所周知的坐标参考系文本表示格式的
字符串。一个例子可以是 "POINT(long lat)"
。 -
一个表示坐标的字符串
格式为
"latitude, longitude"
或的字符串"longitude, latitude"
。如果使用"longitude, latitude"
,则还必须在order
中指定geoLocations
。一个例子可以是"41.12,-71.34"
。 -
由纬度(纬度)、经度(经度)键组成的对象
此格式适用于经典阴影和命名阴影。支持的密钥:
lat
、latitude
、lon
、long
、longitude
。一个例子可以是{"lat": 41.12, "lon": -71.34}
。 -
表示坐标的数组
格式为
[lat,lon]
或的数组[lon,lat]
。如果您使用的格式[lon,lat]
与 GeoJSON中的坐标相同(适用于经典阴影和命名阴影),则还必须在中指定 order
。geoLocations
一个例子可以是:
{ "location": { "coordinates": [ **Longitude**, **Latitude** ], "type": "Point", "properties": { "country": "United States", "city": "New York", "postalCode": "*****", "horizontalAccuracy": 20, "horizontalConfidenceLevel": 0.67, "state": "New York", "timestamp": "2023-01-04T20:59:13.024Z" } } }
如何为位置数据编制索引
以下步骤说明如何更新位置数据的索引配置以及如何使用地理查询来搜索设备。
-
知道您的位置数据存储在哪里
舰队索引目前支持索引存储在经典阴影或命名阴影中的位置数据。
-
使用支持的位置数据格式
确保您的位置数据格式遵循支持的数据格式之一。
-
更新索引配置
只需最低限度,即可启用事物(注册表)索引配置。您还必须对包含您的位置数据的经典阴影或命名阴影启用索引。更新事物索引时,应在索引配置中包含位置数据。
-
创建和运行地理查询
根据您的用例,创建地理查询并运行它们来搜索设备。您编写的地理查询必须遵循查询语法。您可以在 地理查询示例 中找到一些示例。
更新事物索引配置
要将位置数据编入索引,您必须更新索引配置并包含您的位置数据。根据您的位置数据的存储位置,请按照以下步骤更新您的索引配置:
如果您的位置数据存储在经典阴影中,则必须thingIndexingMode
将其设置为,REGISTRY_AND_SHADOW
并在中的geoLocations
字段(name
和order
)中指定您的位置数据filter
。
在以下事物索引配置示例中,您可以将位置数据路径shadow.reported.coordinates
指定LonLat
为order
。name
{ "thingIndexingMode": "REGISTRY_AND_SHADOW", "filter": { "geoLocations": [ { "name": "shadow.reported.coordinates", "order": "LonLat" } ] } }
-
thingIndexingMode
索引模式控制是否对注册表或影子进行索引。如果设置
thingIndexingMode
为OFF
,则禁用事物索引。要索引存储在经典阴影中的位置数据,必须
thingIndexingMode
将其设置为REGISTRY_AND_SHADOW
。有关更多信息,请参阅 事物索引模式。 -
filter
索引过滤器为命名阴影和地理定位数据提供了其他选择。有关更多信息,请参阅 索引过滤器。
-
geoLocations
您选择要编制索引的地理定位目标列表。用于索引的地理定位目标的默认最大数量为
1
。要提高限制,请参阅Amazon IoT Device Management 配额。 -
name
地理定位目标字段的名称。的示例值
name
可以是阴影的位置数据路径:shadow.reported.coordinates
. -
order
地理定位目标字段的顺序。有效值:
LatLon
和LonLat
。LatLon
表示纬度和经度。LonLat
表示经度和纬度。该字段是可选的。默认值为LatLon
。
如果您的位置数据存储在命名的阴影中,请namedShadowIndexingMode
将其设置为ON
,将您命名的影子名称添加到中的namedShadowNames
字段中 filter
,并在中的geoLocations
字段中指定您的位置数据路径filter
。
在以下事物索引配置示例中,您可以将位置数据路径shadow.name.namedShadow1.reported.coordinates
指定LonLat
为order
。name
{ "thingIndexingMode": "REGISTRY", "namedShadowIndexingMode": "ON", "filter": { "namedShadowNames": [ "namedShadow1" ], "geoLocations": [ { "name": "shadow.name.namedShadow1.reported.coordinates", "order": "LonLat" } ] } }
-
thingIndexingMode
索引模式控制是否对注册表或影子进行索引。如果设置
thingIndexingMode
为OFF
,则禁用事物索引。要索引存储在命名影子中的位置数据,
thingIndexingMode
必须设置为REGISTRY
(或REGISTRY_AND_SHADOW
)。有关更多信息,请参阅 事物索引模式。 -
filter
索引过滤器为命名阴影和地理定位数据提供了其他选择。有关更多信息,请参阅 索引过滤器。
-
geoLocations
您选择要编制索引的地理定位目标列表。用于索引的地理定位目标的默认最大数量为
1
。要提高限制,请参阅Amazon IoT Device Management 配额。 -
name
地理定位目标字段的名称。的示例值
name
可以是阴影的位置数据路径:shadow.name.namedShadow1.reported.coordinates
. -
order
地理定位目标字段的顺序。有效值:
LatLon
和LonLat
。LatLon
表示纬度和经度。LonLat
表示经度和纬度。该字段是可选的。默认值为LatLon
。
地理查询示例
完成位置数据的索引配置后,运行地理查询来搜索设备。您也可以将地理查询与其他查询字符串合并。有关更多信息,请参阅 查询语法 和 事物查询示例。
查询示例 1
此示例假设位置数据存储在命名的阴影中gps-tracker
。此命令的输出是距离中心点(47.6204,-122.3491)在径向距离内 15.5 千米的设备列表。
aws iot search-index --query-string \ "shadow.name.gps-tracker.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km"
查询示例 2
此示例假设位置数据存储在经典阴影中。此命令的输出是距离中心点(47.6204,-122.3491)在径向距离内 15.5 千米的设备列表。
aws iot search-index --query-string \ "shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km"
查询示例 3
此示例假设位置数据存储在经典阴影中。此命令的输出是未连接且距离中心点(47.6204,-122.3491)的径向距离之外的设备列表。
aws iot search-index --query-string \ "connectivity.connected:false AND (NOT shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km)"