MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.7 Adding a wms layer
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 文件如下:
创建站点
名称为: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/”。确保路径末尾包含一个斜杠(/)。
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.7 Adding a wms layer的更多相关文章
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.6 Defining Projections and Extents
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.6 Defining Projections and Extents 一.前言 当在m ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer 一.前言 MapServer不仅支持 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map 一.前言 MapServer拥有非常灵活的标签 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.3 Displaying Classes in a Layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.3 Displaying Classes in a Layer 一.前言 关于第一节的 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.2 Static Map with Two Layers
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.2 Static Map with Two Layers 一.前言 上一篇博客< ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer 一.前言 开始MapServer用 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件
MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件 前言 万事开头难,有了<MapSer ...
- MapServer Tutorial——MapServer7.2.1教程学习(大纲)
MapServer Tutorial——MapServer7.2.1教程学习(大纲) 前言 最近在学习Gis方面的知识,因为电脑硬件配置偏低,顾选择MapServer入手.网上搜索MapServer系 ...
- MapServer Tutorial——MapServer7.2.1教程学习——教程背景
MapServer Tutorial——MapServer7.2.1教程学习——教程背景 一.前言 目前处于MapServer学习入门阶段,所以每一步都需要打下扎实基础.尽自己最大的努力,去学习知识的 ...
随机推荐
- react小知识点
1.render函数什么时候会执行? 当this.state/this.props发生改变的时候render函数就会执行 2.组件第一次执行的时候会执行哪些生命周期 constructor--> ...
- LabVIEW中开放隐藏属性的inikey
SuperSecretPrivateSpecialStuff=TRUE 在LabVIEW中有很多属性和方法是隐藏的,在labview安装根目录下的ini中添加该信息能开放这些隐藏的属性和方法.这时候能 ...
- JZ2440学习笔记之链接文件lds
如果在Linux环境下用arm-linux-gcc来编译arm程序,需要编写链接文件lds: 1. 运行地址=链接地址,表示代码在SDRAM中执行的地址,如果程序中有对某部分代码执行过搬运,需要在ld ...
- CentOS 7离线安装CDH 5.16.1完全指南(含各种错误处理)
安装包下载 1.CM软件包下载 从http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.16.1/RPMS/x86_64/下载rpm包,如下: 其实 ...
- freeswitch替换默认保持音乐
1.编译vars.xml文件 上面为注释,下面为新增.指定系统音乐文件路径,reloadxml即可!
- net应用程序池自动关闭的解决方法
while (true) { using (ServerManager sm = ServerManager.OpenRemote("localhost")) { string p ...
- 【JavaScript】标准日期、中国标准时间、时间戳、毫秒数互转
转载自:https://blog.csdn.net/IT429/article/details/78341847 看到的一篇比较有用的前端js时间转换方法,留个备份 首先要明确这三种格式是什么样子的: ...
- go-switch特点
程序中遇到有枚举分支逻辑时,需要用到 switch 代替多个 if else 判断. 学习过程遇到一些与C#不同点,记录下. 语法: switch expr { case x1 : //expr为x1 ...
- LINQ更新提示找不到行或行已更改的解决一例
LINQ对一行数据进行更改,怎么都无法提交,所有字段值都不是空值,后来看了实体,我发现更改的数据是主键,去数据库看这个字段却不是主键,原来是数据库取消主键了,实体代码没取消,因为更改了主键,所以无法更 ...
- Deep Learning--week1~week3
week1 一张图片,设像素为64*64, 颜色通道为红蓝绿三通道,则对应3个64*64实数矩阵 为了用向量表示这些矩阵,将这些矩阵的像素值展开为一个向量x作为算法的输入 从红色到绿色再到蓝色,依次按 ...