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

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

注意:

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/XML形式のWFSリクエストおよびレスポンスを使用して、Webサービス・クライアントと通信できます。

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

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

ユーザー識別子およびユーザー・ラベルはLDAPで管理され、中間層と組み合せて認証が行われます。

16.2 WFSエンジンの構成

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

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

トピック:

16.2.1 WFSConfig.xmlファイルの編集

WFSConfig.xmlファイルで、必要に応じてコメントを解除したり、変更を加えます。次の点を考慮してください。

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

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

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

  • wfs_admin_conn_name要素をコメント解除し、アプリケーション・コンテナ(WebLogic Server)におけるspatial_wfs_admin_usrの接続名を指定できます。デフォルト値はjdbc/WFS_ADMIN_CONN_NAMEです。必要なデータ・ソースはこれのみです。

  • 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.2.2 WFSエンジンに対するデータ・ソースの設定

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

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

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

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

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

    1. 名前: WFS_ADMIN_CONN

    2. JNDI名: jdbc/WFS_ADMIN_CONN_NAME

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

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

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

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

    1. データベース名

    2. ホスト名

    3. ポート

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

    5. パスワード

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

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

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

  • WFS 1.0.0の場合:

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

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

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

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. 必要に応じて、表を確認します。「メタデータ」ページでメタデータを確認できます。

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

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

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

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.4 機能のドキュメント(WFS)

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

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

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

http://<system-name:port>/oraclespatial/wfs?request=GetCapabilities&service=WFS

前述の形式の説明:

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

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

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

下位互換として、SpatialWS-SpatialWS-context-root(または他の希望するルート名)を使用する場合、web.xmlファイルで<env-entry-name>oracle/spatial/ws/publish_url_as/contextPath</env-entry-name>要素の<env-entry-value>要素に希望する値を指定します。この場合、デフォルトのoraclespatial以外のルートを反映して他のファイル(application.xmlcontext.xmlweblogic.xmlwfs.wsdlおよびcsw202.wsdl)も変更する必要があります。

同様に、WFSのサーブレット・パスを変更する必要がある場合、web.xmlファイルの<env-entry-name>要素を<env-entry-name>oracle/spatial/ws/publish_url_as/servletPath/wfs</env-entry-name>に設定します

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

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

  • GetCapabilities

  • DescribeFeatureType

  • GetFeature

  • GetFeatureWithLock

  • LockFeature

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

    • Insert

    • Update

    • Delete

  • SyncCache (OGC仕様にはありません。SDO_WFS_PROCESS.Publish_FeatureTypes_In_Schemaはこの操作を使用して、WFSエンジン・キャッシュとデータベース内のパブリッシュしたフィーチャ・タイプの同期をとります)

この項のいくつかの例で、「座標系変換の例」で使用した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.6 WFS管理コンソール

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

このコンソールには次のタブがあります。

  • 「管理」タブ: WSConfig.xmlファイルを編集できます(その後、sdowsアプリケーションを再起動して変更を有効にする必要があります)。

  • WFSタブ: WFSフィーチャ・タイプを管理できます。「構成ファイル」(WFSConfig.xml用)、「機能」、「フィーチャのパブリッシュ」、「メタデータ」、「テスト」および「ログ」のサブタブがあります。地理フィーチャに対するデータ操作には、次のものがあります。

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

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

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

    • 「メタデータ」タブを使用した、フィーチャ・タイプに関連付けられている表の表示。

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

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

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

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

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

      「ログ」タブで、ロードするファイルを選択できます。表示をリフレッシュして、ログ・ファイルを選択した後の最新のメッセージをログ・ファイルから追加できます。特定のログ・ファイルをzipファイル形式でダウンロードすることもできます。

16.7 WFSの問題の診断

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

これらのログ・ファイルは、sdows.ear/WEB-INF/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_CapabilitiesInfo$表にタイムスタンプ付きで登録されています。

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

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

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

パブリッシュしたフィーチャ・タイプがどのレスポンスにも出現しない場合、WebLogic Serverをしばらく稼働させた後、新しいフィーチャ・タイプをパブリッシュしたときにSDO_WFS_PROCESS.InsertFtMDUpdatedを使用していることを確認してください。キャッシュの同期間隔の終了が待てない場合、wfs:SyncCacheリクエストを発行すると、WFSエンジン・キャッシュとデータベース内のパブリッシュしたフィーチャ・タイプを同期できます。

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

16.8 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セマンティクスはセッションが終了するまで保持されます。