16 Web Feature Service(WFS)のサポート

Oracle Spatial and Graphには、Web Feature Service (WFS)のサポートが含まれています。

ノート:

  • Oracle Cloud MarketplaceからOracle Spatial Webサービスをデプロイできます。このパッケージ・アプリケーションを使用すると、Oracle Cloud Infrastructure (OCI)上のApache Tomcat Webサーバー・インスタンスにデプロイされたOracle Spatial Webサービス(Web Feature Service (WFS)、Web Coverage Services (WCS)およびCatalog Services for the Web (CSW))をインストールできます。
  • WFSを使用する前に、「空間Webサービスの概要」で説明されている概念を理解し、その章での説明に従って必要な構成作業を実行しておく必要があります。
  • 以前のリリースの、1つ以上のSYS.XMLTABLEINDEX型の索引を使用して索引付けされたデータがある場合には、アップグレード後に索引をアップグレードして再作成する前に、関連する索引を削除する必要があります(「アップグレード前およびアップグレード後に行う索引のメンテナンス(WFSおよびCSW)」を参照)。

16.1 WFSエンジン

この項では、Web Feature Serviceエンジンについて、クライアントとの関係およびデータベース・サーバーとの関係も含めて説明します。

WFSはJava Webアプリケーションとして実装され、WebLogic 12.1.3以上にデプロイできます。必要なJavaのバージョンはJDK 1.8以上です。

WFSにはメタデータ層があります。この層では、WFSリクエストへの応答で必要とされるメタデータがデータベースに格納されます。メタデータには空間列が含まれており、Oracle Spatial and Graphインタフェースを使用して空間列の問合せおよび処理が可能です。メタデータには、フィーチャの非空間属性と空間属性の関連付け、およびWeb Feature Serviceからクライアントに提供されるサービスも格納されます。

図16-1に、WFSのアーキテクチャを示します。

図16-1 Web Feature Serviceのアーキテクチャ

図16-1の説明が続きます
図16-1「Web Feature Serviceのアーキテクチャ」の説明

次に、図16-1について説明します。

  • WFSサーバーは、中間層の一部です。

  • WFSクライアントは、SOAP、KVPまたはXML形式のリクエストおよびレスポンスを介してWFSサーバーと通信できます。

  • WFSサーバーでは、データベースに対するJDBCコールを介して空間データおよびメタデータへのアクセスが実行されます。

  • データベースには、WFSのメタデータと空間データ、および管理操作用のPL/SQLパッケージとともにOracle Spatial and Graphが含まれます(「SDO_WFS_PROCESSパッケージ(WFSの処理)」および「SDO_WFS_LOCKパッケージ(WFS)」を参照)。

    各データベースではWFSスキーマを1つ保持でき、このスキーマはWebLogic Serverの1つのデータ・ソースに対応します。

16.2 WFS用のデータベースの構成

この項では、Oracle DatabaseのWFSスキーマ構成について説明します。

WFSフィーチャを公開するには、まずデータベースにWFSスキーマを構成する必要があります。このWFSスキーマは、その後、アプリケーション・コンテナ内のWFSインスタンスのJDBCデータ・ソースとして構成されます。

WFSスキーマを構成するには、DBA権限があるsystemユーザーとしてデータベースに接続し、次のコマンドを実行する必要があります。

EXEC MDSYS.sdo_wfs_process.grantMDAccessToUser('<user_name>');

前述のコマンドでは、<user_name>は、WFSメタデータ表へのアクセス権があるデータベース・ユーザー(WFSスキーマ)に相当します。なお、すべてのユーザーをWFSスキーマとして構成できます。ただし、実際の空間フィーチャがWFSスキーマとして格納されているユーザー・スキーマを使用することをお薦めします。

WFSスキーマが実際の空間フィーチャが格納されているユーザー・スキーマと異なる場合は、WFSスキーマに、WFSフィーチャの実装に使用される表に対するSELECTINSERTUPDATEDELETEおよびCREATE TRIGGER権限が必要になります。

現在のリリースでは特定のデータベースに対して構成できるWFSスキーマは1つのみであることに注意してください。これは、様々なスキーマに、SDO_GEOMETRY列を含む複数の表がある場合に、それらの表はすべて、公開後に同じWFSサービスで表示されるということです。

16.3 WFSエンジンの構成

このトピックでは、WFSに固有の構成およびデプロイメントの処理にフォーカスします。

このトピックのステップを実行する前に、「空間Webサービスのデプロイと構成」の情報を理解し、必要な操作を行っていることを確認してください。

16.3.1 WFSConfig.xmlファイルの編集

