ヘッダーをスキップ
Oracle® Complex Event Processing CQL言語リファレンス
11g リリース1(11.1.1)
B61613-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

16 Oracle Spatialデータ・カートリッジ

この章では、Oracle Spatialデータ・カートリッジが公開する型、メソッド、フィールドおよびコンストラクタについて説明します。これらの型、メソッド、フィールドおよびコンストラクタを、Oracle CQLのネイティブ型と同様に、Oracle CQLの問合せおよびビューで使用できます。

この章の内容は、次のとおりです。

詳細は、以下を参照してください。

16.1 Oracle Spatialデータ・カートリッジについて

Oracle Spatialは、高度な空間機能を提供するOracle Databaseのオプションで、ハイエンドな地理情報システム(GIS)および位置情報対応型のビジネス・インテリジェンス・ソリューション(LBS)をサポートします。

Oracle Spatialデータ・カートリッジは、Oracle CEPアプリケーションでOracle Spatialクラスとシームレスに対話するOracle CQLの問合せおよびビューを記述するための、オプションのデータ・カートリッジです。

Oracle Spatialデータ・カートリッジを使用すると、空間データの索引作成が可能になり、空間データの格納、空間データでの近接および重複比較の実行、空間データとOracle CQLサーバーの統合など、重要な地理ドメイン操作を実行するOracle CQL問合せを構成できます。  

Oracle Spatialデータ・カートリッジを使用するには、Oracle Spatial APIに関する実用的な知識が必要です。Oracle Spatialの詳細は、次の資料を参照してください。

この項の内容は、次のとおりです。

16.1.1 データ・カートリッジ名

Oracle Spatialデータ・カートリッジでは、カートリッジID com.oracle.cep.cartrdiges.spatialを使用してサーバー・スコープ予約済リンク名spatialを登録します。

spatialリンク名を使用して、Oracle Spatialデータ・カートリッジのメソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストを関連付けます。

詳細は、以下を参照してください。

16.1.2 有効範囲

Oracle Spatialデータ・カートリッジはOracle Spatial Java APIに基づいています。Oracle Spatialデータ・カートリッジはOracle Spatial機能をcom.oracle.cep.cartridge.spatial.Geometryクラスに公開します。Oracle Spatial Java APIにないOracle Spatial機能に、Oracle Spatialデータ・カートリッジからアクセスすることはできません。

Oracle CQL問合せでは、Oracle Spatialデータ・カートリッジを使用して、表16-1に示すOracle Spatial機能にアクセスできます。

表16-1 Oracle Spatialデータ・カートリッジの有効範囲

Oracle Spatialの機能 有効範囲

ジオメトリ・タイプ

Oracle Spatial Java APIの次のジオメトリ・タイプ:

  • 2Dの点

  • 2Dの単純ポリゴン

  • 2Dの矩形

次のジオメトリ操作:

  • ジオメトリ・タイプの作成

  • ジオメトリ・タイプのpublicメンバー関数およびpublicフィールドへのアクセス

詳細は、以下を参照してください。

ジオメトリ関係演算子

  • ANYINTERACT

  • CONTAIN

  • INSIDE

  • WITHINDISTANCE

詳細は、16.1.2.3項「ジオメトリ関係演算子」を参照してください。

ジオメトリ・フィルタ演算子

  • FILTER

  • NN

詳細は、16.1.2.4項「ジオメトリ・フィルタ演算子」を参照してください。

ジオメトリ索引

  • Rツリー

詳細は、16.1.2.5項「ジオメトリ索引」を参照してください。

座標系

  • デカルトおよびWGS84測地座標(デフォルト)

  • SRIDによるデフォルト座標系の指定

  • 他の測地座標の使用

詳細は、16.1.2.6項「縦座標および座標系とSDO_SRID」を参照してください。


com.oracle.cep.cartridge.spatial.Geometryで提供されているメソッドの完全なリストは、16.1.2.7項「ジオメトリAPI」を参照してください。

Oracle Spatialデータ・カートリッジを使用してこれらのOracle Spatial機能にアクセスする方法の詳細は、16.2項「Oracle Spatialデータ・カートリッジの使用」を参照してください。

16.1.2.1 ジオメトリ・タイプ

