レイヤーの使用とポリゴンの操作
各ジオフェンスポリゴン、ポイント、またはポリラインは、正確に 1 つのレイヤーに割り当てられます。 複数のレイヤーを作成できます。 レイヤーには、ポリゴン、ポイント、またはポリラインのいずれかの 1 つのタイプのジオメトリのみを含めることができます。 これにより、フェンスタイプまたはトピック、またはアセットグループごとにジオフェンスをグループ化できます。
可能な場合は、レイヤーのすべてのポリゴンを 1 つのバッチで送信または更新します。 HERE Geofencing API は、個々のポリゴンの追加または変更をサポートしていますが、ストレージタイプが「更新可能」の場合にのみサポートされ、「読み取り専用 」の場合にはサポートされません。
各顧客は、レイヤーごとに多数のジオメトリを持つ複数のレイヤーを作成できます。 最大値については、 CLE のリソース serviceconfiguration.json を参照してください。 制限を延長する必要がある場合は、 TCS (テクニカル カスタマー サポート) にお問い合わせください。
ジオフェンスをマップレイヤーに分散する方法 ユーザー、デバイス、車ごとに個別のジオフェンス レイヤーを作成することは明らかですが、このサービスでは効率的ではありません。 通常、同じ種類のジオフェンス ( 空間的範囲、更新頻度、座標解像度 ) を 1 つのレイヤーにまとめる必要があります。 各ジオフェンス には、適用するアセット(および時間枠などの条件)を記述する属性(または複数)が含まれている必要があります。そのため、顧客のアプリケーションでは、車両 / ユーザーに適用するフェンスをフィルタリングできます。 バックエンドサービスであるGeofencing は、通常、ユーザー / デバイスから直接呼び出されることはありません。そのため、異なる車両 / ユーザーのジオフェンスを顧客のアプリケーションに戻すことは、プライバシーの問題にはなりません。 また、さまざまなジオメトリタイプ ( 円とポリゴン ) を別々のレイヤーに保存する必要があります。
ポリゴンの識別子とアトリビューション
HERE Geofencing API はデータの一般的なストレージとして使用することを目的としたものではありませんが、 API はリクエストに対応するために、ジオシェープへのアクセス権を持っている必要があります。 これらの各形状は、一意の識別子に関連付けられている必要があります。 HERE Geofencing API では、これらの ID もレスポンスに含まれています。
これらの ID を割り当てる 1 つの一般的な方法では、次のように単純なジオメトリIDを使用します。
-
polygon ID
ポリゴンフェンスの場合 -
link ID
道路、鉄道、川、その他のリニアフェンスに適しています -
point ID
ポイント store ID
フェンスの場合はまたは
次の例では、列 ID
によって、さまざまな有名な場所の近くにあるポリゴンが一意に識別されます。
ID NAME ABBR WKT
1 AlexanderPlatz DEU POLYGON((13.41252 52.52228,13.41426 52.5221,13.41522 52.52113,13.41227 52.51981,13.41252 52.52228))
2 BrandenburgGate DEU POLYGON((13.38021 52.51668,13.37987 52.51678,13.37984 52.5163,13.37984 52.5163,13.38021 52.51668))
3 RoyalObservatory UK POLYGON((-0.00156 51.47778,-0.00142 51.47796,-0.00114 51.47776,-0.00172 51.4777,-0.00156 51.47778))
リソースsearch/proximity
を使用して、地理座標がレイヤーにロードされたジオシェイプの指定した半径内にあるかどうかを確認する場合は、 request パラメーター key_attributes
を使用して、レスポンスでのジオシェープのグループ化方法を定義します。たとえば、上記の例をレイヤーにロードし、リクエストで key_attributes=NAME
を指定した場合、列NAME
の各値は一意であるため、半径内のジオシェイプがレスポンスに個別にリストされます。この場合、レスポンスは次のようになります。
{
"geometries": [
{
"attributes": {
"ID": "2",
"GEOMETRY_ID": "1",
"NAME": "BrandenburgGate",
"ABBR": "DEU"
},
"distance": 640.79,
"nearestLat": 52.51668,
"nearestLon": 13.38021,
"geometry": "MULTIPOLYGON(((13.38021 52.51668,13.37984 52.5163,13.37987 52.51678,13.38021 52.51668)))"
},
{
"attributes": {
"ID": "1",
"GEOMETRY_ID": "0",
"NAME": "AlexanderPlatz",
"ABBR": "DEU"
},
"distance": 1641.35,
"nearestLat": 52.51981,
"nearestLon": 13.41227,
"geometry": "MULTIPOLYGON(((13.41252 52.52228,13.41426 52.5221,13.41522 52.52113,13.41227 52.51981,13.41252 52.52228)))"
}
],
"response_code": "200 OK"
}
ただし、同じ状況で key_attributes=ABBR
を指定すると、レスポンスでは、指定された 値 ABBR
に一致する行のリクエストに一致する結果がグループ化されます。つまり、ABBR=DEU
を指定した場合、チェックしている地理座標が両方の範囲内にある場合、結果には行 1 と行 2 が含まれます。この場合、レスポンスは次のようになります。
{
"geometries": [{
"attributes": {
"ID": "1",
"GEOMETRY_ID": "0",
"NAME": "AlexanderPlatz",
"ABBR": "DEU"
},
"distance": 640.79,
"nearestLat": 52.51668,
"nearestLon": 13.38021,
"geometry": "MULTIPOLYGON(((13.38021 52.51668,13.37984 52.5163,13.37987 52.51678,13.38021 52.51668)),((13.41252 52.52228,13.41426 52.5221,13.41522 52.52113,13.41227 52.51981,13.41252 52.52228)))"
}],
"response_code": "200 OK"
}
次のようにして、 ジオシェープ に 4 行目を追加します。
4 Reichstag BER POLYGON((13.37494 52.51885,13.37485 52.51948,13.3755 52.51817,13.3744 52.51757,13.37494 52.51885))
API は、地理座標 が範囲内にあるが、値が分離されているために別のグループにある場合、このジオシェイプをレスポンスに含めます。 この場合、レスポンスは次のようになります。
{
"geometries": [
{
"attributes": {
"ID": "1",
"GEOMETRY_ID": "0",
"NAME": "AlexanderPlatz",
"ABBR": "DEU"
},
"distance": 640.79,
"nearestLat": 52.51668,
"nearestLon": 13.38021,
"geometry": "MULTIPOLYGON(((13.38021 52.51668,13.37984 52.5163,13.37987 52.51678,13.38021 52.51668)),((13.41252 52.52228,13.41426 52.5221,13.41522 52.52113,13.41227 52.51981,13.41252 52.52228)))"
},
{
"attributes": {
"ID": "4",
"GEOMETRY_ID": "3",
"NAME": "Reichstag",
"ABBR": "BER"
},
"distance": 871.25,
"nearestLat": 52.51817,
"nearestLon": 13.3755,
"geometry": "MULTIPOLYGON(((13.37494 52.51885,13.37485 52.51948,13.3755 52.51817,13.3744 52.51757,13.37494 52.51885)))"
}
],
"response_code": "200 OK"
}
つまり、これらの列の値は、 SQL の GROUP BY 関数と同じ方法で使用できます。
アプリケーションで使用するために、任意の属性を Geoshapes に関連付けることもできます。 API には、レスポンス内の形状に関連付けられているすべての値が含まれます。 これらのカスタム属性は、アプリケーションが必要とする属性にのみ制限する必要があります。 たとえば、デバイスまたは管理センターがローカルに保存していないが、表示名やフェンスジオメトリの優先度などのクエリーから取得する必要がある情報が含まれます。
ジオメトリとともに大量のデータを保存する必要がある場合、つまりジオメトリのサイズ(バイト単位)が追加データのサイズ以上である場合は、 TCS (テクニカル カスタマー サポート) に連絡してください。