WFS管理コンソールの「構成ファイル」タブで、必要に応じて"コメント解除"および変更を行います。次の点を考慮してください。

  • ロギング・レベルは、OFF、SEVERE、WARNING、INFO(デフォルト)、CONFIG、FINE、FINER、FINESTまたはALLです。デフォルト値はINFOです。

    size_limitは任意の1ファイルに書き込むおおよその最大量(MB)を指定します。この値がゼロの場合、制限はありません。デフォルト値は10です

    file_countは循環する出力ファイル数を指定します。デフォルト値は10です。

  • プロキシ構成を使用すると、空間Webサービス・サーバーによって生成されるURLを管理できます。有用なシナリオとして、HTTPプロキシ・サーバーがユーザーからリクエストを受信してWebLogic Serverに渡し、プライベート・ネットワーク上のサーバーへのアクセスを制御して保護する場合があります。

  • 必要に応じて、wfs_query_timeout要素をコメント解除し、問合せのタイムアウト値を指定します。この値は、サーバー側のロックAPIのコール時に使用されます。この値は、負でない整数で、単位は秒です。デフォルト値は10秒。

  • 必要に応じて、wfs_lock_expiry要素をコメント解除し、デフォルトのWFSロック有効期限の値を構成します。これは、GetFeatureWithLockまたはLockFeatureリクエストでロックの有効期限の値が明示的に指定されていない場合のWFSロックの有効期限(分)です。デフォルト値は、4分です。

  • 必要に応じて、GMLの生成時にx、y座標の縦座標を逆にする必要があるかどうかについて空間参照システム(SRS)を確認する必要がある場合、gml_consider_coordinate_axis_sequence_orderingのコメントを解除し、値を1に設定します。

  • wfs_xsd_loc_urlwfs_ex_xsd_loc_urlおよびgml3_xsd_loc_url要素は非推奨で、使用されません。

16.3.2 WFSエンジンに対するデータ・ソースの設定

WFSエンジンに対してデータ・ソースを設定するには、次のステップに従います。

  1. WebLogic Serverコンソールにログインします。

  2. 左側のペインで、「ドメイン構造」「Data Sources」を選択します。

  3. 「新規」「汎用データ・ソース」の順にクリックします。

  4. 「新規JDBCデータ・ソースの作成」ページで、次のように入力します。

    1. 名前: 空白を含まない任意の名前

    2. JNDI名: jdbc/で始まる任意の名前

    3. データベースのタイプ: Oracle

  5. データベース・ドライバ「Oracle Driver (Thin) for Instance connections」を、「バージョン」「Any」を選択します。

  6. 「グローバル・トランザクションのサポート」を省略します。

  7. 「接続プロパティ」ページで、次の入力を行います。

    1. データベース名

    2. ホスト名

    3. ポート

    4. データベース・ユーザー名

    5. パスワード

  8. 次のページで、接続をテストします。

  9. 接続が正常の場合、このデプロイメントに対して適切なサーバー名(AdminServerまたは管理対象サーバー名)を選択します。

    各データベースではWFS用に構成されたスキーマを1つのみ保持でき、このスキーマはWebLogic Serverの1つのデータ・ソースに対応します。ただし、WebLogicではWFS用に構成されたデータ・ソースを複数保持できます。各データ・ソースには異なるURLを介してアクセスでき、URLの最後の部分はWebLogic Serverの構成されたデータ・ソース名に対応します。wfsdata1という名前のWLSデータ・ソースを使用したサンプル・リンクを次に示します。

    http://localhost:80/oraclespatial/wfs/wfsdata1?service=WFS& version=1.0.0&request=GetCapabilities

WFSエンジンをデプロイし、データ・ソースを作成したら、次のいずれかのGetCapabilitiesの問合せなどのWFSエンジンのテスト問合せを使用してデプロイメントをテストできます。

  • WFS 1.0.0の場合:

    http://<machine-name:port>/oraclespatial/wfs/<data source name>?request=GetCapabilities&service=WFS&version=1.0.0
  • WFS 1.1.0の場合:

    http://<machine-name:port>/oraclespatial/wfs/<data source name>?request=GetCapabilities&service=WFS&version=1.1.0

16.4 フィーチャ・タイプの管理

WFSでは、空間属性と非空間属性を持つフィーチャ・タイプがサポートされます。

フィーチャ・タイプでは、データベース表のコンテンツがフィーチャ・インスタンスとして公開されます。フィーチャ・タイプは、Oracle Spatial and Graphを使用して地理空間データを管理し、Oracle Databaseを使用して他の業務データを管理する場合に適しています。Spatial and Graph WFSの実装によって、特に、Webサービスを使用して実装されたサービス指向アーキテクチャ(SOA)システムにおいて、データへのアクセス方法が提供されます。

WFS管理コンソールでは、次のような操作を実行できます。

  • フィーチャ・タイプのパブリッシュ

  • フィーチャ・タイプの削除(パブリッシュの解除)

  • ログの表示と構成

  • 機能テンプレートの編集

フィーチャ・タイプのパブリッシュとパブリッシュの解除には2つの方法があります。

  • WFS管理コンソールの使用: フィーチャ・タイプのパブリッシュとパブリッシュの解除

  • SDO_WFS_PROCESS.Publish_FeatureTypes_In_Schemaプロシージャの使用とフィーチャ・タイプの削除

