MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.7 Adding a wms layer
前言
Add OGC WMS Layers(添加一个Open Geospatial Consortium web-based interoperability service 图层)。
MapServer可以使用来之其他地图服务器的的图层。这种情况下,MapServer将作为一个WMS(或WFS)客户端。当然,MapServer也可以将数据共享层提供给其他地图服务器。这个时候MapServer作为WMS(或WFS)服务器。
WMS、WFS、WCS等概念
WMS(Web Map Service)
描述:
WMS表示地图服务。它能够根据浏览器请求返回相应的web光栅格式的地图数据(如:PNG、GIF、JPEG等,或者是SVG、WEB CGM等矢量形式数据)。同时他还能指定返回的数据是否为PNG透明格式,以便用户叠加多个图层使用。WMS支持HTTP协议,所有的操作均由URL决定。
应用操作:
WMS规范定义了许多请求类型,每个请求类型都有一组查询参数和相关行为。符合WMS的服务器必须能够处理至少以下两种类型的WMS请求:
-
- 1. GetCapabilities:返回一个XML文档,其中包含Web Map服务器信息的元数据
- 2. GetMap:根据用户的需要返回地图的图像。
对以下类型的支持是可选的:
-
- 1. GetFeatureInfo:在查询(鼠标单击)位置返回关于feature(要素)的信息。MapServer支持3种类型的响应:
- 2. DescribeLayer:返回一个或多个映射层描述:
- 矢量层:一个人有效的描述返回必须先设置wfs_onlineresource(或ows_onlineresource)元数据在地图中的级别(map level)或层级级别(layer level)。
- 栅格层:设置wcs_onlineresource元数据在相应的图层中。
- 3. GetLegendGraphic:返回请求层的图例图像(图标)和标签
WFS(Web Feature Service)
描述:
WFS是基于地理要素级别的数据共享和数据操作,WFS规范定义了若干基于地理要素(Feature)级别的数据操作接口,并以 HTTP 作为分布式计算平台。通过 WFS服务,客户端可以得到矢量数据格式描述的单个地理要素的空间数据或要素集的空间数据,并可以对单个地理要素进行编辑、 删除、 添加等数据操作。WFS采用 GML描述地理要素特征, 根据用户请求的内容返回 GML描述的空间数据。
应用操作:
-
- 1. GetCapabilities:生成一个服务元数据文档,描述服务器提供的WFS服务,需要生产KVP编码(选择性生产XML编码)。
- 2. DescribeFeatureType:返回WFS实例提供的要素(Feature)类型描述。该描述定了WFS对要素文件的插入、更新、替换的操作规范。以及要是(Feature)是如何输出的。
- 3. GetFeature:从数据存储中返回所选的要素(Feature)。WFS处理GetFeature请求并向客户机返回一个响应文档,该文档包含零个或多个满足请求中指定的查询表达式的要素(Feature)实例。
- 4. StoredQuery:
- 4.1 ListStoredQueries:列出了服务器上可用的存储查询
- 4.2 DescribeStoredQueries:提供查询时,每个metadata的详细信息。
- 4.3 CreateStoredQuery:创建查询。
- 4.4 DropStoredQuery:关闭查询
- 5. LockFeature:Web连接本质上是无状态的。客户端获取一个Feature实例。然后在客户端修改该Feature,并通过事务请求更新将其提交回WFS。由于无法保证在客户端修改Feature时,不会出现另一个客户端更新数据库中的相同Feature,因此丧失了可序列化性。操作 WFS可以在一个事务处理期间锁定一个地理要素类型中的一个或多个地理Feature要素实例, 这使 WFS具有支持可序列化事务的能力。
- 6. Transaction:用于描述将应用于WFS服务控制下的Feature实例的数据转换操作。使用事务操作客户端可以在web feature service的数据存储中创建、修改、替换和删除feature。GML(参见ISO 19136:2007)作为Feature的规范描述,特定WFS实现需要将这种规范的GML描述转换为数据存储中使用的内部描述(也可以是GML,在这种情况下不需要进行转换)。
WCS(Web Coverage Service)
描述:
OGC Web Coverage Service (WCS)支持将地理空间数据的电子检索作为“覆盖物”——即表示空间/时变物候的数字地理空间信息。WCS以对客户端呈现、对科学模型的输入以及对其他客户端有用的形式提供对覆盖率数据的访问。可以将WCS与OGC Web Feature Service (WFS)和Web Map Service (WMS)进行比较。作为WMS和WFS服务实例,WCS允许客户端基于空间约束和其他查询条件选择服务器的部分信息。
应用操作:
-
- 1. GetCapabilities:根据OWS Common [OGC 06-121r9]的要求,允许WCS客户机检索WCS服务器提供的服务和覆盖元数据。
- 2. DescribeCoverage:提供覆盖标识符列表,并提示服务器为每个标识符返回相应覆盖的描述。
- 3. GetCoverage:提示WCS服务处理从服务提供中选择的特定覆盖率,并返回派生覆盖率。WCS核心标准定义了域子集操作,该操作相对于覆盖率信封(更准确地说,是请求信封与覆盖率信封的交集),从指定的请求信封(“边界框”)内的覆盖率交付所有数据。
相关资料下载:WMS.pdf、WFS.pdf、WSC.pdf
创建Example1.7 Adding a wms layer
操作:
-
- 1. 在cmd中输入:cd /d E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps
- 2. 在cmd中输入:md Example1.7
- 3. 在cmd中输入:cd Example1.7
- 4. 在cmd中输入:md data
- 5. 在cmd中输入:md logs
- 6. 在cmd中输入:md symbols
- 7. 在cmd中输入:md fonts
- 8. 在cmd中输入:md tmp
- 9. 在cmd中输入:cd.>web.config
- 10. 在cmd中输入:cd.>example1_7.map
- 11. 在cmd中输入:cd data
- 12. 在cmd中输入:md raster
将 apps/tutorial/data 中的 states_ugl.dbf、states_ugl.shp、states_ugl.shx 三个文件拷贝到 apps/Example1.7/data 文件夹下面
将 apps/tutorial/data/raster 中的 mod09a12003161_ugl_ll_8bit.tif 复制到 apps/Example1.7/data/raster 文件夹下面
将 apps/tutorial/symbols 中的 symbols35.sym 复制到 apps/Example1.7/data/symbols 文件夹下
将 apps/tutorial/fonts 中的所有文件 复制到 apps/Example1.7/data/fonts 文件夹下
修改 web.config 文件如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="MapServerFastCgi" path="*" verb="*" type="" modules="FastCgiModule"
scriptProcessor="E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\bin\mapserv.exe"
resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="" /> </handlers> <caching enabled="true" enableKernelCache="true" /> </system.webServer> </configuration>
修改 example1_7.map 文件如下:
123
创建站点
名称为:Exapmle1.7,端口:8017,应用程序池:Example1.7
设置应用程序池对日志目录的读写权限,在cmd中输入:icacls "E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\Example1.7\logs" /grant "IIS AppPool\Example1.7":(OI)(CI)RW
打开站点
在浏览器中输入:http://localhost:8017/mapserv?map=../apps/Example1.7/example1_7.map&layer=states_polygon&layer=modis&layer=modis_jpl&layer=states_line&layer=states_label&mode=map
MapFile(example1_7.map)文件解析
WMS Layer
LAYER # MODIS WMS map from JPL
-
-
- WMS LAYER层的开始标签。
-
NAME modis_jpl
-
-
- LAYER层的唯一命名
-
TYPE RASTER
-
-
- 由于WMS层是一个图像,我们使用光栅作为层类型。
-
OFFSITE 0 0 0
-
-
- 忽略背景颜色
-
STATUS OFF
-
-
- 当前层默认关闭状态
-
CONNECTIONTYPE WMS
-
-
- 当前LAYER层的WMS链接,默认是本地。注意,如果必须显式,我们将在mapfile中的所有othe vector和raster层中添加CONNECTIONTYPE LOCAL。相反,我们只定义外部连接类型。WMS是一个外部数据层,来自另一个map服务器。
-
CONNECTION “http://mapus.jpl.nasa.gov/wms.cgi?”
-
-
- 允许我们从另一台服务器获取数据的连接字符串。对于WMS连接,这是一个URL。如果我们使用PostGIS数据库,它将是一条SQL语句。请注意,字符串必须在mapfile中的一行中设置,不能换行。
-
METADATA
-
-
- 标记WMS层的元数据(metadata)对象的开始。MapServer在这个对象中定义的参数以及使用上面的连接参数来形成对WMS服务器的有效WMS请求。
-
“wms_srs” “epsg:4326”
-
-
- WMS投影(坐标系)。有时WMS服务器支持多个投影。如果是这种情况,您可能希望在输出投影中请求映射(epsg:2163)。但是,JPL服务器不支持这种投影。
-
“wms_name” “modis”
-
-
- WMS层名称
-
“wms_server_version” “1.1.1”
-
-
- WMS服务器版本信息
-
“wms_format” “image/jpeg”
-
-
- 我们期望从WMS服务器接收的图像格式
-
END
-
-
- LAYER 标签结束
-
WEB标签
-
- IMAGEPATH:web站点服务器访问的临时目录。运行web服务器进程的用户应该能够写入这个目录。确保路径末尾包含一个斜杠(/)。(您的IMAGEPATH可能是这样的:“/home/apache/htdocs/tmp/”或“C:/Inetpub/wwwroot/tmp/”。)
- IMAGEURL:这就是IMAGEPATH相对于web服务器根目录的显示方式。如果我们必须为此输入完整的URL,它将是“http://terrasip.gis.umn.edu/tmp/”。确保路径末尾包含一个斜杠(/)。