Oracle Spatialデータ・カートリッジのデータ・モデルはジオメトリで構成されます。ジオメトリは、順序の付いた一連の頂点です。ジオメトリのセマンティクスは、そのタイプによって決まります。

Oracle Spatialデータ・カートリッジを使用すると、Oracle CQLの問合せとビューで次のOracle Spatialタイプに直接アクセスできます。

  • SDO_GTYPES: Oracle Spatialデータ・カートリッジは次のジオメトリ・タイプをサポートしています。

    • 2Dの点

    • 2Dの単純ポリゴン

    • 2Dの矩形

    表16-2は、使用可能なcom.oracle.cep.cartridge.spatial.Geometryクラスのジオメトリ・タイプを示しています。

    表16-2 Oracle Spatialデータ・カートリッジのジオメトリ・タイプ

    ジオメトリ・タイプ 説明

    GTYPE_POINT

    1つの点を含む点ジオメトリ・タイプ。

    GTYPE_POLYGON

    1つのポリゴンを含むポリゴン・ジオメトリ・タイプ。


  • SDO_ELEMENT_INFO: 次の項目を使用して、要素情報配列を作成できます。

    • com.oracle.cep.cartridge.spatial.Geometry.createElemInfo静的メソッド

    • einfogenerator関数

    詳細は、16.1.2.2項「要素情報配列」を参照してください。

  • ORDINATES: Oracle Spatialデータ・カートリッジordsgenerator関数を使用して、縦座標を作成できます。

    詳細は、16.1.2.6項「縦座標および座標系とSDO_SRID」を参照してください。

詳細は、以下を参照してください。

16.1.2.2 要素情報配列

Element Info属性は、可変長の数値配列を使用して定義されます。この属性は、Ordinates属性に格納されている縦座標を解釈する方法を指定します。

Oracle Spatialデータ・カートリッジには、Element Info属性値を生成するために、次のヘルパー関数が用意されています。

com.oracle.cep.cartridge.spatial.Geometry.createElemInfo(int SDO_STARTING_OFFSET, int SDO_ETYPE , int SDO_INTERPRETATION)

einfogenerator関数を使用することもできます。

詳細は、以下を参照してください。

16.1.2.3 ジオメトリ関係演算子

Oracle Spatialデータ・カートリッジは、Oracle CQL問合せのprojection句またはwhere句で、すべてのOracle Spatialジオメトリ関係演算子をサポートしています。

Oracle CQL問合せのwhere句でジオメトリ関係演算子を使用する場合、Oracle Spatialデータ・カートリッジで、where句で指定された関係に対してRツリー索引を作成できます。

Oracle Spatialデータ・カートリッジは、点と他のジオメトリ・タイプ間のジオメトリック関係のみをサポートします。ジオメトリのジオメトリ・タイプはGTYPE_POINTである必要があり、そうでない場合はRUNTIME_EXCEPTIONがスローされます。

詳細は、16.2.4項「ジオメトリ関係演算子の使用方法」を参照してください。

16.1.2.4 ジオメトリ・フィルタ演算子

FILTERおよびNN演算子はプライマリ・フィルタリングを実行するため、Oracle CQL問合せのwhere句でのみ使用されます。これらのフィルタ演算子は空間索引を使用して、特定オブジェクトと空間で相互作用する一連の空間オブジェクトを識別します。

詳細は、以下を参照してください。

16.1.2.5 ジオメトリック索引

Oracle Spatialデータ・カートリッジでは空間索引を使用して、1次フィルタを実装します。空間索引の目的は、データのサブセットを迅速に作成し、2次フィルタでの処理の負荷を軽減することです。

空間索引は他の索引と同様、検索対象を限定するメカニズムを提供しますが、この場合は、メカニズムは交差や包含のような空間基準に基づきます。

Oracle Spatialデータ・カートリッジでは、デフォルトの索引作成メカニズムにRツリー索引を使用しています。空間Rツリー索引では、最大4次元の空間データの索引を作成できます。Rツリー索引では、ジオメトリを囲む最小の矩形(最小境界矩形(MBR))によって各ジオメトリを近似させます。

詳細は、以下を参照してください。

16.1.2.6 縦座標および座標系とSDO_SRID

表16-3は、Oracle Spatialデータ・カートリッジでデフォルトでサポートされる座標系、および各座標系を識別するSDO_SRID値を示しています。

表16-3 Oracle Spatialデータ・カートリッジの座標系