WFS管理コンソールの使用: フィーチャ・タイプのパブリッシュとパブリッシュの解除

WFS管理コンソールを使用してフィーチャ・タイプをパブリッシュするには、次のステップに従います。

  1. WebLogic Serverの資格証明を使用してWFS管理コンソールにログインします

  2. 「WFS」「フィーチャのパブリッシュ」の順にクリックします。

  3. 「使用可能な表」から、まだパブリッシュされていない表を右クリックします。

  4. 「公開」をクリックします。

前述のステップを繰り返して、別のフィーチャ・タイプをパブリッシュできます。

すでにパブリッシュされているプロシージャを削除するには、前述のステップを使用します。最後のステップで「公開」ではなく、「非公開」をクリックします。

SDO_WFS_PROCESS.Publish_FeatureTypes_In_Schemaプロシージャの使用

次のコマンドラインの例のように、SDO_WFS_PROCESS.Publish_FeatureTypes_In_Schemaプロシージャを使用して複数のフィーチャ・タイプをパブリッシュできます。

EXECUTE SDO_WFS_PROCESS.PUBLISH_FEATURETYPES_IN_SCHEMA('USER', 'http://www.myserver.com/user_data', 'udns', 'http://localhost:7003/oraclespatial/wfs', p_tablename_pattern=>'GEOD_STATES');

フィーチャ・タイプの削除

次のプロシージャを使用して、1つ以上のフィーチャ・タイプを削除できます。

16.5 機能のドキュメント(WFS)

機能のドキュメントは、GetCapabilitiesリクエストに対するレスポンスとしてWFSサーバーで生成されます。パブリッシュされているフィーチャ・タイプ(道路、河川など)およびサポートされる操作(挿入、削除など)を示します。

WFSサーバーでは機能テンプレートを使用します。フィーチャ・タイプおよび操作に関する情報がこのテンプレートに追加されて、機能のドキュメントが作成されます。

クライアントはHTTP GET/KVPプロトコルを使用して、次の機能のドキュメントにアクセスします。

http://<hostname:port>/oraclespatial/wfs/<data source name>/?request=GetCapabilities&service=WFS

前述の形式の説明:

  • hostnameは、アプリケーション・サーバーが実行されているシステムのホスト名です。

  • portは、アプリケーション・サーバーが実行されているポートの番号です。

  • oraclespatialは、Spatial and GraphのWebサービス・アプリケーションがマウントされるデフォルトのコンテキスト・ルートです。

  • data source nameは、空間データにアクセスするためにアプリケーション・サーバーで構成されたデータ・ソースです。WLSインスタンスでは複数のデータ・ソースを構成することが可能で、WFSは専用のURLを使用して各データ・ソースのデータを公開できます。

16.6 WFSの操作: XMLを使用したリクエストとレスポンスの例

このトピックでは、次の各操作について、WFSエンジンへのフィーチャ・リクエストの一部と、各リクエストに対するレスポンスを示します。

  • GetCapabilities

  • DescribeFeatureType

  • GetFeature

  • GetFeatureWithLock

  • LockFeature

  • 次のトランザクション・タイプを指定するサブ要素を含むトランザクション

    • Insert

    • Update

    • Delete

この項のいくつかの例で、「座標系変換の例」で使用したCOLA_MARKETS_CS表のフィーチャを参照します。MKT_ID列には各フィーチャの一意の数値IDが含まれ、NAME列には各フィーチャの名前(cola_acola_bcola_cまたはcola_d)が含まれ、SHAPE列には各フィーチャと関連付けられたジオメトリが含まれます。

例16-1 GetCapabilitiesリクエスト(WFS)

例16-1は、指定した名前空間URLで、WFSという名前のWFSサーバーの機能を取得するリクエストです。このリクエストでは、機能のドキュメント(「機能のドキュメント」を参照)が戻されます

<?xml version="1.0" ?>
<GetCapabilities
   service="WFS"
   version="1.0.0"
   xmlns="http://www.opengis.net/wfs" />

例16-2 GetCapabilitiesのレスポンス(WFS)

例16-2は、例16-1のリクエストに対するレスポンスからの抜粋です。

