Changes between Version 10 and Version 11 of ZooWorkshop/FOSS4GJapan/ja/CreatingOGRBasedWebServices


Ignore:
Timestamp:
Oct 29, 2010, 10:06:40 AM (9 years ago)
Author:
hayashi
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ZooWorkshop/FOSS4GJapan/ja/CreatingOGRBasedWebServices

    v10 v11  
    1717既に述べたように、このワークショップではサービスを記述する言語はCもしくはPython(もしくは両方!)を選ぶことができます。解説はC言語に沿って行いますが、この解説はPythonを利用する方にも非常に役立つ内容になっています。どちらの言語を使用するか決めたらインストラクターに報告してください。どちらの言語を選択されても、ワークショップの結果は同じです。
    1818
    19 == Preparing ZOO metadata file ==
    20 翻訳中・・・
     19== ZOO メタデータファイルの準備 ==
     20
     21ZOOメタデータの用意
     22
     23ZOOのサービスは、ZOOメタデータファイル(.zcfg)とZOOサービスプロバイダーと呼ばれる機能の応じたランタイム実装モジュールとの組み合わせによって成り立ちます。
     24まずはじめに順を追って.zcfgファイルを用意しましょう。
     25使う慣れているテキストエディタで {{{/home/user/zoows/sources/zoo-services/ws_sp directory}}}フォルダにある {{{Boundary.zcfg}}} を開いてください。
     26最初に、ファイル先頭にある括弧中に以下のようにサービス名を定義します。
     27
     28{{{
     29#!sh
     30[Boundary]
     31}}}
     32
     33この名前は非常に重要です。この名前はサービス名になりサービスプロバイダーの機能を表します。タイトル(Title)とこのサービスが何を行うのかについての短い要約(Abstract)は、利用者のために書いておくべきです。
     34
     35{{{
     36#!sh
     37Title = Compute boundary.
     38Abstract = Returns the boundary of the geometry on which the method is invoked.
     39}}}
     40
     41これらのメタデータ情報は !GetCapabilities リクエストによって返されます。
     42
     43他にも {{{processVersion}}} のような特定情報を追加することができます。
     44ZOOサービスが結果を保存する機能を持つかどうかを {{{storeSupported}}} パラメータの値を {{{true}}}もしくは {{{false}}}にすることで指定できます。また処理をバックグラウンドで行い、結果をステータスで通知するかどうかを {{{statusSupported}}} の値で指定します。
     45
     46{{{
     47#!sh
     48processVersion = 1
     49storeSupported = true
     50statusSupported = true
     51}}}
     52
     53ZOOサービス・メタデータファイルのメインのセクションでは、二つの重要事項を指定します。
     54In the main section of the ZOO Service metadata file, you must also specify two important things:
     55 * {{{serviceProvider}}}  サービスの関数を含むCの共用ライブラリの名前、またはPythonモジュール名
     56 * {{{serviceType}}}  サービスに使用するプログラミング言語の指定 (値は C または Python となります。あなたが使用する言語とあわせてください。)
     57
     58C !サービスプロバイダーの例 :
     59{{{
     60#!sh
     61serviceProvider=ogr_ws_service_provider.zo
     62serviceType=C
     63}}}
     64
     65この例ではBoundary関数を含む {{{ogr_ws_service_provider.zo}}} 共用ライブラリを使うことになります。ライブラリファイルはZOOカーネルと同じディレクトリに置いてください。
     66
     67Python !サービスプロバイダーの例 :
     68
     69{{{
     70#!sh
     71serviceProvider=ogr_ws_service_provider
     72serviceType=Python
     73}}}
     74
     75この例ではBoundary関数のPythonコードを含む {{{ogr_ws_service_provider.py}}} ファイルを使うことになります。
     76
     77
     78メインセクションでは、下記の例のように他の任意の情報を追加することもできます。
     79
     80{{{
     81#!sh
     82<MetaData>
     83    Title = Demo
     84</MetaData>
     85}}}
     86
     87
     88これで主要なメタデータ情報が定義できました。
     89次はZOOサービスで使われるデータの入力方法を定義します。サービスに必要な任意の入力を定義できます。
     90ZOOのカーネルは.zcfgファイルに定義したデータよりも多くのデータを処理するリクエストを受け付けることに注意してください。これらのデータはフィルタリングされることなくサービスへと渡されます。
     91この例のBoundaryサービスでは、一つのポリゴンが入力として使用され、それに対してBoundary関数が実行されます。
     92
     93入力データ宣言は !DataInputs ブロックで行われます。
     94書式はサービスを定義するときと同じで、名前は括弧でくくられています。同様にタイトルや要約を入力の {{{MetaData}}} セクションに追加することができます。
     95{{{minOccurs}}} と {{{maxOccurs}}} のパラメータは必ず設定してください。これらは、どのパラメータがサービス関数で実行するのに必要なのかをZOOカーネルに通知するのに使われます。
     96
     97
     98{{{
     99#!sh
     100[InputPolygon]
     101 Title = Polygon to compute boundary
     102 Abstract = URI to a set of GML that describes the polygon.
     103 minOccurs = 1
     104 maxOccurs = 1
     105 <MetaData lang="en">
     106     Test = My test
     107 </MetaData>
     108}}}
     109
     110メタデータは、どのようなタイプのデータがサービスでサポートされるのかを定義します。このBoundary関数の例では、入力するポリゴンはGMLファイル形式またはJSON文字列形式で提供することができます。
     111次のステップではデフォルトのデータ形式とサポートする入力フォーマットを定義しましょう。それぞれのフォーマットはタイプに応じて {{{LitteralData}}} または {{{ComplexData}}} のブロックで定義する必要があります。ここでは最初の例として {{{ComplexData}}} ブロックのみを使います。
     112
     113{{{
     114#!sh
     115<ComplexData>
     116 <Default>
     117   mimeType = text/xml
     118   encoding = UTF-8
     119 </Default>
     120 <Supported>
     121   mimeType = application/json
     122   encoding = UTF-8
     123 </Supported>
     124</ComplexData>
     125}}}
     126
     127次に、同様のメタデータ情報をサービスの出力についても定義します。{{{DataOutputs}}} のブロック内に次のように定義します。
     128
     129{{{
     130#!sh
     131[Result]
     132 Title = The created geometry
     133 Abstract = The geometry containing the boundary of the geometry on which the method  was invoked.
     134 <MetaData lang="en">
     135   Title = Result
     136 </MetaData>
     137 <ComplexData>
     138  <Default>
     139   mimeType = application/json
     140   encoding = UTF-8
     141  </Default>
     142  <Supported>
     143   mimeType = text/xml
     144   encoding = UTF-8
     145  </Supported>
     146 </ComplexData>
     147}}}
     148
     149
     150この .zcfg ファイルのコピーは以下のURLからも入手できます :
     151
     152http://zoo-project.org/trac/browser/trunk/zoo-services/ogr/base-vect-ops/cgi-env/Boundary.zcfg
     153
     154ZOOメタデータファイルの修正が終わりましたら、ZOOのカーネルと同じディレクトリ (この例では {{{/usr/lib/cgi-bin}}})へコピーしてください。これで以下のURLのリクエストが実行できるはずです:
     155
     156http://localhost/zoo/?Request=DescribeProcess&Service=WPS&Identifier=Boundary&version=1.0.0
     157
     158返って来る ProcessDescriptions XML ドキュメントは、以下のようになっているはずです :
     159
     160[[Image(Practical introduction to ZOO - 4.png,width=550px,nolink)]]
     161
     162GetCapabilities と DescribeProcess を実行には .zfgファイルさえあれば完了します。簡単ですね?
     163このステップでは、ZOOカーネルに {{{Execute}}}をリクエストすれば、 以下のような {{{ExceptionReport}}} ドキュメントのレスポンスが返ってきます:
     164
     165[[Image(Practical introduction to ZOO - 5.png,width=550px,nolink)]]
     166
     167もしPythonのサービスで実行すれば、同じようなエラーメッセージが返ってきます :
     168
     169[[Image(Practical introduction to ZOO - 6.png,width=550px,nolink)]]
     170
    21171
    22172== ジオメトリサービスの実装 ==

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png