

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

# 解析物联网设备的位置
<a name="device-location-resolve-solvers"></a>

使用 AWS IoT Core Device Location 对来自设备的测量数据进行解码，并使用第三方求解器解析设备位置。解析后的位置以 GeoJSON 有效载荷的形式生成，其中包含地理坐标和准确性信息。您可以通过 AWS IoT 控制台、 AWS IoT 无线 API 或解析设备的位置 AWS CLI。

**Topics**
+ [解析设备位置（控制台）](#location-resolve-console)
+ [解析设备位置（API）](#location-resolve-api)
+ [对解析位置时出现的错误进行故障排除](#location-resolve-troubleshoot)

## 解析设备位置（控制台）
<a name="location-resolve-console"></a>

解析设备位置（控制台）

1. 转到 AWS IoT 控制台中的[设备位置](https://console.aws.amazon.com/iot/home#/device-location-test)页面。

1. 从设备日志或日志中获取有效载荷测量数据，然后将其输入到 CloudWatch **通过有效载荷解析位置**部分。

   以下代码显示了 JSON 有效载荷示例。有效载荷包含蜂窝和 Wi-Fi 测量数据。如果您的有效载荷包含其他类型的测量数据，将使用准确性最高的求解器。有关更多信息以及有效载荷示例，请参阅 [位置求解器和设备有效载荷](device-location-solvers-payload.md)。
**注意**  
JSON 有效载荷中必须包含一种类型的数据测量。

   ```
   {
       "Timestamp": 1664313161,
       "Ip":{
           "IpAddress": "54.240.198.35"        
       },
       "WiFiAccessPoints": [{
           "MacAddress": "A0:EC:F9:1E:32:C1",
           "Rss": -77
       }],
       "CellTowers": {
           "Gsm": [{
               "Mcc": 262,
               "Mnc": 1,
               "Lac": 5126,
               "GeranCid": 16504,
               "GsmLocalId": {
                   "Bsic": 6,
                   "Bcch": 82
               },
               "GsmTimingAdvance": 1,
               "RxLevel": -110,
               "GsmNmr": [{
                   "Bsic": 7,
                   "Bcch": 85,
                   "RxLevel": -100,
                   "GlobalIdentity": {
                       "Lac": 1,
                       "GeranCid": 1
                   }
               }]
           }],
           "Wcdma": [{
               "Mcc": 262,
               "Mnc": 7,
               "Lac": 65535,
               "UtranCid": 14674663,
               "WcdmaNmr": [{
                       "Uarfcndl": 10786,
                       "UtranCid": 14674663,
                       "Psc": 149
                   },
                   {
                       "Uarfcndl": 10762,
                       "UtranCid": 14674663,
                       "Psc": 211
                   }
               ]
           }],
           "Lte": [{
               "Mcc": 262,
               "Mnc": 2,
               "EutranCid": 2898945,
               "Rsrp": -50,
               "Rsrq": -5,
               "LteNmr": [{
                       "Earfcn": 6300,
                       "Pci": 237,
                       "Rsrp": -60,
                       "Rsrq": -6,
                       "EutranCid": 2898945
                   },
                   {
                       "Earfcn": 6300,
                       "Pci": 442,
                       "Rsrp": -70,
                       "Rsrq": -7,
                       "EutranCid": 2898945
                   }
               ]
           }]
       },
       "AdvancedConfiguration": {
           "WiFiCellular": {
               "ConfidencePercent": 68
           }
       }
   }
   ```

1. 要解析位置信息，请选择 **Resolve**（解析）。

   位置信息属于类型 blob 并作为使用 GeoJSON 格式的有效载荷返回，此格式用于对地理数据结构进行编码。有效载荷中包含：
   +  WGS84 地理坐标，包括纬度和经度信息。还可能包含海拔信息。
   + 报告的位置信息类型，例如 **Point**（点）。[点位置类型将位置表示为 WGS84 纬度和经度，编码为 GeoJSON 点。](https://geojson.org/geojson-spec.html#point)
   + 水平和垂直准确性信息，表示解析器估计的位置信息与实际设备位置之间的差异（单位为米）。
   + 置信水平，表示位置估计响应中的不确定性。默认值为 0.68，表示实际设备位置在估计位置的不确定性半径内的概率为 68%。您可以使用`AdvancedConfiguration`参数自定义此值。有关更多信息，请参阅 [AWS IoT Core 设备定位的高级配置](device-location-advanced-configuration.md)。
   + 设备所在的城市、省/直辖市/自治区、国家/地区和邮政编码。只有在使用 IP 反向查找解析器时，才会报告此信息。
   + 时间戳信息与解析该位置的日期和时间相对应。它使用 Unix 时间戳格式。

   以下代码显示了解析位置后返回的 GeoJSON 有效载荷示例。
**注意**  
如果 “ AWS IoT Core 设备位置” 在尝试解析位置时报告错误，则可以对错误进行故障排除并解决位置问题。有关更多信息，请参阅 [对解析位置时出现的错误进行故障排除](#location-resolve-troubleshoot)。

   ```
   {
       "coordinates": [
           13.376077,
           52.51823,
           80.1
       ],
       "type": "Point",
       "properties": {
           "verticalAccuracy": 45,
           "verticalConfidenceLevel": 0.68,
           "horizontalAccuracy": 303,
           "horizontalConfidenceLevel": 0.68,
           "timestamp": "2026-04-07T01:16:39.971767716Z"
       }
   }
   ```

1. 前往**资源位置**部分并验证 AWS IoT Core 设备位置报告的地理位置信息。您可以复制有效负载以用于其他应用程序 AWS 服务和。例如，您可以使用 [位置](location-rule-action.md) 将地理位置数据发送到 Amazon Location Service。

## 解析设备位置（API）
<a name="location-resolve-api"></a>

要使用 AWS IoT 无线 API 解析设备位置，请使用 [GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html)API 操作或 [get-position-estimate](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/get-position-estimate.html)CLI 命令。将有效载荷测量数据指定为输入，然后运行 API 操作以解析设备位置。

**注意**  
`GetPositionEstimate` API 操作不存储任何设备或状态信息，也不能用于检索历史位置数据。它执行一次性操作，解析测量数据并生成估计位置。要检索位置信息，每次执行此 API 操作时都必须指定有效载荷信息。

以下命令显示了如何使用此 API 操作解析位置的示例。

**注意**  
运行 `get-position-estimate` CLI 命令时，必须将输出 JSON 文件指定为第一个输入。此 JSON 文件将以 GeoJSON 格式存储作为响应从 CLI 获得的估计位置信息。例如，以下命令将位置信息存储在*locationout.json*文件中。

```
aws iotwireless get-position-estimate locationout.json \
    --ip IpAddress=""54.240.198.35"" \ 
    --wi-fi-access-points \ 
        MacAddress="A0:EC:F9:1E:32:C1",Rss=-75 \
        MacAddress="A0:EC:F9:15:72:5E",Rss=-67 \
    --advanced-configuration \
        WiFiCellular={ConfidencePercent=68}
```

此示例包括 Wi-Fi 接入点和 IP 地址作为测量类型。 AWS IoT Core 设备位置在 Wi-Fi 求解器和 IP 反向查找求解器之间进行选择，然后选择精度更高的求解器。

可选`--advanced-configuration`参数包含`WiFiCellular`对象，其中包括用于自定义 Wi-Fi 和蜂窝网络测量数据置信度的`ConfidencePercent`字段。在此示例中，设置`ConfidencePercent`为*68*，这也是未指定此参数时的默认值。有关更多信息，请参阅 [AWS IoT Core 设备定位的高级配置](device-location-advanced-configuration.md)。

解析的位置作为使用 GeoJSON 格式的有效载荷返回，此格式用于对地理数据结构进行编码。然后将其存储在*locationout.json*文件中。有效载荷包含 WGS84纬度和经度坐标、精度和置信度信息、位置数据类型以及解析位置的时间戳。

```
{
    "coordinates": [
        13.376077,
        52.51823,
        80.1
    ],
    "type": "Point",
    "properties": {
        "verticalAccuracy": 45,
        "verticalConfidenceLevel": 0.68,
        "horizontalAccuracy": 303,
        "horizontalConfidenceLevel": 0.68,
        "timestamp": "2026-04-07T01:16:39.971767716Z"
    }
}
```

## 对解析位置时出现的错误进行故障排除
<a name="location-resolve-troubleshoot"></a>

尝试解析位置时，可能会看到以下任何错误代码。 AWS IoT Core 使用 `GetPositionEstimate` API 操作时，设备位置可能会生成错误，或者引用 AWS IoT 控制台中与错误对应的行号。
+ 

**400 错误**  
此错误表示设备有效负载 JSON 的格式无法通过 AWS IoT Core 设备位置进行验证。出现此错误可能是因为：
  + JSON 测量数据的格式不正确。
  + 有效载荷中仅包含时间戳信息。
  + 诸如 IP 地址之类的测量数据参数无效。

  要解决此错误，请检查您的 JSON 格式是否正确，是否包含来自一种或多种测量类型的数据作为输入。如果 IP 地址无效，有关如何提供有效 IP 地址来解决此错误的信息，请参阅 [IP 反向查找求解器](device-location-solvers-payload.md#location-solvers-ip)。
+ 

**403 错误**  
此错误表示您无权执行 API 操作或使用 AWS IoT 控制台检索设备位置。要解决此错误，请验证您是否拥有执行此操作所需的权限。如果您的 AWS 管理控制台 会话或会 AWS CLI 话令牌已过期，则可能会发生此错误。要解决此错误，请刷新会话令牌以使用 AWS CLI，或者注销， AWS 管理控制台 然后使用您的凭据登录。
+ 

**404 错误**  
此错误表明 “ AWS IoT Core 设备位置” 未找到或解决任何位置信息。此错误可能是由于测量数据输入中数据不足等原因造成的。例如：
  + MAC 地址或蜂窝发射塔信息不足。
  + IP 地址不可用于查找和检索位置。
  + GNSS 有效载荷不足。

  要解决此类情况下出现的错误，请检查您的测量数据是否包含解析设备位置所需的足够信息。
+ 

**404 错误**  
此错误表明，当 AWS IoT Core 设备位置功能尝试解析位置时，出现了内部服务器异常。要尝试修复此错误，请刷新会话，并重试发送需要解析的测量数据。