<WFS_Capabilities xmlns="http://www.opengis.net/wfs" version="1.0.0" xmlns:ogc="http://www.opengis.net/ogc" xmlns:myns="http://www.example.com/myns">
  <Service>
    <Name> Oracle WFS </Name>
    <Title> Oracle Web Feature Service </Title>
    <Abstract> Web Feature Service maintained by Oracle </Abstract>
    <OnlineResource>http://localhost:8888/SpatialWS-SpatialWS-context-root/wfsservlet</OnlineResource>
  </Service>
  <Capability>
    <Request>
      <GetCapabilities>
        <DCPType>
          <HTTP>
            <Get onlineResource="http://localhost:8888/SpatialWS-SpatialWS-context-root/wfsservlet"/>
          </HTTP>
        </DCPType>
        <DCPType>
          <HTTP>
            <Post onlineResource="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort"/>
          </HTTP>
        </DCPType>
      </GetCapabilities>
      <DescribeFeatureType>
        <SchemaDescriptionLanguage>
          <XMLSCHEMA/>
        </SchemaDescriptionLanguage>
        <DCPType>
          <HTTP>
            <Post onlineResource="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort"/>
          </HTTP>
        </DCPType>
      </DescribeFeatureType>
      <GetFeature>
        <ResultFormat>
          <GML2/>
        </ResultFormat>
        <DCPType>
          <HTTP>
            <Post onlineResource="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort"/>
          </HTTP>
        </DCPType>
      </GetFeature>
      <GetFeatureWithLock>
        <ResultFormat>
          <GML2/>
        </ResultFormat>
        <DCPType>
          <HTTP>
            <Post onlineResource="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort"/>
          </HTTP>
        </DCPType>
      </GetFeatureWithLock>
      <Transaction>
        <DCPType>
          <HTTP>
            <Post onlineResource="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort"/>
          </HTTP>
        </DCPType>
      </Transaction>
      <LockFeature>
        <DCPType>
          <HTTP>
            <Post onlineResource="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort"/>
          </HTTP>
        </DCPType>
      </LockFeature>
    </Request>
  </Capability>
  <FeatureTypeList>
    <Operations>
      <Insert/>
      <Update/>
      <Delete/>
      <Query/>
      <Lock/>
    </Operations>
  <FeatureType xmlns:myns="http://www.example.com/myns">
  <Name> myns:COLA</Name>
  <Title> LIST OF COLA MARKETS </Title>
  <SRS> SDO:8307</SRS>
</FeatureType><FeatureType xmlns:myns="http://www.example.com/myns">
  <Name> myns:COLAVIEW1 </Name>
  <Title> LIST OF COLA MARKET VIEW </Title>
  <SRS> SDO:8307</SRS>
</FeatureType><FeatureType xmlns:wfs="http://www.opengis.net/wfs"> 
  <Name xmlns:myns="http://www.example.com/myns1">myns:SampleFeature</Name>
  <Title>SAMPLE FEATURE</Title>
  <SRS>EPSG:32615</SRS>
</FeatureType></FeatureTypeList>
  <ogc:Filter_Capabilities xmlns:ogc="http://www.opengis.net/ogc">
    <ogc:Spatial_Capabilities>
      <ogc:Spatial_Operators>
        <ogc:BBOX/>
        <ogc:Equals/>
        <ogc:Disjoint/>
        <ogc:Intersect/>
        <ogc:Touches/>
        <ogc:Crosses/>
        <ogc:Within/>
        <ogc:Contains/>
        <ogc:Overlaps/>
        <ogc:Beyond/>
        <ogc:DWithin/>
      </ogc:Spatial_Operators>
    </ogc:Spatial_Capabilities>
    <ogc:Scalar_Capabilities>
      <ogc:Logical_Operators/>
      <ogc:Comparison_Operators>
        <ogc:Simple_Comparisons/>
        <ogc:Like/>
        <ogc:Between/>
        <ogc:NullCheck/>
      </ogc:Comparison_Operators>
      <ogc:Arithmetic_Operators>
        <ogc:Simple_Arithmetic/>
      </ogc:Arithmetic_Operators>
    </ogc:Scalar_Capabilities>
  </ogc:Filter_Capabilities>
</WFS_Capabilities>

例16-3 DescribeFeatureTypeリクエスト(WFS)

例16-3は、COLAという名前のフィーチャ・タイプを記述するリクエストです。

<?xml version="1.0" ?>
<wfs:DescribeFeatureType
   service="WFS"
   version="1.0.0"
   xmlns:wfs="http://www.opengis.net/wfs"
   xmlns:myns="http://www.example.com/myns"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-basic.xsd">
   <wfs:TypeName>myns:COLA</wfs:TypeName>
</wfs:DescribeFeatureType>

例16-4 DescribeFeatureTypeのレスポンス(WFS)

例16-4は、例16-3のリクエストに対するレスポンスです。レスポンスはXMLスキーマ定義(XSD)です。

<xsd:schema targetNamespace="http://www.example.com/myns" xmlns:wfs="http://www.opengis.net/wfs" xmlns:myns="http://www.example.com/myns" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="1.0.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="http://localhost:8888/examples/servlets/xsds/feature.xsd"/>
   <xsd:element name="COLA" type="myns:COLAType" substitutionGroup="gml:_Feature"/>
   <xsd:complexType name="COLAType">
      <xsd:complexContent>
         <xsd:extension base="gml:AbstractFeatureType">
            <xsd:sequence>
               <xsd:element name="MKT_ID" type="xsd:double"/>
               <xsd:element name="NAME" nillable="true">
                  <xsd:simpleType>
                     <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="32"/>
                     </xsd:restriction>
                  </xsd:simpleType>
               </xsd:element>
               <xsd:element name="SHAPE" type="gml:PolygonMemberType" nillable="true"/>
            </xsd:sequence>
            <xsd:attribute name="fid" type="xsd:double"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
