🗺️
PostGISを使ってWMSサービスを構築する
前回、MapserverでWMSサービスを構築した。
ただし1つのgeotiffファイルのみを用いているため、WMSの1レイヤー=1geotiffファイルとなってしまい、geotiffのファイル数分のレイヤーが必要になってしまい、実際のサービスとしては利用しづらい。
(前々回)
(前回)
そこでデータベース(PostGIS)を利用して、要求された緯度経度に応じたgeotiffファイルを応答するWMSサービスを構築する。
RASTERデータ(geotiffファイル)をpostgisで提供する場合、geotiffファイルをPostgis内に保存するか、ファイルパスのみ保存し外部に(ファイルシステム上に)保存するかがあるため注意が必要。
今回は、テーブル内にgeotiffファイルを保存しない方法にする。
この時の注意は前回の記事のテーブルの作成の項を参照
テーブルにrasterデータを入れない場合、locationのカラムを作成すること。
また、raster2pgsqlコマンドについてもデータの投入の項の例の通り、「-R」オプションをつけることを忘れないように。
(raster2pgsqlの使い方)
postgis
テーブルの作成
# psql -U gis -h localhost -d mapserv -W
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE TABLE wmap (id bigserial primary key, rast raster, geom GEOMETRY (POLYGON , 4326), filename text, timestamp timestamp without time zone, location varchar);
Mapファイルの作成
DATAにPG(PostGISラスタドライバ)を付けた、postgisへの要求を記載する。
また、Mapserverのドキュメントにもあるように、タイル化されている場合は、mode=2をpostgisへの要求につけること。
MAP
NAME "mapserver_wms"
IMAGETYPE png
EXTENT -180 -90 180 90 # <Lower Left X> <Lower Left Y> <Upper Right X> <Upper Right Y>
SIZE 800 800
PROJECTION
"init=epsg:4326"
END
OUTPUTFORMAT
NAME png
DRIVER 'GD/PNG'
MIMETYPE 'image/png'
IMAGEMODE RGBA
EXTENSION 'png'
TRANSPARENT ON
END
OUTPUTFORMAT
NAME GTiff
DRIVER "GDAL/GTiff"
MIMETYPE "image/tiff"
IMAGEMODE INT16
EXTENSION "tif"
TRANSPARENT ON
END
WEB
IMAGEPATH "/var/www/html/ms/"
IMAGEURL "http://192.168.xx.xx/ms/"
TEMPLATE "/var/www/html/wms_template.html"
METADATA
"wms_title" "wms_server"
"wms_abstract" "abstract"
"wms_srs" "EPSG:4326"
"wms_enable_request" "*"
"wms_getmap_formatlist" "image/png,image/tiff"
END
END
LAYER
NAME "png"
OFFSITE 255 255 255
STATUS ON
TYPE RASTER
DATA "PG:host=localhost dbname=gis user=gis password=gis table=wmap mode=2"
METADATA
"wms_enable_request" "!*"
END
PROCESSING "BANDS=1"
PROCESSING "NODATA=65535"
PROCESSING "SCALE=AUTO"
PROJECTION
"init=epsg:4326"
END
METADATA
"wms_title" "wms_title"
"wms_getmap_formatlist" "image/png"
END
END
END
Discussion