座標系 SDO_SRID 説明

デカルト

0

デカルト座標は、指定した基点からの点の位置を、空間の直交する軸を関連付けて測定する座標です。

測地(WGS84)

8307

測地座標(地理座標)は、角度を持つ座標(経度および緯度)で、球体の極点の座標と密接に関連しており、地球上の特定の測地データに関連付けて定義されます。

これは、Oracle Spatialデータ・カートリッジのデフォルトの座標系です。


SDO_SRID値は、呼び出す各Oracle Spatialメソッドおよびコンストラクタの引数として指定できます。また、Oracle Spatialデータ・カートリッジのアプリケーション・コンテキストでSDO_SRIDを1度構成すると、SDO_SRIDを毎回引数として設定しなくてもcom.oracle.cep.cartridge.spatial.Geometryメソッドを使用できます。アプリケーション・コンテキストを使用して、Oracle Spatialでサポートされる任意の座標系を指定することもできます。


注意:

SDO_SRID値を使用しないcom.oracle.cep.cartridge.spatial.Geometryメソッドを使用する場合、Oracle Spatialデータ・カートリッジのアプリケーション・コンテキストを使用する必要があります。たとえば、次のメソッド呼出しを行うとランタイム例外が発生します。
com.oracle.cep.cartridge.spatial.Geometry.createPoint(lng, lat)

かわりに、spatialリンク名を使用して、メソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストを関連付ける必要があります。

com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(lng, lat)

SDO_SRID値を使用するGeometryメソッドを使用する場合、spatialリンク名の使用はオプションです。たとえば、次のメソッド呼出しは両方とも有効です。

com.oracle.cep.cartridge.spatial.Geometry.createPoint(8307, lng, lat)
com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(lng, lat)

詳細は、16.1.4項「Oracle Spatialデータ・カートリッジのアプリケーション・コンテキスト」を参照してください。


縦座標は、ダブル配列を使用してジオメトリの座標の配列を定義します。Oracle Spatialデータ・カートリッジには、座標の配列を生成するためにordsgeneratorヘルパー関数が用意されています。構文については、「ordsgenerator」を参照してください。

詳細は、以下を参照してください。

16.1.2.7 ジオメトリAPI

Oracle Spatialデータ・カートリッジはOracle Spatial Java APIに基づいています。Oracle Spatialデータ・カートリッジはOracle Spatial機能をcom.oracle.cep.cartridge.spatial.Geometryクラスに公開します。このGeometryクラスにより、oracle.spatial.geometry.J3D_Geometryも拡張されます。

Oracle Spatialデータ・カートリッジでサポートされるは2Dのジオメトリのみですが、効率の向上のために、Geometryクラスでは一部のJ3D_Geometryメソッドも使用されます。Geometryクラスでは、J3D_GeometryメソッドのためにZ座標に自動的にゼロが埋め込まれます。

Geometryクラスからアクセスできない(またはOracle Spatialデータ・カートリッジがサポートする有効範囲およびジオメトリ・タイプに準拠していない)Oracle Spatial機能に、Oracle Spatialデータ・カートリッジからアクセスすることはできません。

この項の内容は、次のとおりです。

詳細は、以下を参照してください。


注意:

Oracle Spatialデータ・カートリッジの型名を簡易化するために、2.8.2項「Aliases要素を使用した別名の定義」に示すように別名を使用できます。

16.1.2.7.1 com.oracle.cep.cartridge.spatial.Geometryメソッド

表16-4は、Geometryクラスで提供されるパブリック・メソッドを示しています。

表16-4 Oracle Spatialジオメトリ・メソッド

タイプ メソッド

バッファ


距離


要素情報


ジオメトリ


線形ポリゴン


MBR



矩形


型および型変換




注意:

Geometryクラスでは大文字と小文字が区別されるため、表示されている方を使用してください。


注意:

SDO_SRID値を使用しないcom.oracle.cep.cartridge.spatial.Geometryメソッドを使用する場合、Oracle Spatialデータ・カートリッジのアプリケーション・コンテキストを使用する必要があります。たとえば、次のメソッド呼出しを行うとランタイム例外が発生します。
com.oracle.cep.cartridge.spatial.Geometry.createPoint(lng, lat)

かわりに、spatialリンク名を使用して、メソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストを関連付ける必要があります。