</xsd:schema>

例16-5 GetFeatureリクエスト(WFS)

例16-5は、MKT_ID値が2より大きくNAME値がcola_cであるか、MKT_ID値が3より大きくNAME値がcola_dであるタイプCOLAのフィーチャのMKT_ID、NAMEおよびSHAPEプロパティを取得するリクエストです。

GetFeatureおよびGetFeatureWithLockでは<Query>要素および<PropertyName>要素を使用して選択するプロパティ名をリストしますが、問い合せるフィーチャ・タイプに含まれる任意の最上位レベルの要素を指定できます。その場合は、問合せへのレスポンスとして(ネストされた)コンテンツ全体が戻されることに注意してください。深さが一定でないXPathは、<Query>要素の直下の<PropertyName>要素ではサポートされませんが<Query>要素の下の<Filter>要素に含まれる<PropertyName>要素ではサポートされます(例16-5および例16-7を参照)

<?xml version="1.0" ?>
<wfs:GetFeature
   service="WFS"
   version="1.0.0"
   xmlns:wfs="http://www.opengis.net/wfs"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:myns="http://www.example.com/myns"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-basic.xsd">
   <wfs:Query typeName="myns:COLA">
      <ogc:PropertyName>myns:MKT_ID</ogc:PropertyName>
      <ogc:PropertyName>myns:NAME</ogc:PropertyName>
      <ogc:PropertyName>myns:SHAPE</ogc:PropertyName>
      <ogc:Filter>
          <ogc:And>
            <ogc:And>
                <ogc:PropertyIsGreaterThan>
                        <ogc:PropertyName>myns:COLA/myns:MKT_ID</ogc:PropertyName>
                        <ogc:Literal> 2 </ogc:Literal>
                </ogc:PropertyIsGreaterThan>
                <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>myns:COLA/myns:NAME</ogc:PropertyName>
                <ogc:Literal>cola_c</ogc:Literal>
                </ogc:PropertyIsEqualTo>
            </ogc:And>
            <ogc:Or>
                <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>myns:COLA/myns:MKT_ID</ogc:PropertyName>
                        <ogc:Literal>3</ogc:Literal>
                </ogc:PropertyIsEqualTo>
                <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>myns:COLA/myns:NAME</ogc:PropertyName>
                        <ogc:Literal>cola_d</ogc:Literal>
                </ogc:PropertyIsEqualTo>
            </ogc:Or>
          </ogc:And>
      </ogc:Filter>
   </wfs:Query>
</wfs:GetFeature>

例16-6 GetFeatureのレスポンス(WFS)

例16-6は、例16-5のリクエストに対するレスポンスです。

<?xml version = '1.0' encoding = 'UTF-8'?>
<wfs:FeatureCollection xsi:schemaLocation="http://www.example.com/myns http://localhost:8888/wfsservlet?featureTypeId=1 http://www.opengis.net/wfs ../wfs/1.0.0/WFS-basic.xsd" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <gml:boundedBy xmlns:gml="http://www.opengis.net/gml">
      <gml:Box srsName="SDO:8307">
         <gml:coordinates>3.0,3.0 6.0,5.0</gml:coordinates>
      </gml:Box>
   </gml:boundedBy>
   <gml:featureMember xmlns:gml="http://www.opengis.net/gml">
      <myns:COLA fid="3" xmlns:myns="http://www.example.com/myns">
         <myns:MKT_ID>3</myns:MKT_ID>
         <myns:NAME>cola_c</myns:NAME>
         <myns:SHAPE>
            <gml:Polygon srsName="SDO:8307" xmlns:gml="http://www.opengis.net/gml">
               <gml:outerBoundaryIs>
                  <gml:LinearRing>
                     <gml:coordinates decimal="." cs="," ts=" ">3.0,3.0 6.0,3.0
6.0,5.0 4.0,5.0 3.0,3.0 </gml:coordinates>
                  </gml:LinearRing>
               </gml:outerBoundaryIs>
            </gml:Polygon>
         </myns:SHAPE>
      </myns:COLA>
   </gml:featureMember>
</wfs:FeatureCollection>

例16-7 GetFeatureWithLockリクエスト(WFS)

例16-7は、MKT_ID値が2より大きく、NAME値がcola_cであるか、またはMKT_ID値が3であるタイプCOLAのフィーチャのMKT_ID、NAMEおよびSHAPEプロパティを取得し、そのフィーチャをロックするリクエストです。

