GeoJSON データのジオフェンシング

Azure Maps の GET Geofence および POST Geofence API を使用すると、指定したジオフェンスまたはフェンスのセットを基準とする座標の近接度を取得できます。 この記事では、Azure Maps の GET および POST API で使用できるジオフェンス データを準備する方法を説明します。

GeoJSON 形式の Feature オブジェクトと FeatureCollection オブジェクトで表されるジオフェンスまたは一連のジオフェンスのデータは rfc7946 で定義されています。 さらに、次のことが指定されています。

  • 使用できる GeoJSON オブジェクト型は、Feature オブジェクトまたは FeatureCollection オブジェクトです。
  • 使用できる Geometry オブジェクト型は、PointMultiPointLineStringMultiLineStringPolygonMultiPolygonGeometryCollection です。
  • すべてのフィーチャー プロパティには、geometryId が含まれる必要があります。これは、ジオフェンスの識別に使用されます。
  • PointMultiPointLineStringMultiLineString のフィーチャーには、radius プロパティが含まれる必要があります。 radius の値はメートル単位で測定され、radius の値の範囲は 1 ~ 10,000 です。
  • ジオメトリの種類が polygonmultipolygon のフィーチャーに radius プロパティはありません。
  • validityTime は省略可能なプロパティであり、ユーザーはジオフェンス データの期限切れ日時と有効期間を設定できます。 指定しない場合、データは期限切れになることがなく、常に有効です。
  • expiredTime は、ジオフェンシング データの期限切れ日時です。 要求内の userTime の値がこの値より後である場合、対応するジオフェンス データは期限切れのデータと見なされ、クエリは実行されません。 その場合は、このジオフェンス データの geometryId がジオフェンス応答内の expiredGeofenceGeometryId 配列に含まれています。
  • validityPeriod は、ジオフェンスの有効期間のリストです。 要求内の userTime の値が有効期間の範囲外である場合、対応するジオフェンス データは無効と見なされ、クエリは実行されません。 このジオフェンス データの geometryId は、ジオフェンス応答内の invalidPeriodGeofenceGeometryId 配列に格納されます。 validityPeriod 要素のプロパティを次の表に示します。
Name タイプ Required 内容
startTime Datetime true 有効期間の開始日時。
endTime Datetime true 有効期間の終了日時。
recurrenceType string false 期間の繰り返しの種類。 値は、DailyWeeklyMonthlyYearly のいずれかです。 既定値は Dailyにする必要があります。
businessDayOnly Boolean false データが営業日のみ有効かどうかを示します。 既定値は falseにする必要があります。
  • すべての座標値は、WGS84 で定義されているように、[経度, 緯度] として表されます。
  • MultiPointMultiLineStringMultiPolygon、または GeometryCollection を含む各フィーチャーでは、プロパティがすべての要素に適用されます。 たとえば、MultiPoint 内のすべてのポイントでは、同じ半径を使用して複数の円ジオフェンスを形成します。
  • ポイントと円のシナリオでは、「GeoJSON ジオメトリの拡張」で詳しく説明されているプロパティを含む Point geometry オブジェクトを使用して、円のジオメトリを表すことができます。

中心点と半径を使用して GeoJSON 内の円ジオフェンス ジオメトリとして表されたジオフェンスに対する要求本文のサンプルを次に示します。 ジオフェンス データの有効期間は 2018-10-22 (午前 9 時から午後 5 時まで) から開始され、週末を除き毎日繰り返されます。 要求内の userTime2019-01-01 より後である場合、expiredTime は、このジオフェンス データが期限切れと見なされることを示します。

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