com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(lng, lat)

SDO_SRID値を使用するGeometryメソッドを使用する場合、spatialリンク名の使用はオプションです。たとえば、次のメソッド呼出しは両方とも有効です。

com.oracle.cep.cartridge.spatial.Geometry.createPoint(8307, lng, lat)
com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(lng, lat)

詳細は、16.1.4項「Oracle Spatialデータ・カートリッジのアプリケーション・コンテキスト」を参照してください。


16.1.2.7.2 oracle.spatial.geometry.JGeometryメソッド

次のJGeometryパブリック・メソッドを、Oracle Spatialデータ・カートリッジに適用できます。

  • double area(double tolerance): 2Dジオメトリの平面の表面積合計を返します。

  • double length(double tolerance): 2Dジオメトリの周辺の長さを返します。すべての辺の長さが加えられます。

  • double[] getMBR(): このジオメトリのMBRを返します。2DのMBRのminXminYmaxXおよびmaxY値を含むダブル配列を返します。

詳細は、以下を参照してください。

16.1.3 データ型マッピング

Oracle Spatialカートリッジは、1つのデータ型com.oracle.cep.cartridge.spatial.Geometryをサポートしています。

com.oracle.cep.cartridge.spatial.Geometryで提供されているメソッドの完全なリストは、16.1.2.7項「ジオメトリAPI」を参照してください。

16.1.4 Oracle Spatialデータ・カートリッジのアプリケーション・コンテキスト

Oracle Spatialデータ・カートリッジのインスタンスにアプリケーション・コンテキストを定義し、このアプリケーション・コンテキストをランタイム時に伝播できます。これにより、特定のOracle Spatialアプリケーション・デフォルト(SDO_SRIDなど)を特定のOracle Spatialデータ・カートリッジ・インスタンスに関連付けることができます。

例16-1は、測地参照システム1980(GRS80)座標系を使用して、SpatialGRS80という空間コンテキストをEPNアセンブリ・ファイルに作成する方法を示しています。

例16-1 EPNアセンブリ・ファイルのspatial:context要素

<spatial:context id="SpatialGRS80" srid="4269" sma="6378137" rof="298.25722101" />

例16-2は、Oracle CQL問合せでspatial:contextを参照する方法を示しています。この例では、問合せは(例16-1で定義された)リンク名SpatialGRS80を使用して、このアプリケーション・コンテキストをOracle Spatialデータ・カートリッジに伝播しています。SpatialGRS80spatial:context属性設定は、createPointメソッド呼出しに適用されます。

例16-2 Oracle CQL問合せでのspatial:contextの参照

<view  id="createPoint">
    select com.oracle.cep.cartridge.spatial.Geometry.createPoint@SpatialGRS80(
        lng, lat)
    from CustomerPos[NOW]
</view>

詳細は(すべてのspatial:context属性の完全なリストなど)、Eclipse用Oracle CEP開発者ガイドのOracle Spatialデータ・カートリッジのアプリケーション・コンテキストの構成に関する項を参照してください。


注意:

SDO_SRID値を使用しないcom.oracle.cep.cartridge.spatial.Geometryメソッドを使用する場合、Oracle Spatialデータ・カートリッジのアプリケーション・コンテキストを使用する必要があります。たとえば、次のメソッド呼出しを行うとランタイム例外が発生します。
com.oracle.cep.cartridge.spatial.Geometry.createPoint(lng, lat)

かわりに、spatialリンク名を使用して、メソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストを関連付ける必要があります。

com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(lng, lat)

SDO_SRID値を使用するGeometryメソッドを使用する場合、spatialリンク名の使用はオプションです。たとえば、次のメソッド呼出しは両方とも有効です。

com.oracle.cep.cartridge.spatial.Geometry.createPoint(8307, lng, lat)
com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(lng, lat)

詳細は、16.1.2.7項「ジオメトリAPI」を参照してください。


16.2 Oracle Spatialデータ・カートリッジの使用

この項では、Oracle CEPアプリケーションでOracle Spatialデータ・カートリッジをどのように使用できるかを中心に、一般的な使用例を説明します。内容は次のとおりです。

詳細は、16.1.2.7項「ジオメトリAPI」を参照してください。

16.2.1 Oracle Spatial Java APIでサポートされているジオメトリ・タイプへのアクセス方法

