プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle CQLデータ・カートリッジによるアプリケーションの開発
12c リリース(12.2.1.1.0)
E79336-01
目次へ移動
目次

前
前へ

A Oracle SpatialコマンドおよびAPIリファレンス

このコマンドおよびAPIリファレンスは、Oracle Event Processingに適用するOracle SpatialコマンドおよびAPIの構文と例を説明しています。

A.1 ANYINTERACT

ANYINTERACT Oracle Spatialジオメトリ比較演算子は、キーがジオメトリ(geom)に接触する場合にtrueを返し、そうでない場合にfalseを返します。

構文

ANYINTERACT@spatial(geom, key, tol)
  • geom: サポートされているジオメトリ・タイプ

  • key: GTYPE_POINTGTYPE_CURVEGTYPE_POLYGONGTYPE_SURFACEGTYPE_COLLECTIONGTYPE_MULTIPOINTGTYPE_MULTICURVEGTYPE_MULTIPOLYGONGTYPE_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>

A.2 buffer

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>

A.3 bufferPolygon

com.oracle.cep.cartridge.spatial.GeometrybufferPolygonメソッドは、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>

A.4 CONTAIN

Oracle Spatialジオメトリ比較演算子CONTAINは、ジオメトリが他のジオメトリに含まれる場合はtrueを返し、そうでない場合はfalseを返します。

構文

CONTAIN@spatial(geom, key)
  • geom: サポートされているジオメトリ・タイプ

  • key: GTYPE_POINTGTYPE_CURVEGTYPE_POLYGONGTYPE_SURFACEGTYPE_COLLECTIONGTYPE_MULTIPOINTGTYPE_MULTICURVEGTYPE_MULTIPOLYGONGTYPE_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>

A.5 convertTo2D

com.oracle.cep.cartridge.spatial.GeometryconvertTo2Dメソッドは、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>

A.6 convertTo3D

com.oracle.cep.cartridge.spatial.GeometryconvertTo3Dメソッドは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>

A.7 createCircle

com.oracle.cep.cartridge.spatial.GeometrycreateCircleメソッドは、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>

A.8 createElemInfo

com.oracle.cep.cartridge.spatial.GeometrycreateElemInfoメソッドは、指定された引数から、単一の要素情報値を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)になり、nSDO_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_ETYPESDO_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>

A.9 createGeometry

com.oracle.cep.cartridge.spatial.GeometrycreateGeometryメソッドは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>

A.10 createLinearLineString

com.oracle.cep.cartridge.spatial.GeometrycreateLinearLineStringメソッドは、要素情報が{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>

A.11 createLinearMultiLineString

com.oracle.cep.cartridge.spatial.GeometrycreateMultiLineStringメソッドは、直線マルチライン・ストリングである、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>

A.12 createLinearPolygon

com.oracle.cep.cartridge.spatial.GeometrycreateLinearPolygonメソッドは、穴のない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>

A.13 createMultiPoint

com.oracle.cep.cartridge.spatial.GeometrycreateMultiPointメソッドは、マルチポイント・ジオメトリである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>

A.14 createPoint

com.oracle.cep.cartridge.spatial.GeometrycreatePointメソッドは、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としてのジオメトリのオプションのSRIDsridパラメータを省略した場合は、例が示すように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>

A.15 createRectangle

com.oracle.cep.cartridge.spatial.GeometrycreateRectangleメソッドは、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>

A.16 distance

com.oracle.cep.cartridge.spatial.Geometrydistanceメソッドは、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>

A.17 einfogenerator

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)になり、nSDO_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_ETYPESDO_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>

A.18 FILTER

Oracle Spatialジオメトリ・フィルタ演算子FILTERは、非接続でないオブジェクト・ペアの場合はtrueを返し、そうでない場合はfalseを返します。

FILTER@spatial(key, tol)
  • key: GTYPE_POINTGTYPE_CURVEGTYPE_POLYGONGTYPE_SURFACEGTYPE_COLLECTIONGTYPE_MULTIPOINTGTYPE_MULTICURVEGTYPE_MULTIPOLYGONGTYPE_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>

A.19 get2dMbr

com.oracle.cep.cartridge.spatial.Geometryget2dMbrメソッドは、指定された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>

A.20 INSIDE

Oracle Spatial比較演算子INSIDEGTYPE_POINTがジオメトリの内側の場合はtrueを返し、そうでない場合はfalseを返します。

構文

INSIDE@spatial(geom, key)
  • geom: サポートされるすべてのジオメトリ・タイプ。

  • key: GTYPE_POINTGTYPE_CURVEGTYPE_POLYGONGTYPE_SURFACEGTYPE_COLLECTIONGTYPE_MULTIPOINTGTYPE_MULTICURVEGTYPE_MULTIPOLYGONGTYPE_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>

A.21 INSIDE3D

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>

A.22 NN

Oracle Spatialジオメトリ・フィルタ演算子NNは、geomから、キーに最も近いオブジェクト(最近傍)を返します。2つのジオメトリ・オブジェクトの近さを判定するため、Oracle Event Processingは使用される各オブジェクトの面の任意の2点間の最短距離が使用されます。

構文

NN@spatial(geom, key, tol)
  • geom: サポートされるすべてのジオメトリ・タイプ。

  • key: GTYPE_POINTGTYPE_CURVEGTYPE_POLYGONGTYPE_SURFACEGTYPE_COLLECTIONGTYPE_MULTIPOINTGTYPE_MULTICURVEGTYPE_MULTIPOLYGONGTYPE_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>

A.23 ordsgenerator

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>

A.24 to_Geometry

com.oracle.cep.cartridge.spatial.Geometryto_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>

A.25 to_J3D_Geometry

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>

A.26 to_JGeometry

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>

A.27 WITHINDISTANCE

Oracle CQL問合せWITHINDISTANCEは、GTYPE_POINTがジオメトリの指定距離内にある場合はtrueを返し、そうでない場合はfalseを返します。

構文

WITHINDISTANCE@spatial(geom, key, dist)
  • geom: サポートされるすべてのジオメトリ・タイプ。

  • key: GTYPE_POINTGTYPE_CURVEGTYPE_POLYGONGTYPE_SURFACEGTYPE_COLLECTIONGTYPE_MULTIPOINTGTYPE_MULTICURVEGTYPE_MULTIPOLYGONGTYPE_SOLIDまたはGTYPE_MULTISOLIDジオメトリ・タイプ

  • dist: double値としての距離。

次のOracle CQL問合せは、loc.curLocshop.geom5.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>