

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

# 位置求解器和设备有效载荷
<a name="device-location-solvers-payload"></a>

位置求解器是可用于解析物联网设备位置的算法。 AWS IoT Core 设备定位支持以下位置求解器。您将看到这些测量类型的 JSON 有效载荷格式的示例，求解器支持的设备，以及如何解析位置。

要解析设备位置，请指定一种或多种这些测量数据类型。将为所有测量数据组合返回单个解析位置。

**Topics**
+ [基于 Wi-Fi 的求解器](#location-solvers-wifi)
+ [基于蜂窝的求解器](#location-solvers-cellular)
+ [IP 反向查找求解器](#location-solvers-ip)
+ [GNSS 求解器](#location-solvers-gnss)
+ [适用于支持 Amazon Sidewalk 的设备的 BLE 求解器](#location-solvers-ble)

## 基于 Wi-Fi 的求解器
<a name="location-solvers-wifi"></a>

使用基于 Wi-Fi 的求解器和来自 Wi-Fi 接入点的扫描信息来解析位置。求解器支持 WLAN 技术，可用于计算通过 TCP/IP 连接的普通物联网设备、广域网无线设备和支持 Amazon Side LoRa walk 的设备的设备位置。

 LoRa广域网设备必须配备 LoRa Edge 芯片组，该芯片组可以解码传入的 Wi-Fi 扫描信息。 LoRa Edge 是一个超低功耗平台，它集成了远程 LoRa 收发器、多星座 GNSS 扫描器和针对地理定位应用的被动 Wi-Fi MAC 扫描器。收到来自设备的上行链路消息时，Wi-Fi 扫描数据将发送到 AWS IoT Core 设备位置，并根据 Wi-Fi 扫描结果估算位置。然后将解码后的信息传递给基于 Wi-Fi 的求解器，以检索位置信息。

要详细了解如何解析支持 Amazon Sidewalk 的设备的位置数据，请访问[适用于 Amazon Sidewalk 的 AWS IoT Core 开发者指南](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-sidewalk.html)。

### 基于 Wi-Fi 的求解器有效载荷示例
<a name="location-solvers-wifi-payload"></a>

以下代码显示了来自包含测量数据的设备的 JSON 有效负载示例。当 AWS IoT Core Device Location 收到这些数据作为输入时，它会向求解器提供者发送 HTTP 请求以解析位置信息。要检索此信息，请指定 MAC 地址和 RSS（接收的信号强度）的值。为此，要么使用此格式提供 JSON 负载，要么使用 [GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html)API 操作的[WiFiAccessPoints对象](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_WiFiAccessPoint.html)参数。

```
{
    "Timestamp": 1664313161,    // optional
    "WiFiAccessPoints": [ 
        {
            "MacAddress": "A0:EC:F9:1E:32:C1",  // required
            "Rss": -75                          // required
        }
    ]
}
```

## 基于蜂窝的求解器
<a name="location-solvers-cellular"></a>

 您可以使用基于蜂窝的求解器和从蜂窝无线发射塔获得的测量数据来解析位置。此求解器支持以下技术。即使包含来自任何或所有这些技术的测量数据，也只能获得单个已解析的位置信息。
+ GSM
+ CDMA
+ WCDMA
+ TD-SCDMA
+ LTE

### 基于蜂窝的求解器有效载荷示例
<a name="location-solvers-cellular-payload"></a>

以下代码显示了来自包含蜂窝测量数据的设备的 JSON 有效载荷示例。当 AWS IoT Core Device Location 收到这些数据作为输入时，它会向求解器提供者发送 HTTP 请求以解析位置信息。要检索信息，您可以在控制台中使用此格式提供 JSON 负载，或者为 [GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html)API 操作的[CellTowers](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html#iotwireless-GetPositionEstimate-request-CellTowers)参数指定值。您可以通过使用任何或所有这些蜂窝技术指定参数值来提供测量数据。

#### LTE（长期演变）
<a name="location-solvers-cellular-lte"></a>

使用此测量数据时，必须指定诸如移动网络的网络和国家/地区代码之类的信息，以及包括有关本地 ID 的信息在内的其他可选参数。以下代码显示了有效负载格式的示例。有关这些参数的更多信息，请参阅 [LTE 对象](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_LteObj.html)。

```
{
    "Timestamp": 1664313161,           // optional 
    "CellTowers": {
        "Lte": [
        {
          "Mcc": int,                   // required
          "Mnc": int,                   // required
          "EutranCid": int,             // required. Make sure that you use int for EutranCid.
          "Tac": int,                   // optional
          "LteLocalId": {               // optional
              "Pci": int,               // required 
              "Earfcn": int,            // required 
          },
          "LteTimingAdvance": int,      // optional 
          "Rsrp": int,                  // optional 
          "Rsrq": float,                // optional 
          "NrCapable": boolean,         // optional 
          "LteNmr": [                   // optional
                {
                    "Pci": int,         // required 
                    "Earfcn": int,      // required 
                    "EutranCid": int,   // required
                    "Rsrp": int,        // optional 
                    "Rsrq": float       // optional 
                }
            ]
         }
      ] 
   }
}
```

#### GSM（全球移动通信系统）
<a name="location-solvers-cellular-gsm"></a>

使用此测量数据时，必须指定诸如移动网络的网络和国家/地区代码之类的信息、基站信息，以及其他可选参数等信息。以下代码显示了有效负载格式的示例。有关这些参数的更多信息，请参阅 [GSM 对象](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GsmObj.html)。

```
{   
    "Timestamp": 1664313161,           // optional
    "CellTowers": {
        "Gsm": [ 
        {
          "Mcc": int,                   // required
          "Mnc": int,                   // required
          "Lac": int,                   // required
          "GeranCid": int,              // required
          "GsmLocalId": {               // optional
              "Bsic": int,              // required 
              "Bcch": int,              // required 
          },
          "GsmTimingAdvance": int,      // optional
          "RxLevel": int,               // optional
          "GsmNmr": [                   // optional
            {
                "Bsic": int,            // required
                "Bcch": int,            // required
                "RxLevel": int,         // optional
                "GlobalIdentity": {
                    "Lac": int,         // required
                    "GeranCid": int     // required
                }
             }
          ]
       }
    ]  
}
```

#### CDMA（码分多址）
<a name="location-solvers-cellular-cdma"></a>

使用此测量数据时，必须指定诸如信号功率和标识信息、基站信息，以及其他可选参数等信息。以下代码显示了有效负载格式的示例。有关这些参数的更多信息，请参阅 [CDMA 对象](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_CdmaObj.html)。

```
{
    "Timestamp": 1664313161,               // optional
    "CellTowers": {
        "Cdma": [ 
        {
            "SystemId": int,                // required 
            "NetworkId": int,               // required 
            "BaseStationId": int,           // required 
            "RegistrationZone": int,        // optional 
            "CdmaLocalId": {                // optional
              "PnOffset": int,              // required 
              "CdmaChannel": int,           // required 
            },
            "PilotPower": int,              // optional 
            "BaseLat": float,               // optional 
            "BaseLng": float,               // optional 
            "CdmaNmr": [                    // optional 
                {
                    "PnOffset": int,        // required 
                    "CdmaChannel": int,     // required 
                    "PilotPower": int,      // optional 
                    "BaseStationId": int    // optional 
                }
             ]
          }
       ]
    }
}
```

#### WCDMA（宽带码分多址）
<a name="location-solvers-cellular-wcdma"></a>

使用此测量数据时，必须指定诸如网络和国家/地区代码、信号功率和标识信息、基站信息，以及其他可选参数等信息。以下代码显示了有效负载格式的示例。有关这些参数的更多信息，请参阅 [CDMA 对象](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_CdmaObj.html)。

```
{
    "Timestamp": 1664313161,           // optional
    "CellTowers": {
        "Wcdma": [ 
        {
          "Mcc": int,                   // required
          "Mnc": int,                   // required 
          "UtranCid": int,              // required 
          "Lac": int,                   // optional 
          "WcdmaLocalId": {             // optional
              "Uarfcndl": int,          // required
              "Psc": int,               // required 
          },
          "Rscp": int,                  // optional
          "Pathloss": int,              // optional 
          "WcdmaNmr": [                 // optional 
                {
                  "Uarfcndl": int,      // required 
                  "Psc": int,           // required 
                  "UtranCid": int,      // required
                  "Rscp": int,          // optional 
                  "Pathloss": int,      // optional 
                }
             ]
          }
       ]
    }
}
```

#### TD-SCDMA（时分同步码分多址）
<a name="location-solvers-cellular-tdscdma"></a>

使用此测量数据时，必须指定诸如网络和国家/地区代码、信号功率和标识信息、基站信息，以及其他可选参数等信息。以下代码显示了有效负载格式的示例。有关这些参数的更多信息，请参阅 [CDMA 对象](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_CdmaObj.html)。

```
{
    "Timestamp": 1664313161,           // optional
    "CellTowers": {
        "Tdscdma": [ 
        {
          "Mcc": int,                   // required
          "Mnc": int,                   // required
          "UtranCid": int,              // required
          "Lac": int,                   // optional
          "TdscdmaLocalId": {           // optional
              "Uarfcn": int,            // required 
              "CellParams": int,        // required 
          },
          "TdscdmaTimingAdvance": int,  // optional
          "Rscp": int,                  // optional
          "Pathloss": int,              // optional
          "TdscdmaNmr": [               // optional 
                {
                  "Uarfcn": int,        // required 
                  "CellParams": int,    // required 
                  "UtranCid": int,      // optional
                  "Rscp": int,          // optional
                  "Pathloss": int,      // optional 
                }
             ]
         }
      ]
   }
}
```

## IP 反向查找求解器
<a name="location-solvers-ip"></a>

您可以使用 IP 反向查找求解器，将 IP 地址作为输入来解析位置。求解器可以从已配置的设备中获取位置信息。 AWS IoT使用 IPv4 或 IPv6 标准模式或 IPv6 十六进制压缩模式的格式指定 IP 地址信息。然后，将获得已解析的估计位置，包括设备所在的城市和国家/地区等其他信息。

**注意**  
使用 IP 反向查找，即表示您同意不将其用于识别或定位特定的家庭或街道地址。

### IP 反向查找求解器有效载荷示例
<a name="location-solvers-ip-payload"></a>

以下代码显示了来自包含测量数据的设备的 JSON 有效负载示例。当 AWS IoT Core Device Location 收到测量数据中的 IP 地址信息时，它会在求解器提供者的数据库中查找这些信息，然后使用该数据库来解析位置信息。要检索信息，请使用此格式提供 JSON 负载，或者为 [GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html)API 操作的 I [p](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html#iotwireless-GetPositionEstimate-request-Ip) 参数指定值。

**注意**  
使用此解析器时，除了坐标外，还会报告设备所在的城市、省/直辖市/自治区、国家/地区和邮政编码。有关示例，请参阅[解析设备位置（控制台）](device-location-resolve-solvers.md#location-resolve-console)。

```
{
    "Timestamp": 1664313161,
    "Ip":{
        "IpAddress":"54.240.198.35"
      }
}
```

## GNSS 求解器
<a name="location-solvers-gnss"></a>

使用 GNSS（全球导航卫星系统）求解器和 GNSS 扫描结果消息或 NAV 消息中包含的信息检索设备位置。可以选择提供额外的 GNSS 辅助信息，从而减少求解器搜索信号时必须使用的变量数量。通过提供这种辅助信息（包括位置、高度，以及捕获时间和准确度信息），求解器可以轻松识别视野中的卫星并计算设备位置。

此求解器可用于 LoRa广域网设备和支持 Amazon Sidewalk 的设备，以及已配置物 AWS 联网设备的其他设备。 AWS IoT对于一般物联网设备，如果设备支持使用 GNSS 进行位置估计，当从设备接收 GNSS 扫描信息时，收发器会解析位置信息。对于 LoRa WAN 设备，这些设备必须配备 LoRa Edge 芯片组。当收到来自设备的上行链路消息时，GNSS 扫描数据将发送到 AWS IoT LoRa WAN 或 AWS IoT Amazon Sidewalk，并根据收发器的扫描结果估算位置。

### GNSS 求解器有效载荷示例
<a name="location-solvers-gnss-payload"></a>

以下代码显示了来自包含测量数据的设备的 JSON 有效负载示例。当 AWS IoT Core Device Location 收到包含测量数据中有效载荷的 GNSS 扫描信息时，它会使用收发器和随附的任何其他辅助信息来搜索信号并解析位置信息。要检索信息，请使用此格式提供 JSON 有效负载，或者为 [GetPositionEstimate](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html)API 操作的 [Gnss](https://docs.aws.amazon.com/iot-wireless/latest/apireference/API_GetPositionEstimate.html#iotwireless-GetPositionEstimate-request-Gnss) 参数指定值。

**注意**  
在 AWS IoT Core 设备定位可以解析设备位置之前，必须从有效负载中移除目标字节。

```
{   
    "Timestamp": 1664313161,                  // optional
    "Gnss": { 
        "AssistAltitude": number,             // optional
        "AssistPosition": [ number ],         // optional
        "CaptureTime": number,                // optional
        "CaptureTimeAccuracy": number,        // optional
        "Payload": "string",                  // required
        "Use2DSolver": boolean                // optional
   }
}
```

## 适用于支持 Amazon Sidewalk 的设备的 BLE 求解器
<a name="location-solvers-ble"></a>

**注意**  
对于基于低功耗蓝牙的位置，会根据附近人行道网关的大致位置 AWS IoT 返回位置坐标，这些网关已连接到 Amazon Sidewalk 并启用了社区查找功能。Gateway 位置数据是 AWS 内容，提供给您的唯一目的是帮助您定位连接到 Amazon Sidewalk 的设备，您只能将这些数据用于此目的。您只能通过我们通常向您提供的界面和功能使用和访问位置数据，并且不得尝试重新识别、逆向工程或重新映射我们提供给您的任何 Gateway 位置数据。

通过连接的 Amazon Sidewalk 终端设备 适用于 Amazon Sidewalk 的 AWS IoT Core 可以使用 Amazon Sidewalk 终端设备发布的 BLE、Wi-Fi 或 GNSS 上行链路消息来解析其位置数据。有关更多信息，请参阅[适用于 Amazon Sidewalk 的 AWS IoT Core 开发者指南](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/sidewalk-getting-started.html)。