次の手順では、Oracle CQL問合せでOracle Spatialデータ・カートリッジを使用してOracle Spatialジオメトリ・タイプSDO_GTYPESDO_ELEMENT_INFOおよびORDINATESにアクセスする方法について説明します。

Oracle Spatial Java APIでサポートされているジオメトリ・タイプにアクセスするには:

  1. GTYPE_POLYGONなどのSDO_GTYPEを選択します。

    詳細は、16.1.2.1項「ジオメトリ・タイプ」を参照してください。

  2. 縦座標に適した要素情報を選択します。

    詳細は、16.1.2.2項「要素情報配列」を参照してください。

  3. 座標の値を指定します。

    詳細は、16.1.2.6項「縦座標および座標系とSDO_SRID」を参照してください。

  4. 例16-3に示すように、Oracle CQL問合せを作成します。

    例16-3 Oracle Spatialジオメトリ・タイプを使用したOracle CQL問合せ

    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>
    

16.2.2 ジオメトリの作成方法

次のメソッドを呼び出すことで、Oracle Spatialデータ・カートリッジを使用してOracle CQL問合せでジオメトリを作成できます。

  • com.oracle.cartridge.spatial.Geometryの静的メソッド

  • Oracle Spatialデータ・カートリッジがサポートする有効範囲およびジオメトリ・タイプに準拠している、oracle.spatial.geometry.JGeometryのメソッド。

詳細は、16.1.2.7項「ジオメトリAPI」を参照してください。

Oracle Spatialデータ・カートリッジ・ジオメトリ・クラスでの静的メソッドの使用

例16-4は、com.oracle.cartridge.spatial.Geometryの静的メソッドを使用して点ジオメトリを作成する方法を示しています。この例では、リンク(@spatial)を使用して、このクラスを提供するデータ・カートリッジを識別する必要があります。この方法の利点は、デフォルトで、または構成したアプリケーション・コンテキストに基づいて、Oracle Spatialデータ・カートリッジのアプリケーション・コンテキストが適用され、SRIDおよび他のOracle Spatialオプションが設定される点です(16.1.4項「Oracle Spatialデータ・カートリッジのアプリケーション・コンテキスト」を参照)。

例16-4 ジオメトリ静的メソッドを使用した点ジオメトリの作成

<view  id="CustomerPosGeom">
    select com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(
        lng, lat) as geom
    from CustomerPos[NOW]
</view>

詳細は、16.1.2.1項「ジオメトリ・タイプ」を参照してください。

16.2.3 ジオメトリ・タイプのpublicメソッドおよびフィールドへのアクセス方法

Oracle Spatialデータ・カートリッジを使用すると、Oracle CQLでOracle Spatialクラスのpublicメンバー関数およびpublicメンバー・フィールドに直接アクセスできます。

Geometryクラスからアクセスできない(またはOracle Spatialデータ・カートリッジがサポートする有効範囲およびジオメトリ・タイプに準拠していない)Oracle Spatial機能に、Oracle Spatialデータ・カートリッジからアクセスすることはできません。

例16-5では、ビューShopGeomgeomというOracle Spatialジオメトリを作成しています。ビューshopMBRJGeometry静的メソッドgetMBRを呼び出し、double[]がストリーム要素mbrとして返されています。問合せqshopMBRは標準Java APIを使用してこのdouble[]にアクセスしています。

例16-5 ジオメトリ・タイプのpublicメソッドおよびフィールドへのアクセス

<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>
<view  id=”shopMBR”>
    select geom.getMBR() as mbr
    from ShopGeom
</view>
<query  id=”qshopMBR”>
    select mbr[0], mbr[1], mbr[2], mbr[3]
    from shopMBR
</query>

詳細は、以下を参照してください。

16.2.4 ジオメトリ関係演算子の使用方法

Oracle Spatialデータ・カートリッジを使用すると、Oracle CQL問合せのWHERE句またはSELECT句で、次のOracle Spatialジオメトリ関係演算子にアクセスできます。

  • ANYINTERACT

  • CONTAIN

  • INSIDE

  • WITHINDISTANCE

例16-6では、ビューop_in_whereWHERE句でCONTAINジオメトリ関係演算子を使用しています。この例では、Oracle Spatialデータ・カートリッジはRツリー索引を使用しています。ビューop_in_projSELECT句でCONTAINを使用しています。

