地理空間タイプ (Geospatial types)

EPL 言語は、追加の地理空間機能をサポートするように拡張されています。これらの地理空間的特徴はすべて WGS84 リファレンスを使用します。タイプとメソッドは Geotools フレームワークから来ています。

タイプ

Geometry タイプ

これは、他のすべてのジオメトリ・シェイプの基本タイプです。

Point タイプ

現在の NGSI v1 プロトコルは、内部的にGeotools Point クラスに変換された、geo:point 属性タイプである単一の場所を定義することのみをサポートしています。

Polygon タイプ

ジオフェンシング機能を処理するために、CEP は、閉じたシェイプ(最初と最後が同一のPoint)を定義する Point 要素のリストとして定義される Polygon タイプを処理します。

Polygon タイプは、まだ、NGSIプロトコルと相互に変換することができません。これは、CEP の設定中にEPL ステートメント(create variable ステートメントを使用)からのみ定義できます。

コンストラクタ

Point point(x, y)

このメソッドは、新しい Point を2つの座標で初期化します。

例:

CREATE VARIABLE Geometry centerPoint = point(4.2, 46.2)

Polygon poly([Point])

このメソッドは、Point の配列をとり、Polygon を初期化します。シェイプを閉じるには最初と最後の点が同じでなければなりません。

例:

CREATE VARIABLE Geometry fence = polygon({point(0, 0), point(0,50), point(50,50), point(50, 0), point(0, 0)})

注 : EPLの要素の配列を宣言する構文は { elem1, elem2, ...} です。

Geometry read(string)

この read メソッドでは、WKT 形式を使用して Geotools でサポートされている Geometry を作成できます。

例:

CREATE VARIABLE Geometry fence2 = geometry("POLYGON((20 10, 30 0, 40 10, 30 20, 20 10))")

Geometry メソッド

いくつかのメソッドが、Geometry タイプ (したがって、PointPolygon サブタイプ)に適用されます。

double distance(Geometry)

2つの Geometry シェイプの間の距離を計算します。距離はメートルで表されます。

例 : すべてのセンサの位置が過去10分の center 場所から 20m 以内にあることを追跡しましょう :

CREATE VARIABLE Geometry center = point(4.2, 46.2)
INSERT INTO NearbySensors SELECT id, location.distance(center) as distance FROM Sensors.win:time(10 min) WHERE location.distance(center) < 20

この location メソッドは、Point から Polygon までの距離を計算するためにも使用できます。

boolean contains(Geometry)

Geometry が別のジオメトリの内部に含まれている場合は true を返します。

例 : センサの位置が、与えられたジオフェンス内にあるときを追跡しましょう。

CREATE VARIABLE Geometry fence = polygon({point(0, 0), point(0,50), point(50,50), point(50, 0), point(0, 0)})
INSERT INTO InsideFence SELECT * FROM Sensors WHERE fence.contains(location)