Geofencing von GeoJSON-Daten
Die Azure Maps-API GET Geofence und POST Geofence ermöglichen Ihnen das Abrufen der Nähe einer Koordinate relativ zu einem angegebenen Geofence oder eine Reihe von Geofences. In diesem Artikel wird detailliert beschrieben, wie die Geofencedaten, die in der Azure Maps GET- und POST-API verwendet werden können, vorbereitet werden.
Die Daten für einen Geofence oder eine Reihe von Geofences, dargestellt durch das Feature
-Objekt und das FeatureCollection
-Objekt im GeoJSON
-Format, werden in RFC7946 definiert. Weitere Merkmale:
- Der GeoJSON-Objekttyp kann ein
Feature
-Objekt oder einFeatureCollection
-Objekt sein. - Der Geometry-Objekttyp kann ein
Point
,MultiPoint
,LineString
,MultiLineString
,Polygon
,MultiPolygon
oderGeometryCollection
sein. - Alle Featureeigenschaften sollten eine
geometryId
enthalten, die zur Identifikation des Geofence verwendet wird. - Features mit
Point
,MultiPoint
,LineString
oderMultiLineString
müssen in ihren Eigenschaftenradius
enthalten. Derradius
-Wert wird in Metern gemessen, der Wert vonradius
reicht von 1 bis 10000. - Features mit dem Geometrietyp
polygon
undmultipolygon
weisen keine Radiuseigenschaft auf. validityTime
ist eine optionale Eigenschaft, die dem Benutzer das Festlegen von Ablaufzeit und Gültigkeitsdauer für die Geofencedaten ermöglicht. Ohne Angabe laufen die Daten nicht ab und bleiben unbeschränkt gültig.- Die
expiredTime
stellt Ablaufdatum und -uhrzeit der Geofencingdaten dar. Wenn der Wert vonuserTime
in der Anforderung später ist als dieser Wert, werden die entsprechenden Geofencedaten als abgelaufen angesehen und nicht abgefragt. Daraufhin wird die geometryId dieser Geofencedaten in das ArrayexpiredGeofenceGeometryId
in der Geofenceantwort aufgenommen. - Die
validityPeriod
ist eine Liste der Gültigkeitszeiträume des Geofence. Wenn der Wert vonuserTime
in der Anforderung außerhalb der Gültigkeitsdauer liegt, werden die entsprechenden Geofencedaten als ungültig angesehen und nicht abgefragt. Die geometryId dieser Geofencedaten wird in das ArrayinvalidPeriodGeofenceGeometryId
in der Geofenceantwort aufgenommen. In der folgenden Tabelle sind die Eigenschaften des ValidityPeriod-Elements dargestellt.
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
startTime | Datetime | true | Das Anfangsdatum und die Anfangsuhrzeit der Gültigkeitsdauer. |
endTime | Datetime | true | Das Enddatum und die Enduhrzeit der Gültigkeitsdauer. |
recurrenceType | Zeichenfolge | false | Der Wiederholungstyp des Zeitraums. Der Wert kann Daily , Weekly , Monthly oder Yearly lauten. Der Standardwert ist Daily . |
businessDayOnly | Boolean | false | Gibt an, ob die Daten nur an Werktagen gültig sind. Der Standardwert ist false . |
- Alle Koordinatenwerte werden als [Breitengrad, Längengrad] gemäß der Definition in
WGS84
dargestellt. - Bei allen Features, die
MultiPoint
,MultiLineString
,MultiPolygon
oderGeometryCollection
enthalten gelten die Eigenschaften für alle Elemente. Beispiel: Alle Punkte inMultiPoint
verwenden den gleichen Radius, um einen Geofence aus mehreren Kreisen zu bilden. - Im Punkt-Kreis-Szenario kann eine Kreisgeometrie mithilfe eines
Point
-Geometrieobjekts dargestellt werden, dessen Eigenschaften in Erweitern der GeoJSON-Geometrien dargelegt sind.
Das Folgende ist ein Beispielanforderungstext für einen Geofence, der als Kreis-Geofencegeometrie in GeoJSON
dargestellt ist und einen Mittelpunkt sowie einen Radius verwendet. Der Gültigkeitszeitraum der Geofencedaten beginnt am 2018-10-22
, 9 Uhr bis 17 Uhr. Die Gültigkeit wiederholt sich täglich mit Ausnahme der Wochenenden. expiredTime
gibt an, dass diese Geofencedaten als abgelaufen angesehen werden, falls userTime
in der Anforderung später als 2019-01-01
ist.
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-122.126986, 47.639754]
},
"properties": {
"geometryId" : "1",
"subType": "Circle",
"radius": 500,
"validityTime":
{
"expiredTime": "2019-01-01T00:00:00",
"validityPeriod": [
{
"startTime": "2018-10-22T09:00:00",
"endTime": "2018-10-22T17:00:00",
"recurrenceType": "Daily",
"recurrenceFrequency": 1,
"businessDayOnly": true
}
]
}
}
}