例16-6 ジオメトリ関係演算子の使用

<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>

詳細は、16.1.2.3項「ジオメトリ関係演算子」を参照してください。

16.2.5 ジオメトリ・フィルタ演算子の使用方法

Oracle Spatialデータ・カートリッジを使用すると、Oracle CQL問合せのWHERE句で、次のOracle Spatialジオメトリ・フィルタ演算子にアクセスできます。

  • FILTER

  • NN

例16-7では、ビューfilterWHEREFILTERジオメトリ・フィルタ演算子を使用しています。

例16-7 ジオメトリ・フィルタ演算子の使用

<view id="filter">
    RStream(
        select loc.customerId, shop.shopId
        from LocGeomStream[NOW] as loc, ShopGeomRelation as shop
        where FILTER@spatial(shop.geom, loc.curLoc, 5.0d) = true
    )
</view>

詳細は、16.1.2.4項「ジオメトリ・フィルタ演算子」を参照してください。

16.2.6 デフォルトの測地座標の使用方法

Oracle Spatialデータ・カートリッジのデフォルトのアプリケーション・コンテキストを使用してOracle CQL問合せを作成すると、デフォルトのSRIDCARTESIANに設定されます。

例16-8に示すように、createPointメソッド呼出しはデフォルトのリンク(@spatial)を使用します。これにより、Oracle Spatialデータ・カートリッジのデフォルトのアプリケーション・コンテキストが適用されるようになります。

例16-8 Oracle CQL問合せでのデフォルトの測地座標の使用

<view  id="createPoint">
    select com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(
        lng, lat)
    from CustomerPos[NOW]
</view>

詳細は、以下を参照してください。

16.2.7 他の測地座標の使用方法

次の手順では、Oracle Spatialデータ・カートリッジのアプリケーション・コンテキストを使用して、デフォルトのデカルト測地座標系以外の測地座標系をOracle CQL問合せで指定する方法について説明します。

詳細は、以下を参照してください。

他の測地座標を使用するには:

  1. Oracle Spatialのアプリケーション・コンテキストを作成し、使用する測地座標のsrid属性を定義します。

    例16-9は、測地参照システム1980(GRS80)座標系を使用して、SpatialGRS80という空間コンテキストをEPNアセンブリ・ファイルに作成する方法を示しています。

    例16-9 EPNアセンブリ・ファイルのspatial:context要素

    <spatial:context id="SpatialGRS80" srid="4269" sma="6378137" rof="298.25722101" />
    
  2. Oracle CQL問合せにおいて、リンクでこのspatial:contextのIDを使用します。

    例16-10は、Oracle CQL問合せでspatial:contextを参照する方法を示しています。この例では、問合せは(例16-9で定義された)リンク名SpatialGRS80を使用して、このアプリケーション・コンテキストをOracle Spatialデータ・カートリッジに伝播しています。SpatialGRS80spatial:context属性設定は、createPointメソッド呼出しに適用されます。

    例16-10 Oracle CQL問合せでのspatial:contextの参照

    <view  id=”createPoint”>
        select com.oracle.cep.cartridge.spatial.Geometry.createPoint@SpatialGRS80(
            lng, lat)
        from CustomerPos[NOW]
    </view>
    

bufferPolygon

構文

bufferpolygon.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、入力oracle.spatial.geometry.JGeometryポリゴンのバッファされたバージョンである、新規のcom.oracle.cep.cartridge.spatial.Geometryオブジェクトを返します。

このメソッドは次の引数を使用します。

このメソッドは、Oracle Spatialデータ・カートリッジのアプリケーション・コンテキストからパラメータを取得します。このため、spatialリンク名を使用して、メソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストを関連付ける必要があります。

com.oracle.cep.cartridge.spatial.Geometry.bufferPolygon@spatial(geom, 1300)

詳細は、16.1.4項「Oracle Spatialデータ・カートリッジのアプリケーション・コンテキスト」を参照してください。

例16-11は、bufferPolygonメソッドの使用方法を示しています。bufferPolygon呼出しはOracle Spatialデータ・カートリッジのアプリケーション・コンテキストに依存するため、spatialリンク名を使用します。

例16-11 Geometry.bufferPolygonを使用したOracle CQL問合せ

