../../_images/logo_pygeoapi.png ../../_images/OSGeo_community.png

pygeoapiクイックスタート

pygeoapiは、OGC Open APIサービスをWeb上で迅速かつ容易に公開するためのツールです。(geo)pythonコミュニティの強力なオープンソースライブラリ上に構築されています。

このクイックスタートでは、ソフトウェアのセットアップ方法を説明し、特定ケースを想定して使用してみます。pygeoapiはビジネス、ビジネスケースを満たすために他のコンポーネントと組み合わされる製品なので、説明の途中で関連するソフトウェアをいくつか取り上げます。

前提知識

pygeoapiは空間ドメイン用のPython Webアプリケーションであるため、Webアプリケーションの概念と、グリッドおよびベクタフォーマット、OGC標準、投影システムなどの空間処理的側面を意識する必要があります。Pythonの知識が推奨されますが、OSGeoLiveからアプリケーションを実行しなくてもかまいません。

設定とサービスの開始

  1. スタートメニューから Structure ‣ osgeolive ‣ appmenupath ‣ pygeoapi を選択します。Webページ http://localhost:5000 でアプリケーションを開きます。

  2. ユーザフォルダの /usr/local/share/pygeoapi へ行きファイル pygeoapi-config.yml を配置します。このファイルには、サービスの構成が含まれています。

  3. コマンド sudo nano pygeoapi-config.yml でファイルを開きます。

  4. Title や Author など、ファイル内の一部のパラメータを更新します。ファイルを保存します。

  5. 端末を閉じてサービスを起動し直すなどして、サービスを再開します。

    ../../_images/pygeoapi_screenshot.png

新しいサービスの構成

ここでは、ベクタ・データセットをpygeoapiにデプロイし、その機能をOGC API-Featuresとして公開します。OGC API - Fearures は、ベクタ機能をWebサービスとして公開するためのOGCの標準です。OGC API - Featuresは、WFSの代替となる OpenAPI機能です。

pygeoapiは、geopackage、PostGIS、Elasticsearch、WFSなど、ベクタソースとして使用する幅広いバックエンドをサポートしています。GDAL OGR プロバイダを経由して、ほぼ無制限に、他のベクタソース一式が追加できます。

OAPI-Featuresとして公開される興味深いデータセットは、複数の属性と他のリソースへのリンクを持つ実世界のデータで構成されています。OSGeoLiveには使えるデータセットがたくさんあります。例は、/var/www/html/openlayers/examples/data/geojson/countries.geojson にあります。GeoJSONプロバイダーを使用してpygeoapiで設定することができます。

  1. GeoJSONファイルをダウンロードし、tests/data フォルダーに配置します。

  2. pygeoapi-config.yml ファイルを更新してpygeoapi に countries を新たなコレクションとして追加します。(ほかのコレクションの間に以下のスニペットを挿入します。YAMLの文法において重要なネスティングやインデントに注意してください)。

  3. pygeoapiの再起動

countries:
   type: collection
   title: Countries
   description: Countries of the world
   keywords:
      - industry
   links:
      - type: text/html
        rel: canonical
        title: information
        href: https://openlayers.org
        hreflang: en-US
   extents:
      spatial:
         bbox: [-180,-90,180,90]
   providers:
      - type: feature
        name: GeoJSON
        data: /var/www/html/openlayers/examples/data/geojson/countries.geojson
        id_field: name

ブラウザで http://localhost:5000/collections/countries を開いて、コレクションの検証をおこなう

Webブラウザを使用したAPIのクエリー

サービスが利用できるようになったので、さまざまなクライアント・ツールを使ってクエリーを実行できます。コレクションの各機能は、HTML、GeoJSON、GMLなどの共通フォーマットで使用できます。開始するには、Webブラウザを使用してサービスをブラウズします。http://localhost:5000/collections/countries から各地物をドリルダウンすることができます。このサービスは、Webブラウザーを使用していることを(ヘッダーを受け入れて)自動的に検出し、地物のHTML表現を返します。右上隅には、acceptヘッダーをオーバーライドして地物の特定の表現(?f=geojson)を要求する明示的なリンクがあります。

各Open APIには、http://localhost:5000/openapi にインタラクティブなドキュメントページがあります。このインタラクティブなWebページでは、サービス内のさまざまなメソッドについて読むことができますが、Webフォームを介してそれらのメソッドと直接対話することもできます。

../../_images/openapidoc.png

OGC APIは、Webベストプラクティスにおける空間データ を意識して開発されています。ベストプラクティスの重要な側面の一つに、検索エンジン最適化があります。Pygeoapiでは、Open API標準の要件に加えて、クロールの最適化が追加されています。コレクションメタデータは、構造化された方法で検索エンジンによってクロールされ、Google Dataset Searchなどのツールでコレクションを検出可能にすることを目的としています。構造化データ機能を評価するには、YandexまたはGoogleのStructured Data Testingツールを使用します。各国コレクションページのhtmlソース(またはオンラインpygeoapiインスタンスのコレクションページのurl)を構造化データテストツールにコピーし、ツールが抽出できる構造化データを評価します。検索エンジンは、その情報をデータセットインデックスで使用します。

デスクトップGISのOAPI-Featuresを利用する

このクイックスタートでは、QGISを用いてサービスのクエリを行ないますが、例えば ArcGIS, FME, OpenLayers といった他のツールでも、類似のワークフローを実施できます。

QGIS 3.14 からは、OAPI-Features レイヤをベクタレイヤとして追加できます。add layer メニューから Add WFS / OAPI-Features layer を選択します。

../../_images/qgis-wfs.png

新しい接続を作成するウィンドウが開いたら、サービスのURL http://localhost:5000 を入力します。

OKをクリックして、サービスで使えるコレクションをロードするため connect します。

../../_images/qgis-layers.png

countries コレクションを選択して、 ‘Add’ をクリックしてQGISマップにレイヤを追加します。