

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pengindeksan data lokasi
<a name="location-indexing-geoquery"></a>

Anda dapat menggunakan [pengindeksan AWS IoT armada untuk mengindeks](https://docs.aws.amazon.com//iot/latest/developerguide/iot-indexing.html) data lokasi terkirim terakhir perangkat Anda dan mencari perangkat menggunakan geoquery. Fitur ini menyelesaikan pemantauan perangkat dan kasus penggunaan manajemen seperti pelacakan lokasi dan pencarian kedekatan. [Pengindeksan lokasi bekerja mirip dengan fitur pengindeksan armada lainnya, dan dengan konfigurasi tambahan untuk ditentukan dalam pengindeksan hal Anda.](managing-fleet-index.md) 

[Kasus penggunaan umum meliputi: pencarian dan agregat perangkat yang terletak dalam batas geografis yang diinginkan, dapatkan wawasan spesifik lokasi menggunakan istilah kueri yang terkait dengan metadata perangkat dan status dari sumber data yang diindeks, memberikan tampilan terperinci seperti memfilter hasil ke area geografis tertentu untuk mengurangi kelambatan rendering dalam peta pemantauan armada Anda dan melacak lokasi perangkat yang terakhir dilaporkan, dan mengidentifikasi perangkat yang berada di luar batas batas yang diinginkan dan menghasilkan alarm menggunakan armada meta rik.](iot-fleet-metrics.md) Untuk memulai pengindeksan lokasi dan geoquery, lihat. [Tutorial memulai](location-indexing-tutorial.md)

## Format data yang didukung
<a name="location-indexing-format"></a>

AWS IoT pengindeksan armada mendukung format data lokasi berikut:

1. 

**Representasi teks terkenal dari sistem referensi koordinat**

   String yang mengikuti [informasi Geografis - Representasi teks terkenal dari format sistem referensi koordinat](https://docs.ogc.org/is/12-063r5/12-063r5.html). Contohnya bisa`"POINT(long lat)"`.

1. 

**String yang mewakili koordinat**

   String dengan format `"latitude, longitude"` atau`"longitude, latitude"`. Jika Anda menggunakan`"longitude, latitude"`, Anda juga harus menentukan `order``geoLocations`. Contohnya bisa`"41.12,-71.34"`.

1. 

**Objek kunci lat (lintang), lon (bujur)**

   Format ini berlaku untuk bayangan klasik dan bernama bayangan. Kunci yang didukung:`lat`,`latitude`,`lon`,`long`,`longitude`. Contohnya bisa`{"lat": 41.12, "lon": -71.34}`.

1. 

**Array yang mewakili koordinat**

   Array dengan format `[lat,lon]` atau`[lon,lat]`. Jika Anda menggunakan format`[lon,lat]`, yang sama dengan koordinat di [GeoJSON](https://geojson.org/) (berlaku untuk bayangan klasik dan bayangan bernama), Anda juga harus menentukan. `order` `geoLocations`

   Contohnya dapat berupa:

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

## Cara mengindeks data lokasi
<a name="location-indexing-steps"></a>

Langkah-langkah berikut menunjukkan cara memperbarui konfigurasi pengindeksan untuk data lokasi Anda dan menggunakan geoquery untuk mencari perangkat.

1. 

**Ketahui di mana data lokasi Anda disimpan**

   Pengindeksan armada saat ini mendukung pengindeksan data lokasi yang disimpan dalam bayangan klasik atau bayangan bernama.

1. 

**Gunakan format data lokasi yang didukung**

   Pastikan format data lokasi Anda mengikuti salah satu [format data yang didukung](#location-indexing-format).

1. 

**Perbarui konfigurasi pengindeksan**

   Pada kebutuhan minimum, aktifkan konfigurasi pengindeksan hal (registri). Anda juga harus mengaktifkan pengindeksan pada bayangan klasik atau bayangan bernama yang berisi data lokasi Anda. Saat memperbarui pengindeksan hal Anda, Anda harus menyertakan data lokasi Anda dalam konfigurasi pengindeksan.

1. 

**Membuat dan menjalankan geoqueries**

   Bergantung pada kasus penggunaan Anda, buat geoquery dan jalankan untuk mencari perangkat. [Geoqeury yang Anda tulis harus mengikuti sintaks Query.](https://docs.aws.amazon.com//iot/latest/developerguide/query-syntax.html) Anda dapat menemukan beberapa contoh di[Contoh geoqueries](#location-indexing-geoqueries).

## Perbarui konfigurasi pengindeksan hal
<a name="location-indexing-configuration"></a>

Untuk mengindeks data lokasi, Anda harus memperbarui konfigurasi pengindeksan dan menyertakan data lokasi Anda. Tergantung di mana data lokasi Anda disimpan, ikuti langkah-langkah untuk memperbarui konfigurasi pengindeksan Anda:

### Data lokasi disimpan dalam bayangan klasik
<a name="location-indexing-shadow-configuration"></a>

Jika data lokasi Anda disimpan dalam bayangan klasik, Anda harus `thingIndexingMode` menyetel menjadi `REGISTRY_AND_SHADOW` dan menentukan data lokasi Anda di `geoLocations` bidang (`name`dan`order`) di [https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html](https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html).

Dalam contoh konfigurasi pengindeksan hal berikut, Anda menentukan jalur data lokasi `shadow.reported.coordinates` sebagai `name` dan `LonLat` sebagai`order`.

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

  Mode pengindeksan mengontrol jika registri atau bayangan diindeks. Kapan `thingIndexingMode` diatur menjadi`OFF`, pengindeksan hal dinonaktifkan. 

  Untuk mengindeks data lokasi yang disimpan dalam bayangan klasik, Anda harus `thingIndexingMode` menyetel menjadi`REGISTRY_AND_SHADOW`. Untuk informasi selengkapnya, lihat [Mode pengindeksan hal](managing-index.md#index-mode).
+ `filter`

  Filter pengindeksan menyediakan pilihan tambahan untuk bayangan bernama dan data geolokasi. Untuk informasi selengkapnya, lihat [Filter pengindeksan](managing-index.md#thing-indexing-filter).
+ `geoLocations`

  Daftar target geolokasi yang Anda pilih untuk diindeks. Jumlah maksimum target geolokasi default untuk pengindeksan adalah. `1` Untuk meningkatkan batas, lihat [AWS IoT Device Management Kuota](https://docs.aws.amazon.com//general/latest/gr/iot_device_management.html#fleet-indexing-limits).
+ `name`

  Nama bidang target geolokasi. Contoh nilai `name` dapat berupa jalur data lokasi bayangan Anda:`shadow.reported.coordinates`.
+ `order`

  Urutan bidang target geolokasi. Nilai yang valid: `LatLon` dan`LonLat`. `LatLon`berarti garis lintang dan bujur. `LonLat`berarti bujur dan lintang. Bidang ini bersifat opsional. Nilai default-nya adalah `LatLon`.

### Data lokasi disimpan dalam bayangan bernama
<a name="location-indexing-named-shadow-configuration"></a>

Jika data lokasi Anda disimpan dalam bayangan bernama, atur `namedShadowIndexingMode` menjadi`ON`, tambahkan nama bayangan bernama Anda ke `namedShadowNames` bidang di [https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html](https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html), dan tentukan jalur data lokasi Anda di `geoLocations` bidang di [https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html](https://docs.aws.amazon.com//iot/latest/apireference/API_IndexingFilter.html).

Dalam contoh konfigurasi pengindeksan hal berikut, Anda menentukan jalur data lokasi `shadow.name.namedShadow1.reported.coordinates` sebagai `name` dan `LonLat` sebagai`order`.

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

  Mode pengindeksan mengontrol jika registri atau bayangan diindeks. Kapan `thingIndexingMode` diatur menjadi`OFF`, pengindeksan hal dinonaktifkan. 

  Untuk mengindeks data lokasi yang disimpan dalam bayangan bernama, Anda `thingIndexingMode` harus mengatur menjadi `REGISTRY` (atau`REGISTRY_AND_SHADOW`). Untuk informasi selengkapnya, lihat [Mode pengindeksan hal](managing-index.md#index-mode).
+ `filter`

  Filter pengindeksan menyediakan pilihan tambahan untuk bayangan bernama dan data geolokasi. Untuk informasi selengkapnya, lihat [Filter pengindeksan](managing-index.md#thing-indexing-filter).
+ `geoLocations`

  Daftar target geolokasi yang Anda pilih untuk diindeks. Jumlah maksimum target geolokasi default untuk pengindeksan adalah. `1` Untuk meningkatkan batas, lihat [AWS IoT Device Management Kuota](https://docs.aws.amazon.com//general/latest/gr/iot_device_management.html#fleet-indexing-limits).
+ `name`

  Nama bidang target geolokasi. Contoh nilai `name` dapat berupa jalur data lokasi bayangan Anda:`shadow.name.namedShadow1.reported.coordinates`.
+ `order`

  Urutan bidang target geolokasi. Nilai yang valid: `LatLon` dan`LonLat`. `LatLon`berarti garis lintang dan bujur. `LonLat`berarti bujur dan lintang. Bidang ini bersifat opsional. Nilai default-nya adalah `LatLon`.

## Contoh geoqueries
<a name="location-indexing-geoqueries"></a>

Setelah Anda menyelesaikan konfigurasi pengindeksan untuk data lokasi Anda, jalankan geoquery untuk mencari perangkat. Anda juga dapat menggabungkan geoquery Anda dengan string kueri lainnya. Untuk informasi selengkapnya, lihat [Sintaks kueri](query-syntax.md) dan [Contoh kueri benda](example-queries.md).

**Contoh kueri 1**

Contoh ini mengasumsikan data lokasi disimpan dalam bayangan `gps-tracker` bernama. Output dari perintah ini adalah daftar perangkat yang berada dalam jarak radial 15,5 km dari titik pusat dengan koordinat (47.6204, -122.3491).

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

**Contoh kueri 2**

Contoh ini mengasumsikan data lokasi disimpan dalam bayangan klasik. Output dari perintah ini adalah daftar perangkat yang berada dalam jarak radial 15,5 km dari titik pusat dengan koordinat (47.6204, -122.3491).

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

**Contoh kueri 3**

Contoh ini mengasumsikan data lokasi disimpan dalam bayangan klasik. Output dari perintah ini adalah daftar perangkat yang tidak terhubung dan di luar jarak radial 15,5 km dari titik pusat dengan koordinat (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)"
```

# Tutorial memulai
<a name="location-indexing-tutorial"></a>

Tutorial ini menunjukkan cara menggunakan pengindeksan [armada untuk mengindeks](iot-indexing.md) [data lokasi Anda](location-indexing-geoquery.md). Untuk mempermudah, Anda membuat sesuatu untuk mewakili perangkat Anda dan menyimpan data lokasi dalam bayangan bernama, memperbarui konfigurasi pengindeksan hal untuk pengindeksan lokasi, dan menjalankan contoh geoquery untuk mencari perangkat dalam batas radial.

Tutorial ini membutuhkan waktu sekitar 15 menit untuk menyelesaikannya.

**Topics**
+ [Prasyarat](#location-indexing-tutorial-prerequisites)
+ [Ciptakan benda dan bayangan](#location-indexing-create-resources)
+ [Perbarui konfigurasi pengindeksan hal](#location-indexing-update-configuration)
+ [Jalankan geoquery](#location-indexing-run-geoquery)

## Prasyarat
<a name="location-indexing-tutorial-prerequisites"></a>
+ Instal versi terbaru dari [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html).
+ [Biasakan diri Anda dengan [pengindeksan Lokasi dan geoquery](https://docs.aws.amazon.com/iot/latest/developerguide/location-indexing-geoquery.html), [Kelola pengindeksan hal](https://docs.aws.amazon.com/iot/latest/developerguide/managing-index.html), dan sintaks Kueri.](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html)

## Ciptakan benda dan bayangan
<a name="location-indexing-create-resources"></a>

Anda membuat sesuatu untuk mewakili perangkat Anda, dan bayangan bernama untuk menyimpan data lokasinya (koordinat 47.61564, -122.33584).

1. Jalankan perintah berikut untuk membuat benda Anda yang mewakili sepeda Anda bernama Bike-1. *Untuk informasi selengkapnya tentang cara membuat sesuatu menggunakan AWS CLI, lihat [create-thing](https://docs.aws.amazon.com//cli/latest/reference/iot/create-thing.html) dari Referensi. *AWS CLI**

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

   Output dari perintah ini dapat terlihat seperti berikut:

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

1. Jalankan perintah berikut untuk membuat bayangan bernama untuk menyimpan data lokasi Sepeda-1 (koordinat 47.61564, -122.33584). Untuk informasi selengkapnya tentang cara membuat bayangan bernama menggunakan AWS CLI, lihat [update-thing-shadow](https://docs.aws.amazon.com//cli/latest/reference/iot-data/update-thing-shadow.html)dari *AWS CLI**Referensi*.

   ```
   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" \
   ```

   Perintah ini tidak menghasilkan output apa pun. Untuk melihat bayangan bernama yang Anda buat, Anda dapat menjalankan perintah [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
   ```

   Output dari perintah ini dapat terlihat seperti berikut:

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

## Perbarui konfigurasi pengindeksan hal
<a name="location-indexing-update-configuration"></a>

Untuk mengindeks data lokasi Anda, Anda harus memperbarui konfigurasi pengindeksan hal Anda untuk menyertakan data lokasi. Karena data lokasi Anda disimpan dalam bayangan bernama dalam tutorial ini, atur `thingIndexingMode` menjadi `REGISTRY` (pada persyaratan minimum), atur `namedShadowIndexingMode` menjadi`ON`, dan tambahkan data lokasi Anda ke konfigurasi. Dalam contoh ini, Anda harus menambahkan nama bayangan bernama Anda dan jalur data lokasi bayangan ke`filter`.

1. Jalankan perintah untuk memperbarui konfigurasi pengindeksan Anda untuk pengindeksan lokasi.

   ```
   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"}] } }'
   ```

   Perintah tidak menghasilkan output apa pun. Anda mungkin perlu menunggu beberapa saat hingga pembaruan selesai. Untuk memeriksa status, jalankan perintah [CLI deskripsi-indeks](https://docs.aws.amazon.com//cli/latest/reference/iot/describe-index.html). Jika Anda melihat `indexStatus` show:`ACTIVE`, pembaruan pengindeksan hal Anda selesai.

1. Jalankan perintah untuk memverifikasi konfigurasi pengindeksan Anda. Langkah ini bersifat opsional.

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

   Outputnya bisa terlihat seperti berikut:

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

## Jalankan geoquery
<a name="location-indexing-run-geoquery"></a>

Sekarang Anda telah memperbarui konfigurasi pengindeksan hal Anda untuk memasukkan data lokasi. Cobalah untuk membuat beberapa geoquery dan menjalankannya untuk melihat apakah Anda bisa mendapatkan hasil pencarian yang Anda inginkan. Geoquery harus mengikuti [sintaks Query](query-syntax.md). Anda dapat menemukan beberapa contoh geoquery yang berguna di. [Contoh geoqueries](location-indexing-geoquery.md#location-indexing-geoqueries)

Dalam contoh perintah berikut, Anda menggunakan geoquery `shadow.name.Bike1-shadow.reported.coordinates:geo_distance,47.6204,-122.3491,15.5km` untuk mencari perangkat yang berada dalam jarak radial 15,5 km dari titik pusat dengan koordinat (47.6204, -122.3491). 

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

Karena Anda memiliki perangkat yang terletak di koordinat “lat”: 47.6153, “lon”: -122.3333, yang berada dalam jarak 15,5 km dari titik pusat, Anda harus dapat melihat perangkat ini (Sepeda-1) dalam output. Outputnya bisa terlihat seperti berikut:

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

Lihat informasi yang lebih lengkap di [Pengindeksan data lokasi](location-indexing-geoquery.md).