LoginSignup
0
1

QGIS での WMS/WFS サーバ構築方法

Last updated at Posted at 2024-05-13

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 に含まれているため、サーバ設定の際のトラブルシューティングが簡単になります。
  1. OSGeo4W から OSGeo4W network installer をダウンロードします。

  2. インストーラーを実行し、アドバンスインストールを選択後、「次へ」ボタンを押下します。

  3. インターネットからインストールを選択後、「次へ」ボタンを押下します。

  4. ルートディレクトリが問題ないか確認後、「次へ」ボタンを押下します。

  5. 「次へ」ボタンを押下します。

  6. プロキシ接続等、特別なインターネット接続を行わない場合は、そのまま「次へ」ボタンを押下します。

  7. 任意のダウンロードサイトを選択後、「次へ」ボタンを押下します。

  8. パッケージリストの Web Services の下にある qgis-server を選択してインストールします。

  9. 依存関係に対応するパッケージをインストールにチェックを入れ、「次へ」ボタンを押下します。

  10. 上記のライセンス条項に同意しましたにチェックを入れ、「次へ」ボタンを押下します。

  11. インストールが完了したら、「完了」ボタンを押下し、インストールを完了します。

3. Apache セットアップ

3.1. Apache ダウンロード

  1. Apache のダウンロードページにアクセスし、httpd-2.4.59-240404-win64-VS17.zip をダウンロードします。

  2. ダウンロードしたファイルを展開し、Apache24 フォルダを C ドライブ直下にコピーします。

3.2. 環境変数設定

  1. Windows のシステム環境設定の編集で、システムのプロパティ・ダイアログを開き、「環境変数」ボタンを押下します。

  2. 「システム環境変数」欄の Path をダブルクリックし編集画面を開きます。

  3. 「新規」ボタンを押下します。

  4. C:\Apache24\bin\ 追加後、「OK」ボタンを押下して終了します。

  5. コマンドプロンプトを開き、httpd -v を実行します。
    バージョンが表示されたら、正しく PATH が通せています。

3.3. 設定ファイルの変更

  1. コードエディタ等で C:\Apache24\conf\httpd.conf を開きます。

  2. 下記の通り修正し、8080 ポートでリスンするようにします。

     #Listen 12.34.56.78:80
    -Listen 80
    +Listen 8080
    
     #ServerName www.example.com:80
    +ServerName localhost:8080
    

3.4. サービス登録

  1. コマンドプロンプトで以下のコマンドを実行し、Apache をサービス登録します。
    httpd -k install
    
  2. Windows で services.msc を実行し、コンポーネント サービスプロンプトを開き、Apache がサービスとして登録されており、実行中となっていることを確認します。

3.5. Apache モジュール設定

  1. Apache Lounge から mod_fcgid モジュールをダウンロードし、解凍後、mod_fcgid.so ファイルを C:\Apache24\modules\ 配下に配置します。

3.6. QGIS 接続設定

QGIS サーバは Apache HTTP サーバを使用します。Apache を QGIS サーバと接続するように設定する必要があります。

  1. 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"
    
  2. 設定を適用するため、コマンドプロンプトを開き、以下のコマンドで Apache を再起動します。

    httpd -k restart
    

4. WMS サーバ設定

4.1. QGIS プロジェクトの作成

  1. QGIS を開き、新しいプロジェクトを作成します。

  2. 任意の GIS レイヤを取り込み、必要に応じてレイヤのプロパティを設定します。

  3. プロジェクト > プロパティを開きます。

  4. 性能向上のため、[QGISサーバー] の [Services Capabilities] タブを押下した後、Service Capabilitiesを有効化のチェックを外し、「適用」ボタンを押下します。

  5. [QGISサーバー] の [WMS] タブを押下し、"CRS制限" を有効化した後、「使用中」ボタンを押下し、使用中のCRS をリストに追加します。

    CRS制限の設定を行うことにより、データを表示またはリクエストする際に使用される座標系を限定することができます。
    これにより、意図しない座標系に起因する不具合を防いだり、パフォーマンスを向上させたりすることができます。

  6. [接続のテスト] にある「起動」ボタンを押下し、"プロジェクトは有効です" と表示されることを確認したら、「適用」ボタンを押下し、設定を終了します。

  7. プロジェクトファイル(.qgz または .qgs)を QGIS サーバがアクセスできるディレクトリに保存します。
    今回は、C:\OSGeo4W\apps\qgis\test.qgz として保存しています。

