使用 Amazon Location 添加地理围栏
地理围栏包含形成封闭边界的点和顶点,封闭边界定义了感兴趣区域。地理围栏集合存储并管理一个或多个地理围栏。
Amazon Location 地理围栏集合存储使用名为 GeoJSON (RFC 7946) 的标准地理空间数据格式定义的地理围栏。您可以免费使用诸如 geojson.io 之类的工具来以图形方式绘制地理围栏并保存输出的 GeoJSON 文件。
Amazon Location 不支持带有孔洞的多边形、多面、顺时针多边形和穿过对向子午线的地理围栏。
创建地理围栏集合
使用 Amazon Location 控制台、AWS CLI 或 Amazon Location API 创建地理围栏集合,以存储和管理地理围栏。
- Console
-
使用 Amazon Location 控制台创建地理围栏集合
- API
-
使用 Amazon Location API 创建地理围栏集合
使用 Amazon Location 地理围栏 API 中的 CreateGeofenceCollection
操作。
以下示例使用 API 请求创建名为 ExampleGeofenceCollection
的地理围栏集合。地理围栏集合与客户托管 AWS KMS 密钥相关联,用于加密客户数据。
POST /geofencing/v0/collections
Content-type: application/json
{
"CollectionName": "ExampleGeofenceCollection
",
"Description": "Geofence collection 1 for shopping center",
"KmsKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab
",
"Tags": {
"Tag1" : "Value1"
}
}
- AWS CLI
-
使用 AWS CLI 命令创建地理围栏集合
使用 create-geofence-collection
命令。
以下示例使用 AWS CLI 创建名为 ExampleGeofenceCollection
的地理围栏集合。地理围栏集合与客户托管 AWS KMS 密钥相关联,用于加密客户数据。
aws location \
create-geofence-collection \
--collection-name "ExampleGeofenceCollection
" \
--description "Shopping center geofence collection" \
--kms-key-id "1234abcd-12ab-34cd-56ef-1234567890ab
" \
--tags Tag1=Value1
绘制地理围栏
现在,您已经创建了地理围栏集合,可以定义您的地理围栏了。地理围栏既可以定义为多边形,也可以定义为圆形。要绘制多边形地理围栏,你可以使用 GeoJSON 编辑工具,例如 geojson.io。
要将地理围栏创建为圆形,必须定义圆的中心点和半径。例如,如果您要创建一个地理围栏,以便在设备距离特定位置 50 米以内时收到通知,则应使用该位置的纬度和经度并将半径指定为 50 米。
使用 Amazon Location Service API,您还可以使用键/值对的形式向地理围栏添加元数据。它们可用于存储有关地理围栏的信息(例如地理围栏的类型)或其他特定于您的应用程序的信息。您可以在以下 使用 Amazon EventBridge 对 Amazon Location Service 事件做出反应 情况下使用此元数据。
添加多边形地理围栏
本部分介绍创建多边形地理围栏的情况
使用 GeoJSON 工具绘制地理围栏
现在你已经创建了地理围栏集合,你可以使用 GeoJSON 编辑工具(例如 geojson.io)来定义地理围栏。
创建 GeoJSON 文件
-
打开 GeoJSON 编辑工具。例如,geojson.io。
-
选择绘制多边形图标并绘制感兴趣的区域。
-
选择保存,然后从下拉菜单中选择 GeoJSON。
将 GeoJSON 地理围栏放入地理围栏集合中
您可以使用生成的 GeoJSON 文件通过 Amazon Location Service控制台、AWS CLI 或 Amazon Location API 上传您的地理围栏:
- Console
-
使用 Amazon Location Service 控制台向地理围栏集合添加地理围栏
- API
-
使用 Amazon Location API 添加地理围栏
使用 Amazon Location 地理围栏 API 中的 PutGeofence
操作。
以下示例使用 API 请求将标识为 GEOFENCE-EXAMPLE1
的地理围栏添加到名为 ExampleGeofenceCollection
的地理围栏集合中。它还指定了带有键 Type
和值 loadingArea
的单个地理围栏元数据属性。
PUT /geofencing/v0/collections/ExampleGeofenceCollection
/geofence/GEOFENCE-EXAMPLE1
Content-type: application/json
{
"GeofenceProperties": {
"Type" : "loadingArea"
},
"Geometry": {
"Polygon": [
[
[-5.716667, -15.933333],
[-14.416667, -7.933333],
[-12.316667, -37.066667],
[-5.716667, -15.933333]
]
]
}
}
或者,您可以使用 BatchPutGeofence
操作添加多个地理围栏。
POST /geofencing/v0/collections/ExampleGeofenceCollection
/put-geofences
Content-type: application/json
{
"Entries": [
{
"GeofenceProperties": {
"Type" : "loadingArea"
},
"GeofenceId": "GEOFENCE-EXAMPLE1
",
"Geometry": {
"Polygon": [
[
[-5.716667, -15.933333],
[-14.416667, -7.933333],
[-12.316667, -37.066667],
[-5.716667, -15.933333]
]
]
}
}
]
}
- AWS CLI
-
使用 AWS CLI 命令向地理围栏集合添加地理围栏
使用 put-geofence
命令。
以下示例使用 AWS CLI 向名为 ExampleGeofenceCollection
的地理围栏集合添加地理围栏。
$ aws location \
put-geofence \
--collection-name ExampleGeofenceCollection
\
--geofence-id ExampleGeofenceTriangle
\
--geofence-properties '{"Type": "loadingArea"}' \
--geometry 'Polygon=[[[-5.716667, -15.933333],[-14.416667, -7.933333],[-12.316667, -37.066667],[-5.716667, -15.933333]]]'
{
"CreateTime": "2020-11-11T00:16:14.487000+00:00",
"GeofenceId": "ExampleGeofenceTriangle
",
"UpdateTime": "2020-11-11T00:19:59.894000+00:00"
}
添加圆形地理围栏
本部分介绍如何创建圆形地理围栏。您必须知道要作为圆心的点的纬度和经度,以及圆的半径(以米为单位)。您可以使用 Amazon Location API AWS CLI 或创建圆形地理围栏。
- API
-
使用 Amazon Location API 添加圆形地理围栏
使用 Amazon Location 地理围栏 API 中的 PutGeofence
操作。
以下示例使用 API 请求将标识为 GEOFENCE-EXAMPLE2
的地理围栏添加到名为 ExampleGeofenceCollection
的地理围栏集合中:
PUT /geofencing/v0/collections/ExampleGeofenceCollection
/geofence/GEOFENCE-EXAMPLE2
Content-type: application/json
{
"Geometry": {
"Circle": {
"Center": [-5.716667, -15.933333],
"Radius": 50
}
}
}
- AWS CLI
-
使用 AWS CLI 命令向地理围栏集合添加圆形地理围栏
使用 put-geofence
命令。
以下示例使用 AWS CLI 向名为 ExampleGeofenceCollection
的地理围栏集合添加地理围栏。
$ aws location \
put-geofence \
--collection-name ExampleGeofenceCollection
\
--geofence-id ExampleGeofenceCircle
\
--geometry 'Circle={Center=[-5.716667, -15.933333], Radius=50}'
您还可以将 JSON(用于复杂几何体)放入其自己的文件中,如下面的示例所示。
$ aws location \
put-geofence \
--collection-name ExampleGeofenceCollection
\
--geofence-id ExampleGeofenceCircle
\
--geometry file:circle.json
在示例中,circle.json 文件包含圆形几何图形的 JSON。
{
"Circle": {
"Center": [-74.006975, 40.717127],
"Radius": 287.7897969218057
}
}