QGIS では、外部システムと地理空間レイヤを連携する方法として、WMS, WMTS, WFS, OAPIF, WCS サーバ機能が用意されています。
各機能の概要や特徴、メリット/デメリット等を以下に示します。
今回は、GIS でよく利用されている WMS (Web Map Service) および WFS (Web Feature Service) サーバの設定を行った後、Web ブラウザや QGIS の WMS/WFS クライアント機能を用いて接続確認を行う手順について説明していこうと思います。
1. 前提条件
- QGIS がインストール済みであること。
- インストールされていない場合は、QGIS ダウンロードページからインストーラをダウンロード後インストールしてください。
- 本手順では、Windows 版 QGIS 3.34.6 を使用します。
- 公開する地理情報データが準備されていること。
2. OSGeo4W インストール
OSGeo4W は「Open Source Geospatial for Windows」の略で、Windows 向けのオープンソース地理空間ソフトウェアのパッケージです。このプロジェクトは、地理空間データを処理するためのさまざまなツールとライブラリを含む総合的なインストーラーを提供しています。
一般に OSGeo4W は以下のような用途で使用されます。
- 多様な地理空間ソフトウェアの配布: OSGeo4W は、QGIS、GRASS GIS、GDAL/OGR、MapServer、PostGIS など、多くのオープンソース地理空間プロジェクトを含んでいます。これにより、ユーザーは一つのパッケージを通じて、必要なソフトウェアを簡単にインストールできます。
- 依存関係の管理: 地理空間ソフトウェアはしばしば複数のライブラリや依存関係を必要とします。OSGeo4W はこれらの依存関係を管理し、ソフトウェアが問題なく動作するようにすることで、インストールプロセスを簡素化します。
- 環境の統一: OSGeo4W は、地理空間ツールが同じ環境下で統一的に動作するように設計されています。これにより、異なるツール間でのデータの互換性や連携が向上します。
- 更新とメンテナンス: OSGeo4W は定期的に更新されるため、最新の地理空間技術を簡単に取得できます。ユーザーは OSGeo4W を通じて最新バージョンへのアップグレードが可能です。
QGIS を中心とした WMS (Web Map Service) や WFS (Web Feature Service) サーバを構築する場合において、OSGeo4W は以下のような役割を果たします。
- サーバソフトウェアの提供: OSGeo4W は、QGIS Server や MapServer など、WMS や WFS サービスを提供するサーバソフトウェアを含んでいます。これにより、地理情報の Web 公開が容易になります。
- 環境設定のサポート: QGIS Server などの設定に必要な依存ライブラリやツールが OSGeo4W に含まれているため、サーバ設定の際のトラブルシューティングが簡単になります。
-
OSGeo4W から OSGeo4W network installer をダウンロードします。
3. Apache セットアップ
3.1. Apache ダウンロード
-
Apache のダウンロードページにアクセスし、
httpd-2.4.59-240404-win64-VS17.zip
をダウンロードします。 -
ダウンロードしたファイルを展開し、
Apache24
フォルダを C ドライブ直下にコピーします。
3.2. 環境変数設定
3.3. 設定ファイルの変更
-
コードエディタ等で
C:\Apache24\conf\httpd.conf
を開きます。 -
下記の通り修正し、8080 ポートでリスンするようにします。
#Listen 12.34.56.78:80 -Listen 80 +Listen 8080
#ServerName www.example.com:80 +ServerName localhost:8080
3.4. サービス登録
- コマンドプロンプトで以下のコマンドを実行し、Apache をサービス登録します。
httpd -k install
- Windows で
services.msc
を実行し、コンポーネント サービスプロンプトを開き、Apache がサービスとして登録されており、実行中となっていることを確認します。
3.5. Apache モジュール設定
-
Apache Lounge から mod_fcgid モジュールをダウンロードし、解凍後、
mod_fcgid.so
ファイルをC:\Apache24\modules\
配下に配置します。
3.6. QGIS 接続設定
QGIS サーバは Apache HTTP サーバを使用します。Apache を QGIS サーバと接続するように設定する必要があります。
-
Apache インストールディレクトリ内の
httpd.conf
ファイルを開き、QGIS サーバと接続するために以下のように修正します。- ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/" + ScriptAlias /cgi-bin/ "C:/OSGeo4W/apps/qgis/bin/"
-<Directory "${SRVROOT}/cgi-bin"> +<Directory "C:/OSGeo4W/apps/qgis/bin"> + SetHandler cgi-script AllowOverride None - Options None + Options ExecCGI Require all granted </Directory>
#AddHandler cgi-script .cgi + AddHandler cgi-script .cgi .exe
+# parse OSGeo4W apache conf files +IncludeOptional "C:\OSGeo4W\httpd.d\httpd_*.conf" +SetEnv GDAL_DATA "C:\OSGeo4W\share\gdal" +SetEnv QGIS_AUTH_DB_DIR_PATH "C:\OSGeo4W\apps\qgis\resources"
-
設定を適用するため、コマンドプロンプトを開き、以下のコマンドで Apache を再起動します。
httpd -k restart
4. WMS サーバ設定
4.1. QGIS プロジェクトの作成
-
QGIS を開き、新しいプロジェクトを作成します。
-
任意の GIS レイヤを取り込み、必要に応じてレイヤのプロパティを設定します。
-
性能向上のため、[QGISサーバー] の [Services Capabilities] タブを押下した後、Service Capabilitiesを有効化のチェックを外し、「適用」ボタンを押下します。
-
[QGISサーバー] の [WMS] タブを押下し、"CRS制限" を有効化した後、「使用中」ボタンを押下し、使用中のCRS をリストに追加します。
CRS制限の設定を行うことにより、データを表示またはリクエストする際に使用される座標系を限定することができます。
これにより、意図しない座標系に起因する不具合を防いだり、パフォーマンスを向上させたりすることができます。 -
[接続のテスト] にある「起動」ボタンを押下し、"プロジェクトは有効です" と表示されることを確認したら、「適用」ボタンを押下し、設定を終了します。
-
プロジェクトファイル(
.qgz
または.qgs
)を QGIS サーバがアクセスできるディレクトリに保存します。
今回は、C:\OSGeo4W\apps\qgis\test.qgz
として保存しています。
5. WMS 接続確認
5.1. Web ブラウザによる接続確認 (GetCapabilities)
-
Web ブラウザで GetCapabilities リスエストを行い、WMS サーバが動作しているかを確認します。
- http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities&MAP=C:/OSGeo4W/apps/qgis/test.qgz
5.2. Web ブラウザによる接続確認 (GetMap)
-
GetMap リスエストを行い、WMTS サーバからデータが取得できるかを確認します。
- http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&MAP=C:/OSGeo4W/apps/qgis/test.qgz&LAYERS=Sample_Ortho_30cm_8bit_3band_20190525_25&WIDTH=800&HEIGHT=600&CRS=EPSG:4326&BBOX=35.696669,139.518449,35.70216,139.52594
WMS は全範囲をすべて取得する仕様のため、レイヤの範囲が広い場合、
WIDTH
,HEIGHT
,BBOX
パラメータ等で範囲を絞らない場合、"The requested map size is too large" エラーが表示されることがあります。 -
BBOX
の範囲のレイヤデータがWIDTH
およびHEIGHT
で指定したキャンバス上で、引き伸ばされて表示されます。
5.3. QGIS の WMS クライアントによる接続確認
-
QGIS を開きます。
-
WMS サービスの名称と URL を入力し、「OK」ボタンを押下します。
尚、今回は以下の設定を行っています。
項目 設定値 名称 test URL http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&MAP=C:/OSGeo4W/apps/qgis/test.qgz -
「接続」ボタンを押下し、WFS サーバに接続後、追加したいレイヤを選択し、「追加」ボタンを押下します。
(これでレイヤが追加されるので、「閉じる」ボタンでウィンドウを閉じて問題ありません。)
6. WFS サーバ設定
6.1. QGIS プロジェクトの作成
- QGIS を開き、新しいプロジェクトを作成します。
- 任意の GIS レイヤを取り込み、必要に応じてレイヤのプロパティを設定します。
-
プロジェクト > プロパティ
を開きます。
- 性能向上のため、[QGISサーバー] の [Services Capabilities] タブを押下した後、Service Capabilitiesを有効化のチェックを外し、「適用」ボタンを押下します。
- [QGISサーバー] の [WFS/OAPIF] タブを押下し、表示されているベクターレイヤの発行済みにチェックを入れます。(更新や挿入、削除は、ニーズに合わせて任意でチェックを入れておきます。)
- [接続のテスト] にある「起動」ボタンを押下し、"プロジェクトは有効です" と表示されることを確認したら、「適用」ボタンを押下し、設定を終了します。
- プロジェクトファイル(
.qgz
または.qgs
)を QGIS サーバがアクセスできるディレクトリに保存します。
今回は、C:\OSGeo4W\apps\qgis\test2.qgz
として保存しています。
7. WFS 接続確認
7.1. Web ブラウザによる接続確認 (GetCapabilities)
-
Web ブラウザで GetCapabilities リスエストを行い、WFS サーバが動作しているかを確認します。
- http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities&MAP=C:/OSGeo4W/apps/qgis/test2.qgz
7.2. Web ブラウザによる接続確認 (GetFeature)
-
GetFeature リスエストを行い、WFS サーバからデータが取得できるかを確認します。
- http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=W05-08_13-g_Stream&MAP=C:/OSGeo4W/apps/qgis/test2.qgz
- WFS サーバーから地理空間データ(特徴)が XML 形式で表示されることを確認します。
7.3. QGIS の WFS クライアントによる接続確認
-
QGIS を開きます。
-
WFS サービスの名称と URL を入力し、「OK」ボタンを押下します。
尚、今回は以下の設定を行っています。
項目 設定値 名称 test2 URL http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WFS&MAP=C:/OSGeo4W/apps/qgis/test2.qgz -
ビュー領域に重なる地物のみをリクエストするのチェックを外し、「追加」ボタンを押下します。
(これでレイヤが追加されるので、「閉じる」ボタンでウィンドウを閉じて問題ありません。)
ビュー領域に重なる地物のみをリクエストするがされている状態でレイヤを追加すると、以下のエラーが出力されるため、チェックを外すようにしています。
レイヤ W05-08_13-g_Stream: ジオメトリの座標軸順に関してサーバーと問題があるかもしれません。WFS接続の設定で、軸の向きを無視したり、軸順を反転することできます。
参考資料
- "QGIS Server の始め方 — QGIS ドキュメント", https://docs.qgis.org/3.34/ja/docs/server_manual/getting_started.html#installation-on-windows
- "WMS (Web Map Service) — QGIS ドキュメント", https://docs.qgis.org/3.22/ja/docs/training_manual/online_resources/wms.html
- "QGIS Server とそのサービス — QGIS ドキュメント", https://docs.qgis.org/3.34/ja/docs/server_manual/services.html