地理空間タイプ (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
タイプ (したがって、Point
と Polygon
サブタイプ)に適用されます。
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)