pygeoapiクイックスタート¶
pygeoapiは、OGC Open APIサービスをWeb上で迅速かつ容易に公開するためのツールです。(geo)pythonコミュニティの強力なオープンソースライブラリ上に構築されています。
このクイックスタートでは、ソフトウェアのセットアップ方法を説明し、特定ケースを想定して使用してみます。pygeoapiはビジネス、ビジネスケースを満たすために他のコンポーネントと組み合わされる製品なので、説明の途中で関連するソフトウェアをいくつか取り上げます。
前提知識¶
pygeoapiは空間ドメイン用のPython Webアプリケーションであるため、Webアプリケーションの概念と、グリッドおよびベクタフォーマット、OGC標準、投影システムなどの空間処理的側面を意識する必要があります。Pythonの知識が推奨されますが、OSGeoLiveからアプリケーションを実行しなくてもかまいません。
設定とサービスの開始¶
スタートメニューから http://localhost:5000 でアプリケーションを開きます。
を選択します。Webページユーザフォルダの
/usr/local/share/pygeoapi
へ行きファイルpygeoapi-config.yml
を配置します。このファイルには、サービスの構成が含まれています。コマンド
sudo nano pygeoapi-config.yml
でファイルを開きます。Title や Author など、ファイル内の一部のパラメータを更新します。ファイルを保存します。
端末を閉じてサービスを起動し直すなどして、サービスを再開します。
新しいサービスの構成¶
ここでは、ベクタ・データセットを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で設定することができます。
GeoJSONファイルをダウンロードし、tests/data フォルダーに配置します。
pygeoapi-config.yml ファイルを更新してpygeoapi に
countries
を新たなコレクションとして追加します。(ほかのコレクションの間に以下のスニペットを挿入します。YAMLの文法において重要なネスティングやインデントに注意してください)。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フォームを介してそれらのメソッドと直接対話することもできます。
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
を選択します。
新しい接続を作成するウィンドウが開いたら、サービスのURL http://localhost:5000 を入力します。
OKをクリックして、サービスで使えるコレクションをロードするため connect
します。
countries
コレクションを選択して、 ‘Add’ をクリックしてQGISマップにレイヤを追加します。