<?xml version="1.0" ?>
<wfs:GetFeatureWithLock
   service="WFS"
   version="1.0.0"
   expiry="5"
   xmlns:wfs="http://www.opengis.net/wfs"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:gml="http://www.opengis.net/gml"
   xmlns:myns="http://www.example.com/myns"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
   <wfs:Query typeName="myns:COLA">
      <ogc:PropertyName>myns:MKT_ID</ogc:PropertyName>
      <ogc:PropertyName>myns:NAME</ogc:PropertyName>
      <ogc:PropertyName>myns:SHAPE</ogc:PropertyName>
      <ogc:Filter>
         <ogc:PropertyIsEqualTo>
            <ogc:PropertyName>myns:COLA/myns:MKT_ID</ogc:PropertyName>
            <ogc:Literal> 3 </ogc:Literal>
         </ogc:PropertyIsEqualTo>
      </ogc:Filter>
   </wfs:Query>
</wfs:GetFeatureWithLock>

例16-8 GetFeatureWithLockのレスポンス(WFS)

例16-8は、例16-7のリクエストに対するレスポンスです。

<wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs" lockId="1" xsi:schemaLocation="http://www.example.com/myns http://localhost:8888/SpatialWS-SpatialWS-context-root/wfsservlet?featureTypeId=1 " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <gml:boundedBy xmlns:gml="http://www.opengis.net/gml">
      <gml:Box srsName="SDO:8307">
         <gml:coordinates>3.0,3.0 6.0,5.0</gml:coordinates>
      </gml:Box>
   </gml:boundedBy>
   <gml:featureMember xmlns:gml="http://www.opengis.net/gml">
      <myns:COLA xmlns:myns="http://www.example.com/myns" fid="3">
         <myns:MKT_ID>3</myns:MKT_ID>
         <myns:NAME>cola_c</myns:NAME>
         <myns:SHAPE>
            <gml:Polygon srsName="SDO:8307">
               <gml:outerBoundaryIs>
                  <gml:LinearRing>
                     <gml:coordinates decimal="." cs="," ts=" ">3.0,3.0 6.0,3.0 6.0,5.0 4.0,5.0 3.0,3.0 </gml:coordinates>
                  </gml:LinearRing>
               </gml:outerBoundaryIs>
            </gml:Polygon>
         </myns:SHAPE>
      </myns:COLA>
   </gml:featureMember>
</wfs:FeatureCollection>

例16-9 LockFeatureリクエスト(WFS)

例16-9は、MKT_ID値が2のフィーチャをロックするリクエストです。

<?xml version="1.0" ?>
<wfs:LockFeature
   service="WFS"
   version="1.0.0"
   expiry="5"
   xmlns:wfs="http://www.opengis.net/wfs"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:gml="http://www.opengis.net/gml"
   xmlns:myns="http://www.example.com/myns"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
   <wfs:Lock typeName="myns:COLA">
      <ogc:Filter>
           <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>myns:COLA/myns:MKT_ID</ogc:PropertyName>
              <ogc:Literal> 2 </ogc:Literal>
           </ogc:PropertyIsEqualTo>
      </ogc:Filter>
   </wfs:Lock>
</wfs:LockFeature>

例16-10 LockFeatureのレスポンス(WFS)

例16-10は、例16-9のリクエストに対するレスポンスです。

<wfs:WFS_LockFeatureResponse xmlns:wfs="http://www.opengis.net/wfs">
   <wfs:LockId>2</wfs:LockId>
</wfs:WFS_LockFeatureResponse>

例16-11 Insertリクエスト(WFS)

例16-11は、WFSという名前のWFSサービスに関連付けられた表に、MKT_IDが5でNAMEがcola_eのフィーチャを挿入するリクエストです。

<?xml version="1.0"?>
<wfs:Transaction version="1.0.0" handle="TX01" service="WFS" xmlns="http://www.e
xample.com/myns" xmlns:myns="http://www.example.com/myns" xmlns:gml="http://ww
w.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.
opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<wfs:Insert handle="INSERT01" >
<myns:COLA fid="5" xmlns:myns="http://www.example.com/myns">
         <myns:MKT_ID>5</myns:MKT_ID>
         <myns:NAME>cola_e</myns:NAME>
         <myns:SHAPE>
            <gml:Polygon srsName="SDO:8307" xmlns:gml="http://www.opengis.net/gml">
               <gml:outerBoundaryIs>
                  <gml:LinearRing>
                     <gml:coordinates decimal="." cs="," ts=" ">1.0,3.0 6.0,3.0 6.0,5.0 4.0,5.0 1.0,3.0 </gml:coordinates>
                  </gml:LinearRing>
               </gml:outerBoundaryIs>
            </gml:Polygon>
         </myns:SHAPE>
      </myns:COLA>
</wfs:Insert>
</wfs:Transaction>

例16-12 Insertのレスポンス(WFS)

例16-12は、例16-11のリクエストに対するレスポンスです。

<?xml version = '1.0' encoding = 'UTF-8'?>
<wfs:WFS_TransactionResponse version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs">
   <wfs:InsertResult handle="INSERT01">
      <ogc:FeatureId fid="5" xmlns:ogc="http://www.opengis.net/ogc"/>
   </wfs:InsertResult>
   <wfs:TransactionResult handle="TX01">
      <wfs:Status>
         <wfs:SUCCESS/>
      </wfs:Status>
   </wfs:TransactionResult>
