2. 最初のステップ
2.1. Debian ベースのシステムへのインストール
ここでは (Ubuntuと派生ディストロを含む) Debian ベースのシステムにおいて最低限の動作をするようなインストール手順を短く簡単に紹介します。とはいえ、他の多くのディストロや OS も QGIS Server のためのパッケージを提供しています。
注釈
Ubuntu では、管理者権限を必要とするコマンドの前に sudo
を付けることで、そのコマンドを一般ユーザーとして使用することができます。Debian では、sudo
を使用せず、管理者 (root
) として作業することができます。
要件や Debian ベースのシステムに QGIS Server をインストールするために必要な QGIS 公式レポジトリを追加する手順は QGIS のインストーラー ページに記載されています。少なくとも最新の LTR ( 長期リリース ) をインストールすることをおすすめします。
対象バージョンのレポジトリを設定し、QGIS Server をインストールできたなら、以下のファイルで正常にインストールされたことを確認できます。
/usr/lib/cgi-bin/qgis_mapserv.fcgi
下記のように出力されるなら、サーバは正常にインストールされたと言えます。
注釈
QGIS のバージョンによっては、qgis_mapserv.fcgi
を実行した時の出力はいくらか異なることがあります。
QFSFileEngine::open: No file name specified
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
Content-Length: 206
Content-Type: text/xml; charset=utf-8
<ServiceExceptionReport version="1.3.0" xmlns="https://www.opengis.net/ogc">
<ServiceException code="Service configuration error">Service unknown or unsupported</ServiceException>
</ServiceExceptionReport>
注釈
下記の場合は QGIS がステータス400というコードを返しており、有効な HTTP セッションが存在しないためにリクエストが失敗したことを正しく認識していることが分かります。これはバグではなく、サーバが適切に機能していることを示すものです。
Application path not initialized
Application path not initialized
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver ECW to unload from GDAL_SKIP environment variable.
Warning 1: Unable to find driver JP2ECW to unload from GDAL_SKIP environment variable.
"Loading native module /usr/lib/qgis/server/libdummy.so"
"Loading native module /usr/lib/qgis/server/liblandingpage.so"
"Loading native module /usr/lib/qgis/server/libwcs.so"
"Loading native module /usr/lib/qgis/server/libwfs.so"
"Loading native module /usr/lib/qgis/server/libwfs3.so"
"Loading native module /usr/lib/qgis/server/libwms.so"
"Loading native module /usr/lib/qgis/server/libwmts.so"
QFSFileEngine::open: No file name specified
Content-Length: 102
Content-Type: application/json
Server: QGIS FCGI server - QGIS version 3.22.6-Białowieża
Status: 400
[{"code":"Bad request error","description":"Requested URI does not match any registered API handler"}]
サンプルプロジェクトを追加してみましょう。自作することもできますが、下記のように トレーニング用のデモデータ を使用することもできます。
mkdir /home/qgis/projects/
cd /home/qgis/projects/
wget https://github.com/qgis/QGIS-Training-Data/archive/release_3.22.zip
unzip release_3.22.zip
mv QGIS-Training-Data-release_3.22/exercise_data/qgis-server-tutorial-data/world.qgs .
mv QGIS-Training-Data-release_3.22/exercise_data/qgis-server-tutorial-data/naturalearth.sqlite .
もちろん、お好きなGISソフトを使ってこのファイルを開き、設定や利用可能なレイヤを見ることもできます。
QGISサーバーを正しく配置するにはHTTPサーバーが必要です。推奨される選択肢は Apache または NGINX です。
2.1.1. Apache HTTP サーバー
注釈
以下では、qgis.demo
をあなたのサーバーの名前または IP アドレスに置き換えてください。
Apacheと mod_fcgid をインストールします:
apt install apache2 libapache2-mod-fcgid
QGIS Serverはデフォルトのウェブサイト上で実行することができますが、これ専用に以下のように 仮想ホスト を設定してみましょう。
/etc/apache2/sites-available
ディレクトリに、次の内容のqgis.demo.conf
というファイルを作ります:<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName qgis.demo DocumentRoot /var/www/html # Apache logs (different than QGIS Server log) ErrorLog ${APACHE_LOG_DIR}/qgis.demo.error.log CustomLog ${APACHE_LOG_DIR}/qgis.demo.access.log combined # Longer timeout for WPS... default = 40 FcgidIOTimeout 120 FcgidInitialEnv LC_ALL "en_US.UTF-8" FcgidInitialEnv PYTHONIOENCODING UTF-8 FcgidInitialEnv LANG "en_US.UTF-8" # QGIS log FcgidInitialEnv QGIS_SERVER_LOG_STDERR 1 FcgidInitialEnv QGIS_SERVER_LOG_LEVEL 0 # default QGIS project SetEnv QGIS_PROJECT_FILE /home/qgis/projects/world.qgs # QGIS_AUTH_DB_DIR_PATH must lead to a directory writeable by the Server's FCGI process user FcgidInitialEnv QGIS_AUTH_DB_DIR_PATH "/home/qgis/qgisserverdb/" FcgidInitialEnv QGIS_AUTH_PASSWORD_FILE "/home/qgis/qgisserverdb/qgis-auth.db" # Set pg access via pg_service file SetEnv PGSERVICEFILE /home/qgis/.pg_service.conf FcgidInitialEnv PGPASSFILE "/home/qgis/.pgpass" # if qgis-server is installed from packages in debian based distros this is usually /usr/lib/cgi-bin/ # run "locate qgis_mapserv.fcgi" if you don't know where qgis_mapserv.fcgi is ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews -SymLinksIfOwnerMatch Require all granted </Directory> <IfModule mod_fcgid.c> FcgidMaxRequestLen 26214400 FcgidConnectTimeout 60 </IfModule> </VirtualHost>
注釈
上記の設定オプションのいくつかは、サーバの 環境変数 と pg_service ファイル のセクションで説明しています。
ではQGIS Server のログと認証データベースを格納するディレクトリを作成しましょう:
mkdir -p /var/log/qgis/ chown www-data:www-data /var/log/qgis mkdir -p /home/qgis/qgisserverdb chown www-data:www-data /home/qgis/qgisserverdb
注釈
www-data
はDebianベースのシステムではApacheのユーザーで、Apacheがこれらの場所やファイルにアクセスできる必要があります。chown www-data...
コマンドはそれぞれのディレクトリとファイルの所有者をwww-data
に変更します。
これで、まだ有効になっていなければ、仮想ホストと``fcgid`` mod を有効にすることができます:
a2enmod fcgid a2ensite qgis.demo
新しい設定が反映されるようにApacheを再起動してください:
systemctl restart apache2
これでApacheは、http://qgis.demo へのリクエストに応答する必要があることがわかります。qgis.demo` が誰かわかるようにクライアントシステムをセットアップする必要もあります。そのためには、hosts ファイルに
127.0.0.1 qgis.demo
を追加します。# Replace 127.0.0.1 with the IP of your server. sh -c "echo '127.0.0.1 qgis.demo' >> /etc/hosts"
重要
qgis.demo.conf
と /etc/hosts
ファイルの両方が、セットアップが機能するように設定されている必要があることを忘れないでください。/etc/hosts
ファイルにアクセスし、qgis.demo
の名前をサーバーマシンがネットワーク上に持つIP(ローカルマシンからのみアクセスできるローカルIP 127.0.0.1
は指定しないでください)に指定することで、ネットワーク上の他のクライアント(Windowsやmacosマシンなど)からQGIS Serverへのアクセスをテストすることもできます。。*nix
マシンでは hosts
ファイルは /etc
にあり、Windowsでは C:
\Windows\System32\drivers\etc` ディレクトリの下にあります。Windowsではhostsファイルを開く前に管理者権限でテキストエディタを起動する必要があります。
これでQGIS Serverが http://qgis.demo で利用できます。確認するには、簡単には次をブラウザで入力します:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
2.1.2. NGINX HTTP Server
注釈
以下では、qgis.demo
をあなたのサーバーの名前または IP アドレスに置き換えてください。
NGINX を使用して QGIS Server を使用することもできます。Apache とは異なり、NGINX は FastCGI プロセスを自動的に起動しません。FastCGI プロセスは他の何かによって起動されます。
NGINXをインストールする:
apt install nginx
最初の選択肢として、spawn-fcgi または fcgiwrap を使って QGIS Server プロセスを起動し、管理することができます。どちらも公式の Debian パッケージがあります。X サーバーが動作しておらず、例えば印刷が必要な場合には、 xvfb を使用することができます。
もう一つの選択肢は、今日ほとんどのLinuxディストリビューションが使用しているGNU/Linuxのinitシステムである Systemd に依存することです。この方法の利点の1つは、他のコンポーネントやプロセスを必要としないことです。これは、シンプルでありながら堅牢で、本番環境でのデプロイメントに効率的であることを意図しています。
NGINXの設定
前の設定で使った include fastcgi_params; は、 /etc/nginx/fastcgi_params
からパラメータを追加するために重要です:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
さらに、いくつかの qgis-server-envar を使用して QGIS Server を設定することができます。NGINXの設定ファイル /etc/nginx/nginx.conf
では、以下のように fastcgi_param
命令を使ってこれらの変数を定義する必要があります:
location /qgisserver {
gzip off;
include fastcgi_params;
fastcgi_param QGIS_SERVER_LOG_STDERR 1;
fastcgi_param QGIS_SERVER_LOG_LEVEL 0;
fastcgi_pass unix:/var/run/qgisserver.socket;
}
FastCGIラッパー
警告
fcgiwrap はすでにSystemdサービスにラップされているので、spawn-fcgi よりもセットアップが簡単です。しかし、spawn-fcgiを使用するよりもはるかに遅いソリューションになります。fcgiwrapでは、リクエストごとに新しいQGIS Serverプロセスが作成されるため、QGISプロジェクトファイルの読み込みや解析を含むQGIS Serverの初期化処理がリクエストごとに行われます。spawn-fcgiを使用すると、QGIS Serverプロセスはリクエストの間中存続するため、パフォーマンスが大幅に向上します。そのため、spawn-fcgiは実運用での使用を推奨します。
spawn-fcgi
spawn-fcgi を使いたい場合は:
最初のステップはパッケージをインストールすることです:
apt install spawn-fcgi
次に以下のブロックをNGINXサーバー設定に導入します:
location /qgisserver { gzip off; include fastcgi_params; fastcgi_pass unix:/var/run/qgisserver.socket; }
そしてNGINXを再起動して新しい設定を有効にします:
systemctl restart nginx
最後に、spawn-fcgi用のデフォルトのサービスファイルがないので、ターミナルでQGIS Serverを手動で起動する必要があります:
spawn-fcgi -s /var/run/qgisserver.socket \ -U www-data -G www-data -n \ /usr/lib/cgi-bin/qgis_mapserv.fcgi
これでQGIS Serverが http://qgis.demo/qgisserver から利用できます。
注釈
spawn-fcgiを使用する場合、サーバを実行する前に環境変数を直接定義することができます。例: export QGIS_SERVER_LOG_STDERR=1
もちろん、起動時や好きな時にQGIS Serverを起動するinitスクリプトを追加することもできます。例えば、systemd を使用して:
この内容でファイル
/etc/systemd/system/qgis-server.service
を編集します:[Unit] Description=QGIS server After=network.target [Service] ;; set env var as needed ;Environment="LANG=en_EN.UTF-8" ;Environment="QGIS_SERVER_PARALLEL_RENDERING=1" ;Environment="QGIS_SERVER_MAX_THREADS=12" ;Environment="QGIS_SERVER_LOG_LEVEL=0" ;Environment="QGIS_SERVER_LOG_STDERR=1" ;; or use a file: ;EnvironmentFile=/etc/qgis-server/env ExecStart=spawn-fcgi -s /var/run/qgisserver.socket -U www-data -G www-data -n /usr/lib/cgi-bin/qgis_mapserv.fcgi [Install] WantedBy=multi-user.target
次にこのサービスを有効にして起動します:
systemctl enable --now qgis-server
警告
spawn-fcgiは、上のコマンドでQGIS Serverプロセスをひとつだけ起動します。
fcgiwrap
fcgiwrap を使うのは spawn-fcgi を設定するよりとても簡単ですが、ずっと遅いです。
まず、対応するパッケージをインストールする必要があります:
apt install fcgiwrap
次に以下のブロックをNGINXサーバー設定に導入します:
1 location /qgisserver { 2 gzip off; 3 include fastcgi_params; 4 fastcgi_pass unix:/var/run/fcgiwrap.socket; 5 fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/qgis_mapserv.fcgi; 6 }
最後に NGINX と fcgiwrap を再起動し、新しい設定を反映させます:
systemctl restart nginx systemctl restart fcgiwrap
これでQGIS Serverが http://qgis.demo/qgisserver から利用できます。
Systemd
QGIS Serverを完全に使うには、特に印刷のために、X Serverが動作している必要があります。すでにX Serverが動作している場合は、systemdサービスを使うことができます。
この方法はQGIS Server をデプロイするために 2 つの Systemd ユニットに依存しています: Socket ユニット と Service ユニット 。
QGIS Server Socketユニット は、NGINXがQGIS Serverを起動して通信するために使用するファイルシステムソケットを定義して作成します。ソケットユニットは
Accept=false
で設定する必要があります。これはaccept()
システムコールの呼び出しがサービスユニットによって作成されたプロセスに委譲されることを意味します。ソケットユニットは/etc/systemd/system/qgis-server@.socket
にあり、これは実際にはテンプレートです:[Unit] Description=QGIS Server Listen Socket (instance %i) [Socket] Accept=false ListenStream=/var/run/qgis-server-%i.sock SocketUser=www-data SocketGroup=www-data SocketMode=0600 [Install] WantedBy=sockets.target
ソケットを有効にして起動します:
for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.socket; done
QGIS Server Serviceユニット はQGIS Serverプロセスを定義し、起動します。重要なのは、Serviceプロセスの標準入力がSocketユニットによって定義されたソケットに接続されていることです。これは
/etc/systemd/system/qgis-server@.service
にあるサービスユニットの設定でStandardInput=socket
を使用して設定する必要があります:[Unit] Description=QGIS Server Service (instance %i) [Service] User=www-data Group=www-data StandardOutput=null StandardError=journal StandardInput=socket ExecStart=/usr/lib/cgi-bin/qgis_mapserv.fcgi EnvironmentFile=/etc/qgis-server/env [Install] WantedBy=multi-user.target
注釈
QGIS Server 環境変数 は別のファイル
/etc/qgis-server/env
で定義されます。以下のようになります:QGIS_PROJECT_FILE=/etc/qgis/myproject.qgs QGIS_SERVER_LOG_STDERR=1 QGIS_SERVER_LOG_LEVEL=3
ソケットサービスを開始します:
for i in 1 2 3 4; do systemctl enable --now qgis-server@$i.service; done
最後に、NGINX HTTPサーバーの設定を紹介します:
upstream qgis-server_backend { server unix:/var/run/qgis-server-1.sock; server unix:/var/run/qgis-server-2.sock; server unix:/var/run/qgis-server-3.sock; server unix:/var/run/qgis-server-4.sock; } server { … location /qgis-server { gzip off; include fastcgi_params; fastcgi_pass qgis-server_backend; } }
新しい設定が反映されるようにNGINXを再起動します:
systemctl restart nginx
チュートリアル を共有してくれたOslandiaに感謝します。
2.1.3. Xvfb
QGIS Serverを完全に使用するためには、特に印刷のためにX Serverが動作している必要があります。サーバー上では通常インストールしないことを推奨しますので、 xvfb
を使って仮想 X 環境を構築してください。
サーバをグラフィック/X11環境で動作させている場合は、xvfbをインストールする必要はありません。詳細はhttps://www.itopen.it/qgis-server-setup-notes/ 。
パッケージをインストールする:
apt install xvfb
この内容でサービスファイル
/etc/systemd/system/xvfb.service
を作ります:[Unit] Description=X Virtual Frame Buffer Service After=network.target [Service] ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24 -ac +extension GLX +render -noreset [Install] WantedBy=multi-user.target
xvfb.service
の状態を有効にし、開始し、チェックします:systemctl enable --now xvfb.service systemctl status xvfb.service
その後、HTTPサーバーに応じて、DISPLAY パラメーターを設定するか、直接 xvfb-run を使います。
Apacheを使う:
Fcgid 設定に追加します (Apache HTTP サーバー を参照):
FcgidInitialEnv DISPLAY ":99"
新しい設定が反映されるように Apache を再起動します:
systemctl restart apache2
NGINXを使う
xvfb-run
を使った spawn-fcgi を実行する:xvfb-run /usr/bin/spawn-fcgi -f /usr/lib/cgi-bin/qgis_mapserv.fcgi \ -s /tmp/qgisserver.socket \ -G www-data -U www-data -n
HTTPサーバー設定の DISPLAY 環境変数を使用します。
fastcgi_param DISPLAY ":99";
2.2. Windowsへのインストール
QGIS Server は、OSGeo4W ネットワークインストーラー (https://qgis.org/en/site/forusers/download.html) の 64 ビット版を使用して Windows システムにインストールすることもできます。
簡単な手順は以下の通りです:
OSGeo4Wインストーラーをダウンロードして実行する
"Advanced Install"に従い、QGIS Desktop, QGIS Server apache, mod_fcgid パッケージをインストールします。
Apache は Windows ではサービスとして直接インストールされません。次が必要です:
C:\OSGeo4W64\
フォルダー(デフォルトのインストールパスが使用されている場合)のルートにあるOSGeo4W.bat
ファイルを右クリックし、 管理者として実行 を選択しますコンソールで、
apache-install.bat
を実行し、次が出力されます> apache-install.bat Installing the 'Apache OSGeo4W Web Server' service The 'Apache OSGeo4W Web Server' service is successfully installed. Testing httpd.conf.... Errors reported here must be corrected before the service can be started. ...
レポートにあるようにサービスは開始されています。しかし、カスタム設定がないため、サーバーの実行に失敗する可能性があります。
次の変更で
C:\OSGeo4w64\apps\apache\conf\httpd.conf
ファイルを編集します(他にも様々な組み合わせがあります):目的
既存のconfig
置換
(オプション)IPやポートを使ってリッスンするアドレスをカスタマイズします。エントリーはいくつでも追加できます。
Listen ${SRVPORT}
Listen localhost:8080
スクリプトファイルのある場所を示します
ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
ScriptAlias /cgi-bin/ "C:/OSGeo4W64/apps/qgis/bin/"
スクリプトフォルダーに許可を与えます
<Directory "${SRVROOT}/cgi-bin"> AllowOverride None Options None Require all granted </Directory>
<Directory "C:/OSGeo4W64/apps/qgis/bin"> SetHandler cgi-script AllowOverride None Options ExecCGI Require all granted </Directory>
スクリプトファイルに使うために拡張を有効にします。アンコメントして完成させます
#AddHandler cgi-script .cgi
AddHandler cgi-script .cgi .exe
さらにOSGeo4Wカスタム設定変数を加えます
# parse OSGeo4W apache conf files IncludeOptional "C:/OSGeo4W64/httpd.d/httpd_*.conf"
# parse OSGeo4W apache conf files IncludeOptional "C:/OSGeo4W64/httpd.d/httpd_*.conf" SetEnv GDAL_DATA "C:/OSGeo4W64/share/gdal" SetEnv QGIS_AUTH_DB_DIR_PATH "C:/OSGeo4W64/apps/qgis/resources"
Apacheウェブサーバーを再起動します
> apache-restart.bat
ブラウザウィンドウを開き、QGIS ServerへのGetCapabilitiesリクエストをテストします。
localhost:8080
をリッスンするように設定したIPとポートに置き換えてください。http://localhost:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
機能が :file:`XML`ファイルで返されるはずです。これでサーバを使用する準備が整いました。
2.3. プロジェクトを供給する
これでQGIS Serverがインストールされ、稼働しているので、あとは使うだけです。
言うまでもありませんが、作業にはQGISプロジェクトが必要です。もちろん、連絡先情報を定義したり、CRSに正確な制限を加えたり、あるいはいくつかのレイヤを除外したりして、プロジェクトを完全にカスタマイズすることもできます。これについては プロジェクトを設定する で後述します。
ただしここでは、上で説明したように、既に設定され、ダウンロードされている /home/qgis/projects/world.qgs
にある簡単なプロジェクトを使うことにします。
プロジェクトを開き、レイヤをざっと見てみると、4つのレイヤが利用できることが分かります:
airports
places
countries
countries_shapeburst
今のところ、完全なリクエストを理解する必要はありませんが、ウェブブラウザで次のように countries レイヤを取得することで、QGIS Serverのおかげで前のレイヤのいくつかを含むマップを取得することができます:
上記の手順に従ってApache HTTP Serverをインストールした場合:
http://qgis.demo/cgi-bin/qgis_mapserv.fcgi? MAP=/home/qgis/projects/world.qgs& LAYERS=countries& SERVICE=WMS& VERSION=1.3.0& REQUEST=GetMap& CRS=EPSG:4326& WIDTH=400& HEIGHT=200& BBOX=-90,-180,90,180
上記の手順に従ってNGINX HTTPサーバーをインストールした場合:
http://qgis.demo/qgisserver? MAP=/home/qgis/projects/world.qgs& LAYERS=countries& SERVICE=WMS& VERSION=1.3.0& REQUEST=GetMap& CRS=EPSG:4326& WIDTH=400& HEIGHT=200& BBOX=-90,-180,90,180
次の画像が表示されれば、QGIS Serverは正しく動作しています:
なお、MAP パラメータを与える代わりに、QGIS_PROJECT_FILE 環境変数を定義して、デフォルトでプロジェクトを使用することもできます (qgis-server-envar を参照)。
spawn-fcgi を使う例:
export QGIS_PROJECT_FILE=/home/qgis/projects/world.qgs
spawn-fcgi -f /usr/lib/bin/cgi-bin/qgis_mapserv.fcgi \
-s /var/run/qgisserver.socket \
-U www-data -G www-data -n
2.4. プロジェクトを設定する
新しい QGIS Server WMS、WFS、OAPIF、または WCS を提供するには、いくつかのデータを含む QGIS プロジェクトファイルを作成するか、現在のプロジェクトの 1 つを使用する必要があります。QGISのレイヤの色とスタイルを定義し、プロジェクトの CRS を定義します。次に、QGISサーバー メニューを開き、Service Capabilities タブに OWS に関する情報を入力します。
ダイアログのサービス機能が無効になっている場合は、最初に Service Capabilitiesを有効化 する必要があります。これはWMS、WFS、WCSのGetCapabilitiesレスポンスに表示されます。 Service Capabilitiesを有効化 にチェックを入れない場合、QGIS Serverは cgi-bin
フォルダにある wms_metadata.xml
ファイルにある情報を使用します。
2.4.1. WMS機能
WMS capabilities タブでは、Advertise範囲 の下のフィールドに X と Y の最小値と最大値を入力して、WMS GetCapabilities 応答で広告される範囲を定義できます。
現在のキャンバス領域を利用 をクリックすると、これらの値がQGIS マップキャンバスに現在表示されている範囲に設定されます。 CRS制限 をオンにすると、QGIS Server がマップをレンダリングする際に提供する座標参照系 (CRS) を制限することができます。これにより、WMS GetCapabilities レスポンスのサイズが小さくなるため、提供する CRS を制限することをお勧めします。下の ボタンを使用して、座標参照系セレクタからそのCRSを選択するか、使用中 をクリックしてQGISプロジェクトで使用されているCRSをリストに追加します。
プロジェクトで印刷レイアウトが定義されている場合、それらは GetProjectSettings
レスポンスにリストされ、GetPrint リクエストで印刷レイアウトのいずれかをテンプレートとして使用して印刷を作成することができます。これはWMS 1.3.0仕様に対するQGIS固有の拡張です。WMSによって公開される印刷レイアウトを除外したい場合は、チェックボックス| レイアウトの除外 をチェックし、下の ボタンをクリックします。次に、除外レイアウトリストに追加するために、 印刷レイアウトの選択 ダイアログから印刷レイアウトを選択します。
WMSからレイヤまたはレイヤーグループを除外したい場合は、 レイヤの除外 をチェックし、下の ボタンをクリックします。これにより 制限されたレイヤとグループを選択する ダイアログが開き、公開したくないレイヤとグループを選択することができます。複数のエントリを選択したい場合は Shift キーまたは Ctrl キーを使用してください。WMSのGetCapabilitiesレスポンスのサイズが小さくなり、クライアント側のロード時間が短縮されるため、不要なレイヤは公開しないことをお勧めします。
レイヤIDを名前に使う をチェックすると、 GetCapabilities
レスポンスや GetMap LAYERS
パラメータでレイヤを参照する際にレイヤ ID が使用されます。そうでない場合は、レイヤの名前、または定義されている場合は、短い名前 (ref:vectorservermenu を参照) が使用されます。
要求された GetFeatureInfo は、平文テキスト、XML、および GML で受け取ることができます。デフォルトは XML です。
必要であれば、 地物情報の応答にWKTジオメトリを加える をチェックします。これにより、各地物のバウンディングボックスが GetFeatureInfo レスポンスに含まれます。ref:`WITH_GEOMETRY ` パラメータも参照してください。
多くの Web クライアントはジオメトリの円弧を表示できないため、GetFeatureInfo レスポンスでクライアントに送信する前にジオメトリをセグメント化するオプションがあります。これにより、そのようなクライアントでも地物のジオメトリを表示することができます(例 地物のハイライト表示)。このオプションを有効にするには、 地物情報ジオメトリをセグメント化 をチェックする必要があります。
また、GetFeatureInfoジオメトリ精度 オプションを使用して、GetFeatureInfo ジオメトリの精度を設定することもできます。これにより、完全な精度を必要としない場合に帯域幅を節約することができます。
WMS GetCapabilitiesレスポンスでQGIS Serverに特定のリクエストURLを広告させたい場合は、公開URL フィールドに対応するURLを入力します。
さらに、:guilabel:`Maximums for GetMap request`の下にあるそれぞれのフィールドに最大幅と最大高さを入力することで、GetMapリクエストによって返されるマップの最大サイズを制限することができます。
JPEGイメージの品質 の係数を変更することができます。品質係数は0から100の範囲でなければなりません。0を指定すると最大圧縮、100を指定すると非圧縮になります。
地図帳印刷する地物数の上限 フィールドを設定することで、1回のリクエストで印刷する地図帳地物の上限を変更することができます。
QGIS Serverをタイルモードで使用する場合(TILEDパラメータ を参照)、タイルのバッファ(ピクセル) を設定することができます。推奨値は、QGISプロジェクトで最大のシンボルまたは線幅の大きさです。
レイヤーの一つが 地図ヒントディスプレイ を使用している場合(つまり式を使ってテキストを表示するために)これはGetFeatureInfo出力内で表示されます。レイヤーは、その属性のいずれかの値マップを使用している場合は、この情報には、GetFeatureInfo出力に表示されます。
2.4.2. WMTS機能
WMTS機能 タブでは、WMTSとして公開したいレイヤを選択し、PNGまたはJPEGとして公開するかどうかを指定できます。
WMTS機能 セクションの 公開URL フィールドにURLを入力すると、QGIS ServerはWMTS GetCapabilitiesレスポンスでこの特定のURLを広告します。
2.4.3. WFS/OAPIF機能
WFS/OAPIF機能 タブでは、WFSまたはOAPIFとして公開したいレイヤを選択し、更新、挿入、削除操作を許可するかどうかを指定することができます。
WFS機能 セクションの 公開URL フィールドに URL を入力すると、QGIS Server は WFS GetCapabilities レスポンスでこの特定の URL を広告します。
2.4.4. WCS機能
WCS機能 タブでは、WCSとして公開したいレイヤを選択することができます。
WCS機能 セクションの 公開URL フィールドにURLを入力すると、QGIS ServerはWCS GetCapabilitiesレスポンスでこの特定のURLを広告します。
2.4.5. OWSを微調整する
ベクタレイヤの場合、 属性 メニューで、各属性を公開するかどうかを定義することができます。デフォルトでは、すべての属性がWMSとWFSによって公開されます。特定の属性を公開したくない場合は、 WMS または WFS 列の対応するチェックボックスのチェックを外してください。
ダイアログのプロジェクトファイルにテキスト注記または SVG注記を追加することで、WMS が作成したマップに透かしを重ねることができます。注記の作成方法については 注記ツール セクションを参照してください。注記をWMSの出力に透かしとして表示するには、 注記テキスト ダイアログの 地図の位置固定 チェックボックスのチェックを外す必要があります。このチェックボックスには、注記ツールがアクティブな状態で注記をダブルクリックすることでアクセスできます。SVG注記の場合、( ダイアログの 一般情報 メニューで)プロジェクトを絶対パスで保存するように設定するか、SVG画像へのパスを有効な相対パスになるように手動で修正する必要があります。
2.5. サードパーティとの統合
QGIS Serverは、WMS、WFSなど の標準的なOGCウェブサービスを提供します。 したがって、さまざまなエンドユーザーツールで使用することができます。
2.5.1. QGIS Desktopとの統合
QGIS Desktopはマップデザイナーであり、QGIS Server はマップサーバーです。マップまたは QGIS プロジェクトは、OGC 標準を提供するために QGIS Server によって提供されます。これらのQGISプロジェクトは、ファイルでもデータベース内のエントリでもかまいません(QGIS Desktopの
を使用します)。さらに、QGIS Serverで使用されているプロジェクトを更新するには、専用の更新ワークフローを確立する必要があります(プロジェクトファイルをサーバーの場所にコピーし、QGIS Serverを再起動するなど)。今のところ、自動化された処理(メッセージキューサービスを介したサーバーのリロード)は実装されていません。
2.5.2. MapProxyとの統合
MapProxy は、タイルキャッシュサーバーで、あらゆるWMS/WMTSマップサーバーを読み込んで提供することができるため、QGISサーバーのウェブサービスに直接接続することができ、エンドユーザーエクスペリエンスを向上させることができます。
2.5.3. QWC2との統合
QWC2 は QGIS Server 専用のレスポンシブ Web アプリケーションです。レイヤ選択、地物情報など、高度にカスタマイズされたマップビューアを構築するのに役立ちます。また、認証や印刷サービスのような多くのプラグインが利用可能で、完全なリストはこの リポジトリ にあります。