<view id="LocGeomStream" schema="customerId curLoc">
    select 
        customerId, 
        com.oracle.cep.cartridge.spatial.Geometry.bufferPolygon@spatial(geom, 13) 
    from 
        CustomerLocStream
</view>

createElemInfo

構文

createeleminfo.gifについては周囲のテキストで説明しています。

注意:

関数einfogeneratorを使用することもできます。詳細は、「einfogenerator」を参照してください。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、所与の引数から1つの要素情報値をint[]として返します。

このメソッドは次の引数を使用します。

例16-12は、createElemInfoメソッドの使用方法を示しています。

例16-12 Geometry.createElemInfoを使用したOracle CQL問合せ

<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>

createGeometry

構文

creategeometry.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、新規の2D oracle.cep.cartridge.spatial.Geometryオブジェクトを返します。

このメソッドは次の引数を使用します。

例16-13は、createGeometryメソッドの使用方法を示しています。このcreateGeometry呼出しにはsrid引数が含まれていないため、spatialリンク名を使用してメソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストが関連付けられます。

例16-13 Geometry.createGeometryを使用したOracle CQL問合せ

<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>

createLinearPolygon

構文

createlinearpolygon.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、穴のない単純な2Dの線形ポリゴンである、新規のcom.oracle.cep.cartridge.spatial.Geometryオブジェクトを返します。座標配列が自身では閉じない場合(最初と最後の座標が同じでない場合)、このメソッドは最初の座標をコピーし、この座標値を入力座標配列の最後に追加します。

穴のない単純な線形ポリゴンを作成するには、次の引数を使用します。

例16-14は、createLinearPolygonメソッドの使用方法を示しています。このcreateLinearPolygonメソッド呼出しにはsrid引数が含まれていないため、spatialリンク名を使用してメソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストを関連付ける必要があります。

例16-14 Geometry.createLinearPolygonを使用したOracle CQL問合せ

<view id="LocGeomStream" schema="customerId curLoc">
    select 
        customerId, 
        com.oracle.cep.cartridge.spatial.Geometry.createLinearPolygon@spatial(coords) 
    from 
        CustomerLocStream
</view>

createPoint

構文

createpoint.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、3Dの点である新規のcom.oracle.cep.cartridge.spatial.Geometryオブジェクトを返します。

このメソッドは次の引数を使用します。

例16-15は、createPointメソッドの使用方法を示しています。このcreatePoint呼び出しにはsrid引数が含まれているため、spatialリンク名を使用する必要はありません。

例16-15 Geometry.createPointを使用したOracle CQL問合せ

<view id="LocGeomStream" schema="customerId curLoc">
    select 
        customerId, 
        com.oracle.cep.cartridge.spatial.Geometry.createPoint@spatial(lng, lat) 
    from 
        CustomerLocStream
</view>

createRectangle

構文

createrectangle.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、2Dの矩形である新規のcom.oracle.cep.cartridge.spatial.Geometryオブジェクトを返します。

このメソッドは次の引数を使用します。

例16-16は、createRectangleメソッドの使用方法を示しています。このcreateRectangleメソッド呼出しにはsrid引数が含まれていないため、spatialリンク名を使用してメソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストを関連付ける必要があります。

例16-16 Geometry.createRectangleを使用したOracle CQL問合せ

<view id="LocGeomStream" schema="customerId curLoc">
    select 
        customerId, 
        com.oracle.cep.cartridge.spatial.Geometry.createRectangle@spatial(x1, y1, x2, y2) 
    from 
        CustomerLocStream
</view>

distance

構文

distance.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、2つのジオメトリ間の距離をdoubleとして計算します。

特定のcom.oracle.cep.cartridge.spatial.Geometryオブジェクトと他との間の距離を計算するには、次の引数を指定して、現在のGeometryオブジェクトの静的でないdistanceメソッドを使用します。

2つのcom.oracle.cep.cartridge.spatial.Geometryオブジェクト間の距離を計算するには、次の引数を指定して静的なdistanceメソッドを使用します。

どちらの場合も、このメソッドはOracle Spatialデータ・カートリッジのアプリケーション・コンテキストからパラメータを取得します。このため、spatialリンク名を使用して、メソッド呼出しとOracle Spatialデータ・カートリッジのアプリケーション・コンテキストを関連付ける必要があります。

