Changes between Version 2 and Version 3 of ZooWorkshop/FOSS4GJapan/ja/CreatingOGRBasedWebServices
- Timestamp:
- Oct 27, 2010, 3:21:28 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ZooWorkshop/FOSS4GJapan/ja/CreatingOGRBasedWebServices
v2 v3 43 43 === バッファサービス作成 === 44 44 45 我々はバッファサービスを使用することができますが、他のサービスに比べ多くの引数を 取得可能です。実際コードは、境界や凸包、そして中心点生成サービスを実装する際に使用されるものと少々異なっているからです。45 我々はバッファサービスを使用することができますが、他のサービスに比べ多くの引数を必要とします。実際コードは、境界や凸包、そして中心点生成サービスを実装する際に使用されるものと少々異なっているからです。 46 46 47 バッファサービス は、ジオメトリを入力したものを取得しますが、使用するのは {{{BufferDistance}}のパラメータです。これにより、{{{BufferDistance}}が単純な整数値になるので、 {{{LitteralData}}}ブロックを定義できるでしょう。そのような種類の入力値を読み込んでアクセスすると、以前使用したのと同じ機能が使用されます。47 バッファサービスもまた、入力引数としてジオメトリを必要としますが、使用するのは {{{BufferDistance}} のパラメータです。これにより、単純な整数値として {{{BufferDistance}} の{{{LitteralData}}} ブロックを定義できるでしょう。そのような種類の入力値の読込処理は、以前使用したのと同じ機能が使用されます。 48 48 49 49 ==== C バージョン ==== 50 50 51 あなたが、最初の境界サービスのソースコードへ戻るならば、以下について非常に複雑にな ることに気づくべきではありません。実際、あなたはBufferDistanceのアクセスに加えて、ラインを変更する際に[http://www.gdal.org/ogr/ogr__api_8h.html#1ca0bd5c0fcb4b1af3c3973e467b0ec0 OGR_G_Buffer]が( {{{OGR_G_GetBoundary}}}の代わりに)呼び出されるべきだからです。ここに、全てのlcodeを示します:51 あなたが、最初の境界サービスのソースコードへ戻るならば、以下について非常に複雑になったとは気づかれないでしょう。実際、あなたはBufferDistance 引数のアクセスに加えて、[http://www.gdal.org/ogr/ogr__api_8h.html#1ca0bd5c0fcb4b1af3c3973e467b0ec0 OGR_G_Buffer] が( {{{OGR_G_GetBoundary}}} の代わりに)呼び出されるべように変更するだけです。ここに、全てのlcodeを示します: 52 52 53 53 {{{ … … 88 88 }}} 89 89 90 新しいコードは、あなたの{{{service.c}}} ファイルに挿入し、再コンパイルの後に {{{/usr/lib/cgi-bin/}}} ディレクトリにあるZOOサービスプロバイダーの旧バージョンと置き換わらなければなりません。あなたはもちろん、対応するZOOのメタデータファイルを同じディレクトリに置かなければなりません。90 新しいコードは、あなたの{{{service.c}}} ファイルに挿入し、再コンパイルの後に {{{/usr/lib/cgi-bin/}}} ディレクトリにあるZOOサービスプロバイダーの旧バージョンと置き換えなければなりません。もちろん、対応するZOOのメタデータファイルを同じディレクトリに置かなければなりません。 91 91 92 以前の説明にあったように、ZOOカーネルは、zcfg ファイルで定義されるよりも多くの引数を渡すことができます。なので、{{{Boundary.zcfg}}}ファイルを{{{Buffer.zcfg}}}と改名したコピーを使用して、バッファ識別子を記載してみましょう。その際、以前も行ったように {{{Execute}}} リクエストを用いてサービスをテストしてください。そうすると、{{{ResponseDocument}}}でバッファの結果を得られるでしょう。92 以前の説明にあったように、ZOOカーネルは、zcfg ファイルで定義されるよりも多くの引数を渡すことができます。ですから、{{{Boundary.zcfg}}} ファイルを {{{Buffer.zcfg}}} と改名したコピーを使用して、バッファ識別子を記載してみましょう。その際、以前も行ったように {{{Execute}}} リクエストを用いてサービスをテストしてください。そうすると、{{{ResponseDocument}}} でバッファの結果を得られるでしょう。 93 93 94 {{{BufferDistance}}} への入力がサービスをパスするならば、上のコードをチェックすることに注意したかもしれません。 もし、そうでなければデフォルト値として1を使用するようにして下さい。そうすると、なぜ前のクエリーにさらに入力する必要がないかがわかるからです。94 {{{BufferDistance}}} 入力値がサービスをパスするかどうか上のコードをチェックすることに注意しましょう。 もし、そうでなければデフォルト値として1を使用するようにして下さい。前の入力値を使わないようにするためです。 95 95 96 リクエストに !DataInputs値を加えることによって、ジオメトリのバッファを計算するのにあなたのサービスで使用された{{{BufferDistance}}} 値を変えることができます。KVPシンタックスを使用することで、各!DataInputsが、セミコロンによって分割されることに注意してください。96 リクエストに !DataInputs 値を加えることによって、ジオメトリのバッファを計算するのにあなたのサービスで使用された{{{BufferDistance}}} 値を変更することができます。KVP シンタックスを使用することで、各 !DataInputs が、セミコロンによって分割されることに注意してください。 97 97 98 98 以前のリクエスト: … … 108 108 }}} 109 109 110 {{{BufferDistance}}} 値を2に設定する場合、異なる結果が与えられるでしょう。なぜなら、ソースコード上で1をデフォルト値と定めたため、いかなるパラメータも渡されないからです。110 {{{BufferDistance}}} 値を 2 に設定する場合、異なる結果が与えられるでしょう。なぜなら、ソースコード上で1をデフォルト値と定めたため、いかなるパラメータも渡されないからです。 111 111 112 112 ここで、 http://localhost/test_services.html のHTMLフォームから使用するXML形式における同じクエリを見つけられるでしょう: … … 144 144 ==== Python バージョン ==== 145 145 146 すでにユーティリティ機能の createGeometryFromWFSとoutputResultを定義しているので、コードはこれと同じくらい簡単です:146 すでにユーティリティ機能の createGeometryFromWFS と outputResult を定義しているので、コードはこれと同じくらい簡単です: 147 147 148 148 {{{ … … 161 161 }}} 162 162 163 ここでは、[" BufferDistance"]["value"]のインプットを、ジオメトリインスタンスにおけるバッファ方法を引数として加えたのみです。一旦このコードを、ogr_ws_service_provider.py ファイルに追加した後で、ZOOカーネルのディレクトリの中に(もしくは、ZOOサービスプロバイダのルートディレクトリからインストールする形で)それをコピーしてください。また、次のセクションでBuffer.zcfgファイルを詳述する必要があることに注意してください。163 ここでは、["!BufferDistance"]["!value"] のインプットを、ジオメトリインスタンスにおけるバッファ方法を引数として加えたのみです。一旦このコードを、ogr_ws_service_provider.py ファイルに追加した後で、ZOOカーネルのディレクトリの中に(もしくは、ZOOサービスプロバイダのルートディレクトリからインストールする形で)それをコピーしてください。また、次のセクションで Buffer.zcfg ファイルを詳述する必要があることに注意してください。 164 164 165 ==== バッファ !MetadataFileファイル ====165 ==== バッファ メタファイル ==== 166 166 167 クライアントにサービスがこのパラメータをサポートするようにするため、 サービス・メタデータ・ファイルに{{{BufferDistance}}}を加えなければなりません。 そうした上で、あなたのオリジナルのBoundary.zcfgファイルをBuffer.zcfgファイルとしてコピーして、!DataInputsのブロックに以下のラインを加えてください。167 クライアントにサービスがこのパラメータをサポートすることを知らせるようにするため、 サービス・メタデータ・ファイルに {{{BufferDistance}}} を加えなければなりません。 そうした上で、あなたのオリジナルのBoundary.zcfg ファイルを Buffer.zcfg ファイルとしてコピーして、!DataInputs のブロックに以下のラインを加えてください。 168 168 169 169 {{{ … … 185 185 }}} 186 186 187 {{{minOccurs}}}は、パラメータの入力が任意であることを意味するために0が設定されているので、パスを通す必要はありません。 むしろ、ZOOカーネルは、任意のパラメータのためにデフォルト設定値とサービス機能にデフォルト値を通すことを知る必要があります。187 {{{minOccurs}}} は、パラメータの入力が任意であることを意味するために 0 が設定されているので、パスを通す必要はありません。 むしろ、ZOOカーネルは、任意のパラメータのためにデフォルト設定値とサービス機能にデフォルト値を通すことを知る必要があります。 188 188 189 あなたは、ここで {{{Buffer.zcfg}}} ファイルのフルコピーを取得できます。189 あなたは、ここで {{{Buffer.zcfg}}} ファイルのフルコピーを取得できます。 190 190 191 191 http://zoo-project.org/trac/browser/trunk/zoo-services/ogr/base-vect-ops/cgi-env/Buffer.zcfg 192 192 193 あなたは、バッファサービス のために!GetCapabilitiesや !DescribeProcess そして Execute をZOOカーネルにたずねることが出来ます。193 あなたは、バッファサービスついて !GetCapabilities や !DescribeProcess そして Execute をZOOカーネルにたずねることが出来ます。 194 194 195 195 [wiki:ZooWorkshop/FOSS4GJapan/ja/UsingZooFromOSGeoLiveVM Prev.] | [wiki:ZooWorkshop/FOSS4GJapan WorkShop table of content] | [wiki:ZooWorkshop/FOSS4GJapan/ja/BuildingWPSClientUsingOL Next]