このコマンドおよびAPIリファレンスは、Event Processingに適用するOracle SpatialコマンドおよびAPIの構文と例を説明しています。
ANYINTERACT
Oracle Spatialジオメトリ比較演算子は、キーがジオメトリ(geom
)に接触する場合にtrue
を返し、そうでない場合にfalse
を返します。
構文
ANYINTERACT@spatial(geom, key, tol)
geom
: サポートされているジオメトリ・タイプ
key
: GTYPE_POINT
、GTYPE_CURVE
、GTYPE_POLYGON
、GTYPE_SURFACE
、GTYPE_COLLECTION
、GTYPE_MULTIPOINT
、GTYPE_MULTICURVE
、GTYPE_MULTIPOLYGON
、GTYPE_SOLID
またはGTYPE_MULTISOLID
ジオメトリ・タイプ
このジオメトリのジオメトリ・タイプはGTYPE_POINT
である必要があり、それ以外の場合はRUNTIME_EXCEPTION
が発生します。
tol
: double
値としての許容差。許容差の値は、境界の厚さを拡大します。
例
<view id="op_in_where"> RStream( select loc.customerId, shop.shopId from LocGeomStream[NOW] as loc, ShopGeomRelation as shop where ANYINTERACT@spatial(shop.geom, loc.curLoc, 5.0d) = true ) </view> <view id="op_in_proj"> RStream( select loc.customerId, shop.shopId, ANYINTERACT@spatial(shop.geom, loc.curLoc, 5.0d) from LocGeomStream[NOW] as loc, ShopGeomRelation as shop ) </view>
com.oracle.cep.cartridge
.spatial.Geometryのbuffer
メソッドは、入力ジオメトリのバッファ・バージョンであるoracle.spatial.geometry.JGeometry
の新規オブジェクトを返します。
構文
bufferWidth
: このバッファに使用する距離値(double
値)
この値は、予定ジオメトリの予測単位と同じ単位であると見なされます。ジオメトリが測地の場合、このバッファの幅はメーターになります。
SMA
: 長半径(double
値)
ジオメトリが測地の場合に、このパラメータを設定します。
iFlat
: CSパラメータからの扁平度(double
値)
ジオメトリが測地の場合に、このパラメータを設定します。
arcT
: 測地円弧を高密度化するarc_tolerance
(double
値)
com.oracle.cep.cartridge,spatial.geometry.buffer(bufferWidth, SMA, iFlat, actT)
例
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.buffer(13, 2, 4, 7) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のbufferPolygon
メソッドは、oracle.spatial.geometry.JGeometry
ポリゴン入力のバッファ・バージョンであるcom.oracle.cep.cartridge.spatial.Geometry
オブジェクトを返します。このメソッドは、入力機能周辺の指定距離でバッファ・ポリゴンを作成します。
構文
com.oracle.cep.cartridge.spatial.Geometry.bufferPolygon(polygon, distance)
polygon
: oracle.spatial.geometry.JGeometry
ポリゴン
distance
: 入力機能周の距離を指定するdouble
値
distance
値は、射影されたジオメトリの射影ユニットと同じユニットにあると想定します。ジオメトリが測地の場合、distance
はメートル単位である必要があります。
例
このメソッドは、Oracle Spatialのアプリケーション・コンテキストからパラメータを取得します。spatial
リンク名(@spatial
)を使用してメソッド呼出しをOracle Spatialアプリケーション・コンテキストに関連付ける必要があります。「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.bufferPolygon@spatial(geom, 1300)
次の例では、バッファ・ポリゴンを作成します。この例はOracle Spatialアプリケーション・コンテキストに基づくため、spatial
リンク名を使用します。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.bufferPolygon@spatial(geom, 13) from CustomerLocStream </view>
Oracle Spatialジオメトリ比較演算子CONTAIN
は、ジオメトリが他のジオメトリに含まれる場合はtrue
を返し、そうでない場合はfalse
を返します。
構文
CONTAIN@spatial(geom, key)
geom
: サポートされているジオメトリ・タイプ
key
: GTYPE_POINT
、GTYPE_CURVE
、GTYPE_POLYGON
、GTYPE_SURFACE
、GTYPE_COLLECTION
、GTYPE_MULTIPOINT
、GTYPE_MULTICURVE
、GTYPE_MULTIPOLYGON
、GTYPE_SOLID
またはGTYPE_MULTISOLID
ジオメトリ・タイプ
例
<view id="op_in_where"> RStream( select loc.customerId, shop.shopId from LocGeomStream[NOW] as loc, ShopGeomRelation as shop where CONTAIN@spatial(shop.geom, loc.curLoc, 5.0d) = true ) </view> <view id="op_in_proj"> RStream( select loc.customerId, shop.shopId, CONTAIN@spatial(shop.geom, loc.curLoc, 5.0d) from LocGeomStream[NOW] as loc, ShopGeomRelation as shop ) </view>
com.oracle.cep.cartridge.spatial.Geometry
のconvertTo2D
メソッドは、oracle.spatial.geometry.JGeometry
3Dオブジェクトをoracle.spatial.geometry.JGeometry
2Dオブジェクトに変換します。
構文
com.oracle.cep.cartridge.spatial.Geometry.convertTo2D(geom)
geom
パラメータはoracle.spatial.geometry.JGeometry 3Dオブジェクトです。
例
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.convertTo2D(geom) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のconvertTo3D
メソッドはoracle.spatial.geometry.JGeometry
2Dオブジェクトをoracle.spatial.geometry.JGeometry
3Dオブジェクトに変換します。この変換でz
座標はゼロ詰めされます。
構文
com.oracle.cep.cartridge.spatial.Geometry.convertTo3D(geom)
geom
パラメータはoracle.spatial.geometry.JGeometry
2Dオブジェクトです。
例
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.convertTo3D(geom) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreateCircle
メソッドは、2Dまたは3Dの円であるcom.oracle.cep.cartridge.spatial.Geometry
オブジェクトを返します。
2D円構文の作成
com.oracle.cep.cartridge.spatial.Geometry.createCircle(x, y, radius) com.oracle.cep.cartridge.spatial.Geometry.createCircle(x, y, radius, srid)
x
: 円の中心のx座標(double
値)
y
: 円の中心のy座標(double
値)
radius
: 測地円弧を高密度化するarc_tolerance
(double
値)
srid
: 円のオプションのSDO_SRID
(int
値)。srid
パラメータを省略する場合は、例が示すようにspatialリンク名を追加します。
3D円構文の作成
com.oracle.cep.cartridge.spatial.Geometry.createCircle(x1, y1, x2, y2, x3, y3) com.oracle.cep.cartridge.spatial.Geometry.createCircle(srid, x1, y1, x2, y2, x3, y3)
円周を構成する3座標を次の引数で指定します。
x1
: 点1のx縦座標(double
値)
y1
: 点1のy縦座標(double
値)
x2
: 点2のx縦座標(double
値)
y2
: 点2のy縦座標(double
値)
x3
: 点3のx縦座標(double
値)
y3
: 点3のy縦座標(double
値)
srid
: 円のオプションのSRID
(int
値)。srid
パラメータを省略した場合は、例が示すようにspatialリンク名(@spatial
)を追加します。
例
オプションのsrid
パラメータを省略すると、このメソッドはOracle Spatialデータ・カートリッジ・アプリケーション・コンテキストからパラメータを取得します。この場合、spatialリンク名(@spatial
)を使用してメソッド呼出しをOracle Spatialデータ・カートリッジ・アプリケーション・コンテキストに関連付けます。「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.createCircle@spatial(x, y)
次の例では、srid
パラメータを使用して2Dの円を作成します。この例ではsrid
パラメータを使用するため、spatial
リンク名は必要ありません。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.createCircle(x, y, 300, srid) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreateElemInfo
メソッドは、指定された引数から、単一の要素情報値をint[]
値で返します。「einfogenerator」も参照してください。
構文
com.oracle.cep.cartridge.spatial.Geometry.createElemInfo(offset, etype, interp)
soffset
: この要素の最初の縦座標が保存される縦座標配列内にあるint
値のオフセット
SDO_STARTING_OFFSET
値は0からではなく1から開始します。このため最初の要素の第1の縦座標はSDO_GEOMETRY.Ordinates(1)
になります。2つ目の要素がある場合、その要素の第1の縦座標はSDO_GEOMETRY.Ordinates(
n
* 3 + 2)
になり、n
はSDO_ORDINATE_ARRAY
定義内の位置を示します。
etype
: 要素のタイプ(int
値)。
Oracle SpatialではSDO_ETYPE
値の1、1003および2003をサポートしており、これらは(複合型ではなく)単純な要素と見なされます。これらは、要素情報配列の3つのエントリ1組によって定義されます。タイプは次のとおりです。
1: 点。
1003: ポリゴンの外部の輪(反時計回りで指定される必要があります)。
2003: ポリゴンの内部の輪(時計回りで指定される必要があります)。
これらのタイプは、SDO_INTERPRETATION
によって詳細に修飾されます。
注意:
1桁と4桁のSDO_ETYPE
値を同じのジオメトリに混在させないでください。
interp
: 解釈(int
値)
単純要素SDO_ETYPE
(1、1003または2003)の場合、SDO_INTERPRETATION
属性によってこの要素に対する座標の順序の解釈方法が決定されます。たとえば、ポリゴン境界は、連結された一連の直線セグメントで構成されます。
ジオメトリが複数の要素で構成される場合、ある要素の最後の縦座標は、常に次の要素の先頭のオフセットより1小さくなります。ジオメトリの最後の要素は、その開始オフセットから縦座標可変長配列の最後までの縦座標によって記述されます。
表A-1は、SDO_ETYPE
とSDO_INTERPREATION
の関係を示しています。
表A-1 SDO_ETYPEおよびSDO_INTERPRETATION
SDO_ETYPE | SDO_INTERPRETATION | 説明 |
---|---|---|
0 |
任意の数値 |
Oracle Spatialによってサポートされないジオメトリ・タイプのモデル化に使用します。 |
1 |
1 |
点のタイプです。 |
1 |
0 |
方向付きの点の方向です。 |
1003または2003 |
1 |
頂点が直線セグメントに連結している単純なポリゴンです。各頂点について点を指定し、ポリゴンを閉じるために、終了点と開始点が一致するように指定する必要があります(許容差内で)。 たとえば、4面のポリゴンの場合は、5番目の点が1番目の点と同じになるような5つの点を指定します。 |
1003または2003 |
3 |
矩形タイプ(最適化された矩形)左下および右上の2点のみの境界矩形で、記述する必要があります。矩形タイプは、測地データまたは非測地データで使用できます。ただし、測地データでは、問合せウィンドウを作成するためにのみ矩形タイプを使用します(データベースにオブジェクトを格納するためには使用しないでください)。 |
例
<view id="ShopGeom"> select com.oracle.cep.cartridge.spatial.Geometry.createGeometry@spatial( com.oracle.cep.cartridge.spatial.Geometry.GTYPE_POLYGON, com.oracle.cep.cartridge.spatial.Geometry.createElemInfo(1, 1003, 1), ordsgenerator@spatial( lng1, lat1, lng2, lat2, lng3, lat3, lng4, lat4, lng5, lat5, lng6, lat6 ) ) as geom from ShopDesc </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreateGeometry
メソッドは2Dのoracle.cep.cartridge.spatial.Geometry
新規オブジェクトを返します。
構文
com.oracle.cep.cartridge.spatial.Geometry(gtype, elemInfo, ordinates) com.oracle.cep.cartridge.spatial.Geometry(gtype, srid, elemInfo, ordinates)
gtype
: ジオメトリ・タイプ(int
値)
詳細は、表A-2を参照してください。
eleminfo
: ジオメトリ要素情報(int[]
値)
詳細は、「createElemInfo」を参照してください。
ordinates
: ジオメトリ縦座標(double[]
値)
srid
: ジオメトリのオプションのSDO_SRID
(int
値)。srid
パラメータを省略した場合は、例が示すようにspatialリンク名(@spatial
)を追加します。
例
srid
パラメータを省略すると、このメソッドはOracle Spatialのアプリケーション・コンテキストからパラメータを取得します。この場合、spatial
リンク名を使用してメソッド呼出しをOracle Spatialアプリケーション・コンテキストに関連付ける必要があります。詳細は、「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.createGeometry@spatial(gtype, eleminfo, ordinates)
次の例では、sridパラメータを使用してジオメトリを作成します。この例ではsrid
引数を使用するため、@spatial
リンク名は必要ありません。
<view id="ShopGeom"> select com.oracle.cep.cartridge.spatial.Geometry.createGeometry( com.oracle.cep.cartridge.spatial.Geometry.GTYPE_POLYGON, srid, com.oracle.cep.cartridge.spatial.Geometry.createElemInfo(1, 1003, 1, srid), ordsgenerator@spatial( lng1, lat1, lng2, lat2, lng3, lat3, lng4, lat4, lng5, lat5, lng6, lat6 ) ) as geom from ShopDesc </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreateLinearLineString
メソッドは、要素情報が{1, 2, 1}
の直線ストリングである、3Dのcom.oracle.cep.cartridge.spatial.Geometry
新規ジオメトリを返します。指定された座標のディメンションが2の場合、z座標はゼロ詰めされます。
構文
com.oracle.cep.cartridge.spatial.Geometry.createLinearLineString(coords, dim) com.oracle.cep.cartridge.spatial.Geometry.createLinearLineString(srid, coords, dim)
coords
: 直線ストリングの座標(double[]
値)
dim
: 指定された座標のディメンション(int
値)。
srid
: ジオメトリのオプションのSDO_SRID
(int
値)。sridパラメータを省略する場合は、例が示すようにspatialリンク名を追加します。
詳細は、「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
例
srid
パラメータを省略すると、このメソッドはOracle Spatialデータ・カートリッジのアプリケーション・コンテキストからパラメータを取得します。spatialリンク名(@spatial
)を使用してメソッド呼出しをOracle Spatialデータ・カートリッジ・アプリケーション・コンテキストに関連付ける必要があります。「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.createLinearLineString@spatial(coords, dim)
次の例では、sridパラメータを使用して直線ストリングを作成します。この例ではsrid
パラメータを使用するため、@spatial
リンク名は使用しません。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.createLinearLineString(coords, dim, srid) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreateMultiLineString
メソッドは、直線マルチライン・ストリングである、3Dのcom.oracle.cep.cartridge.spatial.Geometry
新規ジオメトリを返します。指定された座標のディメンションが2の場合、z座標はゼロ詰めされます。
構文
com.oracle.oep.cartridge.spatial.Geometry.createMultiLineString(coords, dim) com.oracle.cep.cartridge.spatial.Geometry.createMultiLineString(srid, coords, dim)
coords
: 直線ストリングの座標(double[][]
値)
dim
: 指定された座標のディメンション(int
値)
srid
: int
としてのジオメトリのオプションのSRID
。sridパラメータを省略した場合は、例が示すようにspatialリンク名(@spatial
)を追加します。
例
srid
パラメータを省略すると、このメソッドはOracle Spatialデータ・カートリッジのアプリケーション・コンテキストからパラメータを取得します。spatial
リンク名(@spatial
)を使用してメソッド呼出しをOracle Spatialデータ・カートリッジ・アプリケーション・コンテキストに関連付ける必要があります。「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.createLinearMultiLineString@spatial( coords, dim)
次の例では、直線マルチライン・ストリングを作成します。この例ではsrid
引数を使用するため、spatial
リンク名は使用しません。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.createLinearMultiLineString(coords, dim, srid) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreateLinearPolygon
メソッドは、穴のない2Dの単純線ポリゴンであるcom.oracle.cep.cartridge.spatial.Geometry
新規オブジェクトを返します。座標配列が閉じられていない(最後の座標が最初の座標と同じでない)場合、このメソッドは最初の座標をコピーしてその座標値を入力座標配列の最後に追加します。
構文
com.oracle.cep.cartridge.spatial.Geometry.createLinearPolygon(coords{]) com.oracle.cep.cartridge.spatial.Geometry.createLinearPolygon(srid, coords[])
coords
: double[]
としての線形ポリゴンの座標。
srid
: int
としてのジオメトリのオプションのSRID
。sridパラメータを省略した場合は、例が示すようにspatialリンク名(@spatial
)を追加します。
例
オプションのsrid
パラメータを省略すると、このメソッドはOracle Spatialアプリケーション・コンテキストからパラメータを取得します。この場合、spatial
リンク名(@spatial
)を使用してメソッド呼出しをOracle Spatialアプリケーション・コンテキストに関連付ける必要があります。「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.createLinearPolygon@spatial(coords)
次の例では、srid
パラメータを使用して線形ポリゴンを作成します。この例ではsrid
引数を使用するため、spatial
リンク名は使用しません。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.createLinearPolygon(coords, srid) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreateMultiPoint
メソッドは、マルチポイント・ジオメトリであるcom.oracle.cep.cartridge.spatial.Geometry
オブジェクトを返します。
構文
com.oracle.cep.cartridge.spatial.Geometry.createMultiPoint(coords[][], dim) com.oracle.cep.cartridge.spatial.Geometry.createMultiPoint(srid, coords[][], dim)
coords
: それぞれが1点を持つdouble
型を格納した配列の配列
dim
: 各点のディメンション(int
値)
srid
: int
としてのジオメトリのオプションのSRID
。sridパラメータを省略した場合は、例が示すようにspatialリンク名(@spatial
)を追加します。
例
srid
パラメータを省略すると、このメソッドはOracle Spatialデータ・カートリッジのアプリケーション・コンテキストからパラメータを取得します。この場合、spatialリンク名(@spatial
)を使用してメソッド呼出しをOracle Spatialデータ・カートリッジ・アプリケーション・コンテキストに関連付ける必要があります。「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.createMultiPoint@spatial(coords, dim)
次の例では、srid
パラメータを使用してマルチポイント・ジオメトリを作成します。この例ではsrid
パラメータを使用するため、spatial
リンク名は使用しません。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.createMultiPoint(coords, dim, srid) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreatePoint
メソッドは、3Dの点であるcom.oracle.cep.cartridge.spatial.Geometry
新規オブジェクトを返します。
構文
com.oracle.cep.cartridge.spatial.Geometry.createPoint(x, y) com.oracle.cep.cartridge.spatial.Geometry.createPoint(srid, x, y)
x
: double
としての左下のx座標。
y
: double
としての左下のy座標。
srid
: int
としてのジオメトリのオプションのSRID
。srid
パラメータを省略した場合は、例が示すようにspatialリンク名(@spatial
)を追加します。
srid
パラメータを省略すると、このメソッドはOracle Spatialのアプリケーション・コンテキストからパラメータを取得します。この場合、spatialリンク名(@spatial
)を使用してメソッド呼出しをOracle Spatialアプリケーション・コンテキストに関連付ける必要があります。「Oracle Spatialアプリケーション・コンテキスト」を参照してください
com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(x, y)
次の例では、srid
パラメータを使用して点を作成します。この例ではsrid
パラメータを使用するため、spatial
リンク名は使用しません。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.createPoint(lng, lat, srid) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のcreateRectangle
メソッドは、2D矩形である新規のcom.oracle.cep.cartridge.spatial.Geometry
オブジェクトを返します。
構文
com.oracle.cep.cartridge.spatial.Geometry.createRectangle(x1, y1, x2, y2) com.oracle.cep.cartridge.spatial.Geometry.createRectangle(srid, x1, y1, x2, y2)
x1
: double
としての左下のx座標。
y1
: double
としての左下のy座標。
x2
: double
としての右上のx座標。
y2
: double
としての右上のy座標。
srid
: int
としてのジオメトリのオプションのSRID
。
例
srid
パラメータを省略すると、このメソッドはOracle Spatialのアプリケーション・コンテキストからパラメータを取得します。この場合、spatial
リンク名(@spatial
)を使用してメソッド呼出しをOracle Spatialアプリケーション・コンテキストに関連付ける必要があります。「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.createRectangle@spatial(x1, y1, x2, y2)
次の例では、矩形を作成します。この例ではsrid
パラメータを使用するため、spatial
リンク名は必要ありません。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.createRectangle(x1, y1, x2, y2, srid) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のdistance
メソッドは、2つのジオメトリ間の距離(double
値)を計算します。
構文
com.oracle.cep.cartridge.spatial.Geometry.distance(g1, g2) com.oracle.cep.cartridge.spatial.Geometry.distance(geoParam, g1, g2)
異なるcom.oracle.cep.cartridge.spatial.Geometry
オブジェクト間の距離を計算するには、現在のGeometry
オブジェクトの静的でないdistance
メソッドを、次の引数を指定して使用します。
g
: 他のcom.oracle.cep.cartridge.spatial.Geometry
オブジェクト。
2つのcom.oracle.cep.cartridge.spatial.Geometry
オブジェクト間の距離を計算するには、次の引数を指定して静的なdistance
メソッドを使用します。
g1
: 1つ目のcom.oracle.cep.cartridge.spatial.Geometry
オブジェクト。
g2
: 2つ目のcom.oracle.cep.cartridge.spatial.Geometry
オブジェクト。
例
このメソッドは、Oracle Spatialのアプリケーション・コンテキストからパラメータを取得します。spatial
リンク名を使用してメソッド呼出しをOracle Spatialアプリケーション・コンテキストに関連付ける必要があります。「Oracle Spatialアプリケーション・コンテキスト」を参照してください。
com.oracle.cep.cartridge.spatial.Geometry.distance@spatial(geom) com.oracle.cep.cartridge.spatial.Geometry.distance@spatial(geom1, geom2)
次の例では、2つのジオメトリ間の距離を計算します。distance
メソッドはOracle Spatialのアプリケーション・コンテキストに依存するため、spatial
リンク名を使用する必要があります。
<view id="LocGeomStream" schema="customerId curLoc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.createRectangle(x1, y1, x2, y2, srid) from CustomerLocStream where com.oracle.cep.cartridge.spatial.Geometry.distance@spatial(geom1, geom2) < 5 </view>
Oracle CQL関数einfogenerator
は、指定された引数から、単一のinfo
要素をint[]
値で返します。com.oracle.cep.cartridge.spatial.Geometry.createElemInfo
メソッドを使用する場合は、「createElemInfo」も参照してください。
構文
einfogenerator@spatial(offset, etype, interp)
offset
: この要素の第1の縦座標が格納されている縦座標配列内の、int
としてのオフセット。
SDO_STARTING_OFFSET
値は0からではなく1から開始します。このため最初の要素の第1の縦座標はSDO_GEOMETRY.Ordinates(1)
になります。2つ目の要素がある場合、その要素の第1の縦座標はSDO_GEOMETRY.Ordinates(
n
* 3 + 2)
になり、n
はSDO_ORDINATE_ARRAY
定義内の位置を示します。
etype
: int
としての要素のタイプ。
Oracle SpatialではSDO_ETYPE
値の1、1003および2003をサポートしており、これらは(複合型ではなく)単純な要素と見なされます。これらは、要素情報配列の3つのエントリ1組によって定義されます。タイプは次のとおりです。
1: 点
1003: ポリゴンの外部の輪(反時計回りで指定される必要があります)。
2003: ポリゴンの内部の輪(時計回りで指定される必要があります)。
これらのタイプは、SDO_INTERPRETATION
によって詳細に修飾されます。
注意:
1桁と4桁のSDO_ETYPE
値を単一のジオメトリに混在させることはできません。
interp
: int
としての解釈。
SDO_ETYPE
が単純な要素(1、1003または2003)である場合、SDO_INTERPRETATION
属性によって、この要素の座標の順序の解釈方法が決定されます。たとえば、ポリゴン境界は、連結された一連の直線セグメントで構成されます。
ジオメトリが複数の要素で構成される場合、ある要素の最後の縦座標は、常に次の要素の先頭のオフセットより1小さくなります。ジオメトリの最後の要素は、その開始オフセットから縦座標可変長配列の最後までの縦座標によって記述されます。
表A-2は、SDO_ETYPE
とSDO_INTERPREATION
の関係を示しています。
表A-2 SDO_ETYPEおよびSDO_INTERPRETATION
SDO_ETYPE | SDO_INTERPRETATION | 説明 |
---|---|---|
0 |
任意の数値 |
Oracle Spatialによってサポートされないジオメトリ・タイプのモデル化に使用します。 |
1 |
1 |
点のタイプです。 |
1 |
0 |
方向付きの点の方向です。 |
1003または2003 |
1 |
頂点が直線セグメントに連結している単純なポリゴンです。各頂点について点を指定し、ポリゴンを閉じるために、終了点と開始点が一致するように指定する必要があります(許容差内で)。 たとえば、4面のポリゴンの場合は、5番目の点が1番目の点と同じになるような5つの点を指定します。 |
1003または2003 |
3 |
矩形のタイプ(「最適化された矩形」ともいう)です。左下および右上の2点のみの境界矩形で、記述する必要があります。矩形タイプは、測地データまたは非測地データで使用できます。ただし、測地データでは、問合せウィンドウを作成するためにのみ矩形タイプを使用します(データベースにオブジェクトを格納するためには使用しないでください)。 |
例
Oracle CQL関数のため、パッケージ接頭辞を使用せず、spatialリンク名を使用して呼出します。次の例では、ジオメトリの要素情報を作成します。
view id="ShopGeom"> select com.oracle.cep.cartridge.spatial.Geometry.createGeometry@spatial( com.oracle.cep.cartridge.spatial.Geometry.GTYPE_POLYGON, einfogenerator@spatial(1, 1003, 1), ordsgenerator@spatial( lng1, lat1, lng2, lat2, lng3, lat3, lng4, lat4, lng5, lat5, lng6, lat6 ) ) as geom from ShopDesc </view>
Oracle Spatialジオメトリ・フィルタ演算子FILTER
は、非接続でないオブジェクト・ペアの場合はtrueを返し、そうでない場合はfalse
を返します。
FILTER@spatial(key, tol)
key
: GTYPE_POINT
、GTYPE_CURVE
、GTYPE_POLYGON
、GTYPE_SURFACE
、GTYPE_COLLECTION
、GTYPE_MULTIPOINT
、GTYPE_MULTICURVE
、GTYPE_MULTIPOLYGON
、GTYPE_SOLID
またはGTYPE_MULTISOLID
ジオメトリ・タイプ
tol
: double
値としての許容範囲。
例
Oracle Spatialジオメトリ・フィルタ演算子のため、パッケージ接頭辞を使用せず、spatialリンク名を使用して呼出します。次の例では、非接続でないオブジェクト・ペアを判定します。
<view id="filter"> RStream( select loc.customerId, shop.shopId from LocGeomStream[NOW] as loc, ShopGeomRelation as shop where FILTER@spatial(loc.curLoc, 5.0d) = true ) </view>
com.oracle.cep.cartridge.spatial.Geometry
のget2dMbr
メソッドは、指定されたGeometry
の最小境界矩形(MBR)をdouble[][]
値で返します。
構文
com.oracle.cep.cartridge.spatial.Geometry.get2DMbr(geom)
geom
パラメータは、このメソッドが境界矩形を返す対象のcom.oracle.cep.cartridge.spatial.Geometry
オブジェクトです。返された境界矩形には次の値が含まれます。
[0][0]
: minX
[0][1]
: maxX
[1][0]
: minY
[1][1]
: maxY
例
次の例では、geom
の境界矩形を返します。
<view id="LocGeomStream" schema="customerId mbr"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.get2dMbr(geom) from CustomerLocStream where com.oracle.cep.cartridge.spatial.Geometry.distance@spatial(geom1, geom2) < 5 </view>
Oracle Spatial比較演算子INSIDE
はGTYPE_POINT
がジオメトリの内側の場合はtrue
を返し、そうでない場合はfalse
を返します。
構文
INSIDE@spatial(geom, key)
geom
: サポートされるすべてのジオメトリ・タイプ。
key
: GTYPE_POINT
、GTYPE_CURVE
、GTYPE_POLYGON
、GTYPE_SURFACE
、GTYPE_COLLECTION
、GTYPE_MULTIPOINT
、GTYPE_MULTICURVE
、GTYPE_MULTIPOLYGON
、GTYPE_SOLID
またはGTYPE_MULTISOLID
ジオメトリ・タイプ
例
次のOracle CQL問合せは、点がジオメトリの内側にあるかを判定します。
<view id="op_in_where"> RStream( select loc.customerId, shop.shopId from LocGeomStream[NOW] as loc, ShopGeomRelation as shop where INSIDE@spatial(shop.geom, loc.curLoc, 5.0d) = true ) </view> <view id="op_in_proj"> RStream( select loc.customerId, shop.shopId, INSIDE@spatial(shop.geom, loc.curLoc, 5.0d) from LocGeomStream[NOW] as loc, ShopGeomRelation as shop ) </view>
Oracle Spatialジオメトリ比較演算子INSIDE3D
は、3Dジオメトリgeom1
が3D空間geom2
の内側にある場合はtrue
を返し、そうでない場合はfalse
を返します。
構文
INSIDE3D@spatial(geom1, geom2) INSIDE3D@spatial(geom1, geom2)
geom1
: 含有されるジオメトリで、サポートされている3Dジオメトリ
geom2:
含有するジオメトリで、サポートされている3Dジオメトリ
例
次のOracle CQL問合せは、点が3Dジオメトリの内側にあるかを判定します。
<view id="op_in_where"> RStream( select loc.customerId, shop.shopId from LocGeomStream[NOW] as loc, ShopGeomRelation as shop where INSIDE3D@spatial(shop.geom1, shop.geom2) = true ) </view> <view id="op_in_proj"> RStream( select loc.customerId, shop.shopId, INSIDE@spatial(shop.geom1, shop.geom2) from LocGeomStream[NOW] as loc, ShopGeomRelation as shop ) </view>
Oracle Spatialジオメトリ・フィルタ演算子NNは、geomから、キーに最も近いオブジェクト(最近傍)を返します。2つのジオメトリ・オブジェクトの近さを判定するため、Oracle Event Processingは使用される各オブジェクトの面の任意の2点間の最短距離が使用されます。
構文
NN@spatial(geom, key, tol)
geom
: サポートされるすべてのジオメトリ・タイプ。
key
: GTYPE_POINT
、GTYPE_CURVE
、GTYPE_POLYGON
、GTYPE_SURFACE
、GTYPE_COLLECTION
、GTYPE_MULTIPOINT
、GTYPE_MULTICURVE
、GTYPE_MULTIPOLYGON
、GTYPE_SOLID
またはGTYPE_MULTISOLID
ジオメトリ・タイプ
tol
: double
値としての許容範囲。
例
次のOracle CQL問合せは最近傍を判定します。
<view id="filter"> RStream( select loc.customerId, shop.shopId from LocGeomStream[NOW] as loc, ShopGeomRelation as shop where NN@spatial(shop.geom, loc.curLoc, 5.0d) = true ) </view>
Oracle CQL関数ordsgenerator
は、座標パラメータ値から、2D座標のdouble
配列を返します。
構文
ordsgenerator@spatial(x1, y1, ..., xN, yN)
パラメータ値はカンマ区切りの座標値のリストです。この関数は、入力から、2D座標のdouble
配列を返します。
例
次の例では、6つのdouble
座標値からOracle Spatial double配列を作成します。
view id="ShopGeom"> select com.oracle.cep.cartridge.spatial.Geometry.createGeometry@spatial( com.oracle.cep.cartridge.spatial.Geometry.GTYPE_POLYGON, com.oracle.cep.cartridge.spatial.Geometry.createElemInfo(1, 1003, 1), ordsgenerator@spatial( lng1, lat1, lng2, lat2, lng3, lat3, lng4, lat4, lng5, lat5, lng6, lat6 ) ) as geom from ShopDesc </view>
com.oracle.cep.cartridge.spatial.Geometry
のto_Geometry
メソッドは、oracle.spatial.geometry.JGeometry
型を3D com.oracle.cep.cartridge.spatial.Geometry
型に変換します。
構文
com.oracle.cep.cartridge.spatial.Geometry.to_Geometry(geom)
geom
パラメータは、変換するoracle.spatial.geometry.JGeometry
オブジェクトです。指定されたジオメトリがすでにGeometry
タイプおよび3Dジオメトリである場合、変換は行われません。指定されたジオメトリが2Dのジオメトリの場合、z座標を埋め込むことでジオメトリは3Dに変換されます。
例
次の例では、2Dジオメトリgeo
を3Dジオメトリに変換します。
<view id="LocStream" schema="customerId loc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.to_Geometry(geom) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
のto_J3D_Geometryメソッドは、com.oracle.cep.cartridge.spatial.Geometry
オブジェクトをoracle.spatial.geometry.J3D_Geometry
オブジェクトに変換します。
構文
com.oracle.cep.cartridge.spatial.Geometry.to_J3D_Geometry(g)
g
パラメータは、変換するcom.oracle.cep.cartridge.spatial.Geometryオブジェクトです。
例
次の例は、to_J3D_Geometry
メソッドの使用方法を示しています。
<view id="LocStream" schema="customerId loc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.to_J3D_Geometry(geom) from CustomerLocStream </view>
com.oracle.cep.cartridge.spatial.Geometry
.to_JGeometry
メソッドはcom.oracle.cep.cartridge.spatial.Geometry
オブジェクトをoracle.spatial.geometry.JGeometry
2D型に変換します。
構文
com.oracle.cep.cartridge.spatial.Geometry.to_JGeometry(g)
g
パラメータは、変換するcom.oracle.cep.cartridge.spatial.Geometryオブジェクトです。
例
次の例では、2Dジオメトリ・オブジェクトgeom
を2D JGeometryオブジェクトに変換します。
<view id="LocStream" schema="customerId loc"> select customerId, com.oracle.cep.cartridge.spatial.Geometry.to_JGeometry(geom) from CustomerLocStream </view>
Oracle CQL問合せWITHINDISTANCE
は、GTYPE_POINT
がジオメトリの指定距離内にある場合はtrue
を返し、そうでない場合はfalse
を返します。
構文
WITHINDISTANCE@spatial(geom, key, dist)
geom
: サポートされるすべてのジオメトリ・タイプ。
key
: GTYPE_POINT
、GTYPE_CURVE
、GTYPE_POLYGON
、GTYPE_SURFACE
、GTYPE_COLLECTION
、GTYPE_MULTIPOINT
、GTYPE_MULTICURVE
、GTYPE_MULTIPOLYGON
、GTYPE_SOLID
またはGTYPE_MULTISOLID
ジオメトリ・タイプ
dist
: double
値としての距離。
例
次のOracle CQL問合せは、loc.curLoc
がshop.geom
の5.0d
の距離内にあるかを判定します。
<view id="op_in_where"> RStream( select loc.customerId, shop.shopId from LocGeomStream[NOW] as loc, ShopGeomRelation as shop where WITHINDISTANCE@spatial(shop.geom, loc.curLoc, 5.0d) = true ) </view> <view id="op_in_proj"> RStream( select loc.customerId, shop.shopId, WITHINDISTANCE@spatial(shop.geom, loc.curLoc, 5.0d) from LocGeomStream[NOW] as loc, ShopGeomRelation as shop ) </view>