可选的MapServer支持¶
使用WPS服务处理地理空间数据非常有用。将结果直接发布为wms、wfs或wcs资源更加方便。这是可能的,因为 ZOO-Project 1.3 使用 可选的MapServer支持 .因此,后者允许使用 动物园内核 本节详细介绍的具体内部机制。
备注
MapServer 是一个开源的wms/wfs/wcs服务器。通过阅读 documentation .
它是如何工作的?¶
如果请求 mimeType=image/png
发送到 动物园内核 ,后者将检测到 使用映射服务器 选项设置为“真”,它将自动:
一旦激活了MapServer支持,就不需要修改现有的WPS服务源代码。只需编辑它们各自的 Zoo服务配置文件 相应地归档。
备注
在矢量数据源输出的情况下,默认情况下,WMS和WFS配置都包含在生成的映射文件中。
备注
在栅格数据源输出的情况下,默认情况下,WMS和WCS配置都包含在生成的映射文件中。
根据请求,Zoo内核能够返回位置头和不同的请求类型:
在这种情况下,zoo内核将以kvp的形式返回getmap/getfeature/getcoverage请求。 href 结果。
在本例中,zoo kernel将返回getmap/getfeature/getcoverage请求的结果,作为上一个案例中使用的href的kvp。
在这种情况下,Zoo内核将在特定的位置头中将getmap/getfeature/getcoverage请求作为kvp返回,这意味着浏览器应该直接请求mapserver。
不管默认输出是什么 mimetype类型 由WPS服务返回,如果 使用映射服务器 在运行时找到选项。例如,如果 <Default>
和 <Supported>
块在zoo服务配置文件中找到,如下所示,这意味着服务默认返回GML3.1.0功能。
<Default>
mimeType = text/xml
encoding = UTF-8
schema = http://schemas.opengis.net/gml/3.1.0/base/feature.xsd
</Default>
<Supported>
mimeType = image/png
useMapserver = true
</Supported>
安装和配置¶
按照下面描述的步骤激活Zoo项目可选的MapServer支持。
先决条件¶
最新的 ZOO-Kernel 后备箱型
MapServer 版本>=6.0.1
首先通过查看SVN下载最新的动物园内核。使用下面的命令执行您以前签出的目录(在本例中,我们将使用 $PREV_SVN_CO
以设计此目录)。
svn checkout http://svn.zoo-project.org/svn/trunk/ $PREV_SVN_CO
cd $PREV_SVN_CO
然后解压缩MapServer存档(即 mapserver-6.0.1.tar.bz2
)进入 /tmp/zoo-ms-src
,并使用以下命令编译它:
cd /tmp/zoo-ms-src/mapserver-6.0.1
./configure --with-ogr=/usr/bin/gdal-config --with-gdal=/usr/bin/gdal-config \
--with-proj --with-curl --with-sos --with-wfsclient --with-wmsclient \
--with-wcs --with-wfs --with-postgis --with-kml=yes --with-geos \
--with-xml --with-xslt --with-threads --with-cairo
make
cp mapserv /usr/lib/cgi-bin
完成后,使用来自 $PREV_SVN_CO
目录,使用以下命令:
cd zoo-kernel
autoconf
./configure --with-python --with-mapserver=/tmp/zoo-ms-src/mapserver-6.0.1
make
sudo make install
主配置文件¶
打开并编辑 /usr/lib/cgi-bin/main.cfg
文件中添加以下内容 [main]
章节:
dataPath = /var/www/temp/
mapserverAddress=http://localhost/cgi-bin/mapserv
您还可以将以下行添加到 [main]
如果要对多边形、直线和点向量层使用默认样式,请选择“剖面”。
msStylePoly=STYLE COLOR 202 109 19 OUTLINECOLOR 105 105 105 WIDTH 3 END
msStyleLine=STYLE OUTLINECOLOR 202 109 19 WIDTH 3 END
msStylePoint=STYLE COLOR 202 109 19 OUTLINECOLOR 105 105 105 SYMBOL 0 SIZE 14 END
这个 dataPath
目录是必需的,必须属于Apache用户。
mkdir /var/www/temp/
chown -r apache:apache /var/www/temp/
A symbols.sym
此目录中需要文件。创建并在其中添加以下内容:
SYMBOLSET
SYMBOL
NAME "circle"
TYPE ellipse
FILLED true
POINTS
1 1
END
END
END
备注
WMS服务输出只需要一个符号定义(具有任何名称)。
此时将激活Zoo项目可选的MapServer支持。别忘了加上 mapserverAddress
和 msOgcVersion
参数到 main.cfg
文件以指定到MapServer的路径和服务使用的OGC WebService版本。
警告
动物园内核将发生故障(检查 NULL
值应更正此行为)如果 mapserverAddress
找不到参数
服务配置文件¶
使用映射服务器¶
为了激活特定服务的mapserver wms/wfs/wcs输出,请 useMapserver
参数必须添加到 <Default>
或 <Supported>
服务区 services-zcfg .如果 useMapserver=true
,这意味着该服务的输出结果是与gdal兼容的数据源,并且您希望它由MapServer自动发布为wms、wfs或wcs。
当在 <Default>
或 <Supported>
块,然后您必须知道对应的mimetype是什么:
text/xml:表示将通过WFS GetFeature请求(默认协议版本1.1.0)访问输出数据。
image/tiff:表示将通过WCS getcoverge请求访问输出数据(默认协议版本2.0.0)
与usemapserver选项耦合的任何其他mimetype:意味着输出数据将通过WMS getmap请求(默认协议版本1.3.0)进行访问。您可以通过向MapServer发送getCapabilities请求来检查支持的输出mimetype。
您得到相同的可选参数 msOgcVersion
至于 main.cfg
.这将指定这是服务要使用的特定协议版本(因此也可以将本地设置为服务,而不是全局设置)。
造型¶
您有不同的选项来定义使用服务返回的数据创建的层的样式。
MS样式¶
可选的 msStyle
参数还可用于定义自定义MapServer样式块(仅用于矢量数据源),如下所示:
msStyle = STYLE COLOR 125 0 105 OUTLINECOLOR 0 0 0 WIDTH 3 END
理科硕士¶
如果WPS服务输出单波段栅格文件,则可以添加 msClassify
参数并将其设置为 true
在输出完成数据中 <Default>
或 <Supported>
其zcfg文件的节点。这允许Zoo内核使用自己的默认样式定义,以便使用等效间隔对栅格进行分类。
msClassify = true
M包括¶
如果您想使用另一个使用服务结果的层,例如 heatmap ,然后您可以使用 msInclude
和 msLayer
输出中的选项 ComplexData
<Default>
或 <Supported>
其zcfg文件的节点。下面是将这两个选项用于关联映射文件的示例。
msInclude = /var/data/template.map
msLayer = heatmap
您可以在下面找到一个示例 /var/data/template.map
:
MAP
SIZE 1000 500
EXTENT -180 -90 180 90
NAME "test heat"
IMAGETYPE "png"
WEB
METADATA
"ows_srs" "epsg:4326 epsg:3857 epsg:900913"
"ows_enable_request" "*"
END # METADATA
END # WEB
PROJECTION
"+init=epsg:4326"
END # PROJECTION
LAYER
NAME "heatmap" # Corresponding to the msLayer defined
TYPE raster
CONNECTIONTYPE kerneldensity
CONNECTION "Result"
STATUS on
PROCESSING "RANGE_COLORSPACE=HSL"
PROCESSING "KERNELDENSITY_RADIUS=20"
PROCESSING "KERNELDENSITY_COMPUTE_BORDERS=ON"
PROCESSING "KERNELDENSITY_NORMALIZATION=AUTO"
OFFSITE 0 0 0
CLASS
STYLE
COLORRANGE "#0000ff00" "#0000ffff"
DATARANGE 0 32
END # STYLE
STYLE
COLORRANGE "#0000ffff" "#ff0000ff"
DATARANGE 32 255
END # STYLE
END # CLASS
END # LAYER
LAYER
NAME "points"
STATUS on
TYPE POINT
#DATA "/Library/WebServer/cache//ef76ee6642c1ea704e847e28120ba1ca.zca"
END # LAYER
END # MAPFILE
例子¶
一个例子 Zoo服务配置文件 为可选的MapServer支持配置的文件如下所示:
<Default>
mimeType = text/xml
encoding = UTF-8
schema = http://schemas.opengis.net/gml/3.1.0/base/feature.xsd
useMapserver = true
</Default>
<Supported>
mimeType = image/png
useMapserver = true
asReference = true
msStyle = STYLE COLOR 125 0 105 OUTLINECOLOR 0 0 0 WIDTH 3 END
</Supported>
<Supported>
mimeType = application/vnd.google-earth.kmz
useMapserver = true
asReference = true
msStyle = STYLE COLOR 125 0 105 OUTLINECOLOR 0 0 0 WIDTH 3 END
</Supported>
<Supported>
mimeType = image/tif
useMapserver = true
asReference = true
msClassify = true
</Supported>
在本例中,默认输出 mimeType
是 image/png
,因此将返回wms getmap请求,或者 image/tiff
将作为wcs getcoverge请求返回。
测试请求¶
可以使用任何服务测试可选的MapServer支持。简单 HelloPy 服务用于以下示例请求。
备注
以下示例需要包含shapefile(http://localhost/data/data.zip)和tif文件(http://localhost/data/demo.tif)的zip文件
按WFS GetFeatures请求访问远程压缩形状文件:
http://localhost/cgi-bin/zoo_loader.cgi?request=Execute&service=WPS&version=1.0.0&Identifier=HelloPy&DataInputs=a=Reference@xlink:href=http://localhost/data/data.zip&ResponseDocument=Result@asReference=true@mimetype=text/xml
以wms getmap请求的形式访问远程压缩形状文件:
http://localhost/cgi-bin/zoo_loader.cgi?request=Execute&service=WPS&version=1.0.0&Identifier=HelloPy&DataInputs=a=Reference@xlink:href=http://localhost/data/data.zip&ResponseDocument=Result@asReference=true@mimetype=image/png
访问远程TIFF作为WMS GETMAP请求:
http://localhost/cgi-bin/zoo_loader.cgi?request=Execute&service=WPS&version=1.0.0&Identifier=HelloPy&DataInputs=a=Reference@xlink:href=http://localhost/data/data.tiff&ResponseDocument=Result@asReference=true@mimetype=image/png
访问远程TIFF作为wcs getmap请求:
http://localhost/cgi-bin/zoo_loader.cgi?request=Execute&service=WPS&version=1.0.0&Identifier=HelloPy&DataInputs=a=Reference@xlink:href=http://localhost/data/data.tiff&ResponseDocument=Result@asReference=true@mimetype=image/tiff