</wfs:WFS_TransactionResponse>

例16-13 Updateリクエスト(WFS)

例16-13は、WFSという名前のWFSサービスに関連付けられた表に含まれるフィーチャのうち、MKT_IDが2より大きく4より小さい、かつNAMEがNULL以外のフィーチャを更新するリクエストです。このリクエストには、指定したフィーチャのNAME値をcola_clに設定することが指定されています。

<?xml version="1.0"?>
<wfs:Transaction version="1.0.0" handle="TX01" service="WFS" xmlns="http://www.example.com/myns"
xmlns:myns="http://www.example.com/myns" xmlns:gml="http://www.opengis.net/gml"
xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.
opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<wfs:Update handle="UPDATE1" typeName="myns:COLA" >
<wfs:Property>
        <wfs:Name>myns:COLA/myns:NAME</wfs:Name>
        <wfs:Value>cola_c1</wfs:Value>
</wfs:Property>
<ogc:Filter>
          <ogc:And>
            <ogc:And>
                <ogc:PropertyIsGreaterThan>
                        <ogc:PropertyName>myns:COLA/myns:MKT_ID</ogc:PropertyName>
                        <ogc:Literal> 2 </ogc:Literal>
                </ogc:PropertyIsGreaterThan>
                <ogc:PropertyIsLessThan>
                        <ogc:PropertyName>myns:COLA/myns:MKT_ID</ogc:PropertyName>
                        <ogc:Literal> 4 </ogc:Literal>
                </ogc:PropertyIsLessThan>
            </ogc:And>
            <ogc:Not>
                <ogc:PropertyIsNull>
                        <ogc:PropertyName>myns:COLA/myns:NAME</ogc:PropertyName>
                </ogc:PropertyIsNull>
            </ogc:Not>
          </ogc:And>
</ogc:Filter>
</wfs:Update>
</wfs:Transaction>

例16-14 Updateのレスポンス(WFS)

例16-14は、例16-13のリクエストに対するレスポンスです。

<?xml version = '1.0' encoding = 'UTF-8'?>
<wfs:WFS_TransactionResponse version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs">
   <wfs:TransactionResult handle="TX01">
      <wfs:Status>
         <wfs:SUCCESS/>
      </wfs:Status>
   </wfs:TransactionResult>
</wfs:WFS_TransactionResponse>

例16-15 Deleteリクエスト(WFS)

例16-15は、WFSという名前のWFSサービスに関連付けられた表に含まれるフィーチャのうち、MKT_IDが3より大きくNAMEがcola_eのフィーチャおよびNAMEがNULL以外のフィーチャを削除するリクエストです。

<?xml version="1.0"?>
<wfs:Transaction version="1.0.0" handle="TX01" service="WFS" xmlns="http://www.example.com/myns" 
xmlns:myns="http://www.example.com/myns" xmlns:gml="http://www.opengis.net/gml" 
xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.
opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<wfs:Delete handle="DELETE1" typeName="myns:COLA" >
<ogc:Filter>
          <ogc:And>
            <ogc:And>
                <ogc:PropertyIsGreaterThan>
                        <ogc:PropertyName>myns:COLA/myns:MKT_ID</ogc:PropertyName>
                        <ogc:Literal> 3 </ogc:Literal>
                </ogc:PropertyIsGreaterThan>
                <ogc:PropertyIsEqualTo>
                        <ogc:PropertyName>myns:COLA/myns:NAME</ogc:PropertyName>
                        <ogc:Literal> cola_e </ogc:Literal>
                </ogc:PropertyIsEqualTo>
            </ogc:And>
            <ogc:Not>
                <ogc:PropertyIsNull>
                        <ogc:PropertyName>myns:COLA/myns:NAME</ogc:PropertyName>
                </ogc:PropertyIsNull>
            </ogc:Not>
          </ogc:And>
</ogc:Filter>
</wfs:Delete>
</wfs:Transaction>

例16-16 Deleteのレスポンス(WFS)

例16-16は、例16-15のリクエストに対するレスポンスです。

<?xml version = '1.0' encoding = 'UTF-8'?>
<wfs:WFS_TransactionResponse version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs">
   <wfs:TransactionResult handle="TX01">
      <wfs:Status>
         <wfs:SUCCESS/>
      </wfs:Status>
   </wfs:TransactionResult>
</wfs:WFS_TransactionResponse>

16.7 WFS管理コンソール

WFS管理コンソールでは、WebLogic Serverの資格証明を使用します。

Oracle Spatialサービス・ページを使用するには、すべての使用可能なデータ・ソース名のリストからデータ・ソースを選択します。(現在選択されているデータ・ソースは右上隅に表示されますが、いつでもそこで変更できます。)