com.oracle.cep.cartridge.spatial.Geometry.distance@spatial(geom)
com.oracle.cep.cartridge.spatial.Geometry.distance@spatial(geom1, geom2)

詳細は、16.1.4項「Oracle Spatialデータ・カートリッジのアプリケーション・コンテキスト」を参照してください。

例16-17は、distanceメソッドの使用方法を示しています。distanceメソッドはOracle Spatialデータ・カートリッジのアプリケーション・コンテキストに依存するため、spatialリンク名を使用する必要があります。

例16-17 Geometry.distanceを使用したOracle CQL問合せ

<view id="LocGeomStream" schema="customerId curLoc">
    select 
        customerId, 
        com.oracle.cep.cartridge.spatial.Geometry.createRectangle(x1, y1, x2, y2, 8307) 
    from 
        CustomerLocStream
    where
        com.oracle.cep.cartridge.spatial.Geometry.distance@spatial(geom1, geom2) < 5
</view>

einfogenerator

構文

einfogenerator.gifについては周囲のテキストで説明しています。

注意:

これはOracle CQL関数で、com.oracle.cep.cartridge.spatial.Geometryクラスのメソッドではないため、この関数は、例16-18のようにパッケージ接頭辞を指定せずに呼び出します。
einfogenerator@spatial

GeometryメソッドcreateElemInfoを使用することもできます。詳細は、「createElemInfo」を参照してください。


目的

この関数は、所与の引数から1つの要素情報値をint[]として返します。

この関数は次の引数を使用します。

例16-18は、oeinfogenerator関数を使用してジオメトリの要素情報を作成する方法を示しています。

例16-18 Oracle Spatialジオメトリ・タイプを使用したOracle CQL問合せ

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>

get2dMbr

構文

get2dmbr.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、次の値を含む特定のGeometryMBRdouble[][]として返します。

このメソッドは次の引数を使用します。

例16-19は、get2dMbrメソッドの使用方法を示しています。

例16-19 Geometry.get2dMbrを使用したOracle CQL問合せ

<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>

ordsgenerator

構文

ordsgenerator.gifについては周囲のテキストで説明しています。

注意:

これはOracle CQL関数で、com.oracle.cep.cartridge.spatial.Geometryクラスのメソッドではないため、この関数は、例16-20のようにパッケージ接頭辞を指定せずに呼び出します。
ordsgenerator@spatial

目的

この関数は、Oracle Spatialが要求する2D座標のdouble配列を返します。

この関数は次の引数を使用します。

例16-20は、ordsgenerator関数を使用して、6つのdouble座標値からOracle Spatialダブル配列を作成する方法を示しています。

例16-20 Oracle Spatialジオメトリ・タイプを使用したOracle CQL問合せ

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>

to_Geometry

構文

to_geometry.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、oracle.spatial.geometry.JGeometryタイプを3Dのcom.oracle.cep.cartridge.spatial.Geometryタイプに変換します。指定されたジオメトリがすでにGeometryタイプおよび3Dジオメトリである場合、変換は行われません。指定されたジオメトリが2Dのジオメトリの場合、z座標を埋め込むことでジオメトリは3Dに変換されます。

このメソッドは次の引数を使用します。

例16-21は、to_Geometryメソッドの使用方法を示しています。

例16-21 Geometry.to_Geometryを使用したOracle CQL問合せ

<view id="LocStream" schema="customerId loc">
    select 
        customerId, 
        com.oracle.cep.cartridge.spatial.Geometry.to_Geometry(geom) 
    from 
        CustomerLocStream
</view>

to_JGeometry

構文

to_jgeometry.gifについては周囲のテキストで説明しています。

目的

このcom.oracle.cep.cartridge.spatial.Geometryメソッドは、com.oracle.cep.cartridge.spatial.Geometryオブジェクトを2Dタイプのoracle.spatial.geometry.JGeometryに変換します。

このメソッドは次の引数を使用します。

例16-22は、to_JGeometryメソッドの使用方法を示しています。

例16-22 Geometry.to_JGeometryを使用したOracle CQL問合せ

<view id="LocStream" schema="customerId loc">
    select 
        customerId, 
        com.oracle.cep.cartridge.spatial.Geometry.to_JGeometry(geom) 
    from 
        CustomerLocStream
</view>