

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 位置データのインデックス作成
<a name="location-indexing-geoquery"></a>

[AWS IoT フリートのインデックス作成](https://docs.aws.amazon.com//iot/latest/developerguide/iot-indexing.html)を使用して、デバイスの最後に送信された位置データのインデックスを作成し、ジオクエリを使用してデバイスを検索できます。この機能は、位置追跡や近接検索などのデバイスモニタリングと管理のユースケースを解決します。位置インデックス作成は、他のフリートインデックス作成機能と同様に機能し、[モノのインデックス作成](managing-fleet-index.md)で を指定する追加の設定で機能します。

一般的なユースケースには、目的の地理的境界内に位置するデバイスを検索および集約する、インデックス作成されたデータソースから、デバイスのメタデータと状態に関連するクエリ用語を使用して、位置固有のインサイトを取得する、結果を特定の地理的エリアにフィルタリングするなどの詳細なビューを提供し、フリートモニタリングマップ内のレンダリングの遅延を減らし、最後に報告されたデバイスの位置を追跡する、目的の境界制限外のデバイスを特定し、[フリートメトリクス](iot-fleet-metrics.md)を使用してアラームを生成するなどがあります。位置インデックス作成とジオクエリを開始するには、「[入門チュートリアル](location-indexing-tutorial.md)」を参照してください。

## サポートされているデータ形式
<a name="location-indexing-format"></a>

AWS IoT フリートインデックス作成は、次の位置データ形式をサポートしています。

1. 

**座標参照システムのよく知られたテキスト表現**

   [地理情報 - 座標参照システム形式のよく知られたテキスト表現](https://docs.ogc.org/is/12-063r5/12-063r5.html)の形式に従う文字列。例として、`"POINT(long lat)"` を使用できます。

1. 

**座標を表す文字列**

   `"latitude, longitude"` または `"longitude, latitude"` の形式の文字列。`"longitude, latitude"` を使用する場合は、`geoLocations` で `order` も指定する必要があります。例として、`"41.12,-71.34"` を使用できます。

1. 

**lat (緯度）、lon (経度) キーのオブジェクト**

   この形式は、クラシックシャドウと名前付きシャドウに適用されます。サポートされるキー: `lat`、`latitude`、`lon`、`long`、`longitude`。例として、`{"lat": 41.12, "lon": -71.34}` を使用できます。

1. 

**座標を表す配列**

   形式が `[lat,lon]` または `[lon,lat]` の配列。[GeoJSON](https://geojson.org/) の座標 (クラシックシャドウと名前付きシャドウに適用) と同じ形式 `[lon,lat]` を使用する場合は、`geoLocations` で `order` も指定する必要があります。

   例としては、次のようなものがあります。

   ```
   {
     "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"
       }
     }
   }
   ```

## 位置データのインデックス作成方法
<a name="location-indexing-steps"></a>

次の手順では、位置データのインデックス作成の設定を更新し、ジオクエリを使用してデバイスを検索する方法を示します。

1. 

**位置情報データが保存されている場所を把握する**

   現在、フリートのインデックス作成は、クラシックシャドウまたは名前付きシャドウに保存されている位置データのインデックス作成をサポートしています。

1. 

**サポートされている位置データ形式を使用する**

   位置データ形式が[サポートされているデータ形式](#location-indexing-format) のいずれかに従っていることを確認します。

1. 

**インデックス作成の設定の更新**

   少なくとも、モノ (レジストリ) インデックス作成の設定を有効にします。また、位置データを含むクラシックシャドウまたは名前付きシャドウでインデックス作成を有効にする必要があります。モノのインデックス作成を更新するときは、インデックス作成の設定に位置情報データを含める必要があります。

1. 

**ジオクエリを作成して実行する**

   ユースケースに応じて、ジオクエリを作成して実行し、デバイスを検索します。作成するジオキューは、[クエリ構文](https://docs.aws.amazon.com//iot/latest/developerguide/query-syntax.html)に従う必要があります。[ジオクエリの例](#location-indexing-geoqueries) にいくつかの例があります。

## モノのインデックス作成を設定する
<a name="location-indexing-configuration"></a>

位置データのインデックスを作成するには、インデックス作成の設定を更新し、位置データを含める必要があります。位置データが保存されている場所に応じて、手順に従ってインデックス作成の設定を更新します。

### クラシックシャドウに保存されている位置データ
<a name="location-indexing-shadow-configuration"></a>

位置データがクラシックシャドウに保存されている場合は、`thingIndexingMode` を `REGISTRY_AND_SHADOW` に設定し、[https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html](https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html) の `geoLocations` フィールド (`name` および `order`) に位置データを指定する必要があります。

次のモノのインデックス作成の設定例では、位置データパス `shadow.reported.coordinates` を `name`、 `LonLat` を `order` として指定します。

```
{
	"thingIndexingMode": "REGISTRY_AND_SHADOW",
	"filter": {
		"geoLocations": [
			{
				"name": "shadow.reported.coordinates",
				"order": "LonLat"
			}
		]
	}
}
```
+ `thingIndexingMode`

  インデックス作成モードは、レジストリまたはシャドウがインデックス作成されているかどうかを制御します。`thingIndexingMode` が `OFF` に設定されている場合、モノのインデックス作成は無効になります。

  クラシックシャドウに保存されている位置データをインデックス作成するには、`thingIndexingMode` を `REGISTRY_AND_SHADOW` に設定する必要があります。詳細については、「[モノのインデックス作成モード](managing-index.md#index-mode)」を参照してください。
+ `filter`

  インデックス作成フィルターは、名前付きシャドウと位置情報データに追加の選択を提供します。詳細については、「[インデックス作成フィルター](managing-index.md#thing-indexing-filter)」を参照してください。
+ `geoLocations`

  インデックス作成のために選択した位置情報ターゲットのリスト。インデックス作成の位置情報ターゲットのデフォルトの最大数は `1` です。制限の引き上げをリクエストするには、「[AWS IoT Device Management クォータ](https://docs.aws.amazon.com//general/latest/gr/iot_device_management.html#fleet-indexing-limits)」を参照してください。
+ `name`

  位置情報ターゲットフィールドの名前。`name` の値は、シャドウの位置データパス (`shadow.reported.coordinates`) にすることができます。
+ `order`

  位置情報ターゲットフィールドの順序。有効な値: `LatLon` および `LonLat`。`LatLon` は緯度と経度を意味し、`LonLat` は経度と緯度を意味します。このフィールドはオプションです。デフォルト値は `LatLon` です。

### 名前付きシャドウに保存されている位置データ
<a name="location-indexing-named-shadow-configuration"></a>

位置データが名前付きシャドウに保存されている場合は、`namedShadowIndexingMode` を `ON`に設定し、名前付きシャドウ名 (複数可) を [https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html](https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html) の `namedShadowNames` フィールドに追加し、[https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html](https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html) の `geoLocations` フィールドに位置データパスを指定します。

次のモノのインデックス作成の設定例では、位置データパス `shadow.name.namedShadow1.reported.coordinates` を `name`、 `LonLat` を `order` として指定します。

```
{
	"thingIndexingMode": "REGISTRY",
	"namedShadowIndexingMode": "ON",
	"filter": {
		"namedShadowNames": [
			"namedShadow1"
		],
		"geoLocations": [
			{
				"name": "shadow.name.namedShadow1.reported.coordinates",
				"order": "LonLat"
			}
		]
	}
}
```
+ `thingIndexingMode`

  インデックス作成モードは、レジストリまたはシャドウがインデックス作成されているかどうかを制御します。`thingIndexingMode` が `OFF` に設定されている場合、モノのインデックス作成は無効になります。

  名前付きシャドウに保存されている位置データのインデックスを作成するには、`thingIndexingMode` を `REGISTRY` (または `REGISTRY_AND_SHADOW`) に設定する必要があります。詳細については、「[モノのインデックス作成モード](managing-index.md#index-mode)」を参照してください。
+ `filter`

  インデックス作成フィルターは、名前付きシャドウと位置情報データに追加の選択を提供します。詳細については、「[インデックス作成フィルター](managing-index.md#thing-indexing-filter)」を参照してください。
+ `geoLocations`

  インデックス作成のために選択した位置情報ターゲットのリスト。インデックス作成の位置情報ターゲットのデフォルトの最大数は `1` です。制限の引き上げをリクエストするには、「[AWS IoT Device Management クォータ](https://docs.aws.amazon.com//general/latest/gr/iot_device_management.html#fleet-indexing-limits)」を参照してください。
+ `name`

  位置情報ターゲットフィールドの名前。`name` の値は、シャドウの位置データパス (`shadow.name.namedShadow1.reported.coordinates`) にすることができます。
+ `order`

  位置情報ターゲットフィールドの順序。有効な値: `LatLon` および `LonLat`。`LatLon` は緯度と経度を意味し、`LonLat` は経度と緯度を意味します。このフィールドはオプションです。デフォルト値は `LatLon` です。

## ジオクエリの例
<a name="location-indexing-geoqueries"></a>

位置データのインデックス作成の設定が完了したら、ジオクエリを実行してデバイスを検索します。ジオクエリを他のクエリ文字列と組み合わせることもできます。詳細については、「[クエリ構文](query-syntax.md)」および「[モノのクエリの例](example-queries.md)」を参照してください。

**クエリの例 1**

この例では、位置データが名前付きシャドウ `gps-tracker` に保存されていることを前提としています。このコマンドの出力は、座標 (47.6204,-122.3491) を持つ中心点から 15.5 km の半径距離内にあるデバイスのリストです。

```
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 km の半径距離内にあるデバイスのリストです。

```
aws iot search-index --query-string \
"shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km"
```

**クエリの例 3**

この例では、位置データがクラシックシャドウに保存されていることを前提としています。このコマンドの出力は、接続されておらず、座標 (47.6204、-122.3491) を持つ中心点から 15.5 km の半径距離外にあるデバイスのリストです。

```
aws iot search-index --query-string \
"connectivity.connected:false AND (NOT shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km)"
```

# 入門チュートリアル
<a name="location-indexing-tutorial"></a>

このチュートリアルでは、[フリートのインデックス作成](iot-indexing.md)を使用して[位置データのインデックス作成](location-indexing-geoquery.md)方法を示します。簡単にするために、デバイスを表すモノを作成し、位置データを名前付きシャドウに保存し、位置インデックス作成のモノインデックス設定を更新し、サンプルジオクエリを実行して半径境界内のデバイスを検索します。

このチュートリアルの完了には 15 分ほどかかります。

**Topics**
+ [前提条件](#location-indexing-tutorial-prerequisites)
+ [モノとシャドウを作成する](#location-indexing-create-resources)
+ [モノのインデックス作成を設定する](#location-indexing-update-configuration)
+ [ジオクエリの実行](#location-indexing-run-geoquery)

## 前提条件
<a name="location-indexing-tutorial-prerequisites"></a>
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) の最新バージョンをインストールします。
+ [位置インデックス作成とジオクエリ](https://docs.aws.amazon.com/iot/latest/developerguide/location-indexing-geoquery.html)、[モノのインデックス作成の管理](https://docs.aws.amazon.com/iot/latest/developerguide/managing-index.html)、および[クエリ構文](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)を理解しておいてください。

## モノとシャドウを作成する
<a name="location-indexing-create-resources"></a>

デバイスを表すモノと、その位置データを保存する名前付きシャドウを作成します (座標 47.61564、-122.33584)。

1. 次のコマンドを実行して、Bike-1 という名前のバイクを表すモノを作成します。を使用してモノを作成する方法の詳細については AWS CLI、「 *AWS CLI**リファレンス*」の[「Create-thing](https://docs.aws.amazon.com//cli/latest/reference/iot/create-thing.html)」を参照してください。

   ```
   aws iot create-thing --thing-name "Bike-1" \
   --attribute-payload '{"attributes": {"model":"OEM-2302-12", "battery":"35", "acqDate":"06/09/23"}}'
   ```

   このコマンドの出力は以下のようになります。

   ```
   {
       "thingName": "Bike-1",
       "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/Bike-1",
       "thingId": "df9cf01d-b0c8-48fe-a2e2-e16cff6b23df"
   }
   ```

1. 次のコマンドを実行して、Bike-1 の位置データ (座標 47.61564、-122.33584) を保存する名前付きシャドウを作成します。を使用して名前付きシャドウを作成する方法の詳細については AWS CLI、「 *AWS CLI**リファレンス*」の[update-thing-shadow](https://docs.aws.amazon.com//cli/latest/reference/iot-data/update-thing-shadow.html)」を参照してください。

   ```
   aws iot-data update-thing-shadow \
   --thing-name Bike-1 \
   --shadow-name Bike1-shadow \
   --cli-binary-format raw-in-base64-out \
   --payload '{"state":{"reported":{"coordinates":{"lat": 47.6153, "lon": -122.3333}}}}' \
   "output.txt" \
   ```

   このコマンドでは、出力が生成されません。作成した名前付きシャドウを表示するには、[list-named-shadows-for-thing](https://docs.aws.amazon.com//cli/latest/reference/iot-data/list-named-shadows-for-thing.html) CLI コマンドを実行します。

   ```
   aws iot-data list-named-shadows-for-thing --thing-name Bike-1
   ```

   このコマンドの出力は以下のようになります。

   ```
   {
       "results": [
           "Bike1-shadow"
       ],
       "timestamp": 1699574309
   }
   ```

## モノのインデックス作成を設定する
<a name="location-indexing-update-configuration"></a>

位置データのインデックスを作成するには、モノのインデックス作成設定を更新して、位置データを含める必要があります。このチュートリアルでは、位置情報データは名前付きシャドウに保存されるため、`thingIndexingMode` を `REGISTRY` (最小要件で) に設定し、`namedShadowIndexingMode` を `ON` に設定して、位置情報データを設定に追加します。この例では、名前付きシャドウの名前とシャドウの位置データパスを `filter` に追加する必要があります。

1. コマンドを実行して、位置インデックスの作成のインデックス作成設定を更新します。

   ```
   aws iot update-indexing-configuration --cli-input-json '{
   "thingIndexingConfiguration": { "thingIndexingMode": "REGISTRY",
   "thingConnectivityIndexingMode": "OFF",
   "deviceDefenderIndexingMode": "OFF",
   "namedShadowIndexingMode": "ON",
   "filter": {
       "namedShadowNames": ["Bike1-shadow"],
       "geoLocations":[{
           "name":"shadow.name.Bike1-shadow.reported.coordinates"
       }]
   },
   "customFields": [
   { "name":"attributes.battery",
   "type":"Number"}] } }'
   ```

    コマンドでは、出力が生成されません。更新が完了するまで少し時間を要する場合があります。ステータスを確認するには、[describe-index](https://docs.aws.amazon.com//cli/latest/reference/iot/describe-index.html) CLI コマンドを実行します。`indexStatus` が `ACTIVE` と表示された場合は、モノのインデックスの更新が完了しました。

1. コマンドを実行して、インデックス作成の設定を確認します。この手順は省略可能です。

   ```
   aws iot get-indexing-configuration
   ```

   出力は次のようになります。

   ```
   {
       "thingIndexingConfiguration": {
           "thingIndexingMode": "REGISTRY",
           "thingConnectivityIndexingMode": "OFF",
           "deviceDefenderIndexingMode": "OFF",
           "namedShadowIndexingMode": "ON",
           "managedFields": [
               {
                   "name": "shadow.name.*.hasDelta",
                   "type": "Boolean"
               },
               {
                   "name": "registry.version",
                   "type": "Number"
               },
               {
                   "name": "registry.thingTypeName",
                   "type": "String"
               },
               {
                   "name": "registry.thingGroupNames",
                   "type": "String"
               },
               {
                   "name": "shadow.name.*.version",
                   "type": "Number"
               },
               {
                   "name": "thingName",
                   "type": "String"
               },
               {
                   "name": "thingId",
                   "type": "String"
               }
           ],
           "customFields": [
               {
                   "name": "attributes.battery",
                   "type": "Number"
               }
           ],
           "filter": {
               "namedShadowNames": [
                   "Bike1-shadow"
               ],
               "geoLocations": [
                   {
                       "name": "shadow.name.Bike1-shadow.reported.coordinates",
                       "order": "LatLon"
                   }
               ]
           }
       },
       "thingGroupIndexingConfiguration": {
           "thingGroupIndexingMode": "OFF"
       }
   }
   ```

## ジオクエリの実行
<a name="location-indexing-run-geoquery"></a>

これで、モノのインデックスの作成設定を更新して、位置データを含めました。ジオクエリを作成して実行し、目的の検索結果を取得できるかどうかを確認してください。ジオクエリは、[クエリ構文](query-syntax.md)に従う必要があります。[ジオクエリの例](location-indexing-geoquery.md#location-indexing-geoqueries) に有用なジオクエリの例があります。

次のコマンド例では、ジオクエリ `shadow.name.Bike1-shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km` を使用して、座標 (47.6204,-122.3491) を使用して中心点から 15.5 km の半径距離内にあるデバイスを検索します。

```
aws iot search-index --query-string "shadow.name.Bike1-shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km"
```

座標「lat」: 47.6153、「lon」: -122.3333 にデバイスがあり、これはは中心点から 15.5 km の距離以内となるため、このデバイス (Bike-1) を出力で確認できます。出力は次のようになります。

```
{
    "things": [
        {
            "thingName": "Bike-1",
            "thingId": "df9cf01d-b0c8-48fe-a2e2-e16cff6b23df",
            "attributes": {
                "acqDate": "06/09/23",
                "battery": "35",
                "model": "OEM-2302-12"
            },
            "shadow": "{\"reported\":{\"coordinates\":{\"lat\":47.6153,\"lon\":-122.3333}},\"metadata\":{\"reported\":{\"coordinates\":{\"lat\":{\"timestamp\":1699572906},\"lon\":{\"timestamp\":1699572906}}}},\"hasDelta\":false,\"version\":1}"
        }
    ]
}
```

詳細については、「[位置データのインデックス作成](location-indexing-geoquery.md)」を参照してください。