WFSタブまたはメニューを使用すると、WFSフィーチャ・タイプを管理できます。「構成ファイル」(WFSConfig.xml用)、「機能」、「テンプレート」、「フィーチャのパブリッシュ」、「テスト」および「ログ」のサブタブがあります。次の操作を実行できます。

  • 「フィーチャのパブリッシュ」タブを使用したフィーチャのパブリッシュ/パブリッシュの解除。

  • 「構成ファイル」タブを使用したWFSConfig.xmlの更新。

  • 「機能テンプレート」タブを使用したGetCapabilitiesテンプレートの更新。

  • 「テスト」タブを使用し、空間制約および非空間制約に基づいたフィーチャの取得または問合せ。

  • 「テスト」を使用した新規フィーチャ・インスタンスの作成(挿入操作)。

  • 「テスト」タブを使用したフィーチャ・インスタンスの削除。

  • 「テスト」タブを使用したフィーチャ・インスタンスの更新。

  • 「ログ」タブを使用したWFSログ・ファイルの確認。

    「ログ」タブで、表示するファイルを選択できます。「リフレッシュ」をクリックすると、画面がロードされた以降に生成された新しいログ・メッセージが確認できます。特定のログ・ファイルをzipファイル形式でダウンロードすることもできます。

16.8 WFSの問題の診断

WFSログ・ファイルには診断情報が含まれています。

このようなログ・ファイルは、構成フォルダのlogディレクトリ内にあります。WFS管理コンソールでWFSの「ログ」タブを使用してWFSログ・ファイルを表示およびダウンロードできます。

このトピックでは、いくつかのタイプのエラー・メッセージとその対処方法について説明します。

“DataSource jdbc/wfs_admin_ds not found” — GetCapabilitiesレスポンス・エラー・メッセージ

次のようなレスポンスです(読みやすくするために再フォーマットしています)。

<?xml version='1.0' encoding='UTF-8'?>
<ows:ExceptionReport
  xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd" version="2.0.1">
  <ows:Exception exceptionCode="NoApplicableCode" locator="DataSource jdbc/wfs_admin_ds not found"/>
</ows:ExceptionReport>

これは、WFSデータ・ソースが構成されていないか、WebLogic Serverがデータベースに接続できないということです。WFSデータ・ソースの構成の詳細は、「WFSエンジンに対するデータ・ソースの設定」を参照してください。

WFSメタデータが適切に移入されていないことを示す例外

WFSメタデータが適切に移入されていない可能性がある場合、適切な権限を持つユーザーとして接続し、次の点を確認します。

  • フィーチャ・タイプがパブリッシュされ、MDSYS.WFS_FeatureType$表にあります。(この表はWFSサーバーで使用されます)。

  • カスタムSRS名の接頭辞が使用される場合、MDSYS.WFS_Srs$表に適切に移入されています。

新たにパブリッシュしたフィーチャ・タイプがどのレスポンスにも出現しない

パブリッシュしたフィーチャ・タイプがどのレスポンスにも出現しない場合、新しいフィーチャ・タイプをパブリッシュしたときにSDO_WFS_PROCESS.InsertFtMDUpdatedを使用していることを確認してください。

SDO_WFS_PROCESS.Publish_FeatureTypes_In_Schemaプロシージャを使用して、WFSスキーマにすべてのフィーチャ・タイプをパブリッシュすることもできます。

「ORA-00942: 表またはビューが存在しない」というエラー・メッセージ

WFSフィーチャを公開しようとすると、「表が公開されていません」というエラーが表示されることがあります。ログ・ファイルに「ORA-00942: 表またはビューが存在しない」というメッセージが含まれている場合は、WFSスキーマにWFSメタデータへのアクセスに必要な権限があることを確認してください。詳細は、WFS用のデータベースの構成を参照してください。

16.9 Oracle Workspace ManagerでのWFSの使用

Oracle Workspace Managerを使用して、リレーショナル・フィーチャを持つWFS表をバージョン対応することができます。

これを行うには、最初にSDO_WFS_LOCK.RegisterFeatureTableプロシージャを使用してWFS表を登録し、次にDBMS_WM.EnableVersioningプロシージャを実行する必要があります。(DBMS_WM PL/SQLパッケージの参照ドキュメントなど、Workspace Managerについては、『Oracle Database Workspace Manager開発者ガイド』を参照してください。)

作業領域を作成して、WFS-T (Web Feature Servicesトランザクション)インタフェースを使用することで、その作業領域に対してトランザクション型のWFS変更を実行できます。ただし、WFS-Tではなくインタフェースを使用するためには、データベース・トランザクションがWFS表で有効になるSQL*Plusセッションを使用する必要があります。これらのデータベース・トランザクションには、次のものが含まれます。

  • WFS表での更新操作および削除操作

  • 作業領域のメンテナンス操作(作業領域のリフレッシュ、マージなど)

WFS表でのデータベース・トランザクションを有効にするには、SDO_WFS_LOCK.EnableDBTxnsプロシージャ(「SDO_WFS_LOCKパッケージ(WFS)」を参照)をコールします。このプロシージャを実行した後は、データベース・トランザクションがWFS表で許可されており、WFSのトランザクションの間、WFS-Tセマンティクスはセッションが終了するまで保持されます。