5. WMS 接続確認

5.1. Web ブラウザによる接続確認 (GetCapabilities)

  1. 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
  2. WMS サーバーが提供する機能や利用可能なデータに関する情報が XML 形式で表示されることを確認します。

5.2. Web ブラウザによる接続確認 (GetMap)

  1. 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" エラーが表示されることがあります。

  2. マップが表示されることを確認します。

    BBOX の範囲のレイヤデータが WIDTH および HEIGHT で指定したキャンバス上で、引き伸ばされて表示されます。

5.3. QGIS の WMS クライアントによる接続確認

  1. QGIS を開きます。

  2. レイヤ > レイヤを追加 > WMS/WMTS を追加 に移動します。

  3. WMS/WMTS 設定で「新規」ボタンを押下し、新規設定を追加します。

  4. 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
  5. 「接続」ボタンを押下し、WFS サーバに接続後、追加したいレイヤを選択し、「追加」ボタンを押下します。
    (これでレイヤが追加されるので、「閉じる」ボタンでウィンドウを閉じて問題ありません。)

  6. 選択したレイヤが表示されていることを確認します。

6. WFS サーバ設定

6.1. QGIS プロジェクトの作成

  1. QGIS を開き、新しいプロジェクトを作成します。
  2. 任意の GIS レイヤを取り込み、必要に応じてレイヤのプロパティを設定します。
  3. プロジェクト > プロパティを開きます。
  4. 性能向上のため、[QGISサーバー] の [Services Capabilities] タブを押下した後、Service Capabilitiesを有効化のチェックを外し、「適用」ボタンを押下します。
  5. [QGISサーバー] の [WFS/OAPIF] タブを押下し、表示されているベクターレイヤの発行済みにチェックを入れます。(更新挿入削除は、ニーズに合わせて任意でチェックを入れておきます。)
  6. [接続のテスト] にある「起動」ボタンを押下し、"プロジェクトは有効です" と表示されることを確認したら、「適用」ボタンを押下し、設定を終了します。
  7. プロジェクトファイル(.qgz または .qgs)を QGIS サーバがアクセスできるディレクトリに保存します。
    今回は、C:\OSGeo4W\apps\qgis\test2.qgz として保存しています。

7. WFS 接続確認

7.1. Web ブラウザによる接続確認 (GetCapabilities)

  1. 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
  2. WFS サーバーが提供する機能や利用可能なデータに関する情報が XML 形式で表示されることを確認します。

7.2. Web ブラウザによる接続確認 (GetFeature)

  1. 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
  2. WFS サーバーから地理空間データ(特徴)が XML 形式で表示されることを確認します。

7.3. QGIS の WFS クライアントによる接続確認

  1. QGIS を開きます。

  2. レイヤ > レイヤを追加 > WFS / OGC API - 地物レイヤを追加 に移動します。

  3. WFS サービスの名称URL を入力し、「OK」ボタンを押下します。

    尚、今回は以下の設定を行っています。

    項目 設定値
    名称 test2
    URL http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WFS&MAP=C:/OSGeo4W/apps/qgis/test2.qgz
  4. 「接続」ボタンを押下し、WFS サーバに接続後、追加したいレイヤを選択します。

  5. ビュー領域に重なる地物のみをリクエストするのチェックを外し、「追加」ボタンを押下します。
    (これでレイヤが追加されるので、「閉じる」ボタンでウィンドウを閉じて問題ありません。)

    ビュー領域に重なる地物のみをリクエストするがされている状態でレイヤを追加すると、以下のエラーが出力されるため、チェックを外すようにしています。

    • レイヤ W05-08_13-g_Stream: ジオメトリの座標軸順に関してサーバーと問題があるかもしれません。WFS接続の設定で、軸の向きを無視したり、軸順を反転することできます。
  6. 追加したレイヤが表示されていることを確認します。

    必要に応じて、レイヤのプロパティで形状等を変更することもできます。

参考資料

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1