发布一个矢量图层

这一节开始在 MapServer 中使用矢量数据。矢量数据与CAD软件,或 Illustrator 中的矢量数据类似,除了有地理空间位置的差别,还有一个重要的方面就是 GIS 中的矢量数据是没有样式的信息的。CAD 或 Illustrator 以绘制为主,所采用的矢量数据,需要使用宽度、颜色、样式等来进行区分与美化,在 GIS 中,则将这些工作交由地图制图阶段来完成,同样的数据,可以在不同的专题图中,不同的应用场景中使用不同的样式来绘制。

在 Mapfile 中定义矢量图层

Mapserver可以创建一个图像并保存到一个当地目录,或者直接输送到要求的 Web 浏览器(正如这个例子)。注意上面地图,它是由WebGIS服务器在服务器端后台生成,然后传送到客户端的。在网页后面的代码是:

src="http://webgis.cn/cgi-bin/mapserv?map=/owg/mfa1.map&layer=world-country&mode=map"

/>

你可以不在HTML页面浏览它,仅仅输入这个网址:

(记住替换主机名或者IP地址;例如使用本地主机名 localhost,或者直接使用 IP 地址,如 "127.0.0.1")

01 MAP

02 IMAGETYPE "PNG"

03 EXTENT -180 -90 180 90

04 SIZE 600 300

05 SHAPEPATH "/gdata"

06 IMAGECOLOR 255 255 255

07 LAYER

08 NAME "world-country"

09 DATA "wcountry.shp"

10 STATUS OFF

11 TYPE POLYGON

12 CLASS

13 NAME "World Countries"

14 STYLE

15 COLOR 232 232 232

16 OUTLINECOLOR 32 32 32

17 END

18 END

19 END

20 END

下面看一下这个 Mapfile 。07 至 19 行,定义地图的第一层。

该层开始关键字为 LAYER ,结束关键字为 END 。根据 wcountry.shp1 的空间数据,多边形层渲染了全球的行政区划数据。NAME 关键字指定层的名称。这个名称本身是可选的,但如果你使用一个,它必须是不超过20个字符。该层的名称是用来在HTML模板层作为一个 CGI 引用。如果想从 HTML 表单交互层能够打开和关闭的情况下必须指定一个名称,。

STATUS 关键字决定该层是否渲染,是否可以改变其状态。

STATUS 默认的层总是渲染,同时可以改变状态。

12 至 18 行指定这一层唯一的类对象参数。一个类对象的由关键字 class 开始和关键字 END终止( 18 行)。虽然这个应用程序将比以前的地图使用类更广泛,这一层,你只需要指定一个单一的默认类将包括shapefile中的每一个要素。一类的名称将出现在与地图相关的图例上。如果一个类没有名字,它依然会被渲染,但它不会出现在图例中。样式对象关键字 COLOR 指定绘制的颜色,OUTLINECOLOR 指定绘制边界的颜色。

因为这层是一个多边形,它会被指定的颜色填充。注意,如果图层是线状图层,COLOR 值将指定线的颜色。

URL参数说明

这个URL可以被分解成三个部分:

第一部分,http://webgis.cn/cgi-bin/mapserv? ,调用MapServer的CGI程序。在不同的系统上,可能是 mapserv 或 mapserv.exe ,也有可能是其他名称。如果直接调用打开上面的网址,会得到这个消息:

No query information to decode. QUERY_STRING is set, but empty.

要得到正确的信息,需要添加额外的参数。

接下来的三个部分是查询字符串。查询字符串包含CGI参数(变量和它们的值),与被符号(&)分隔的每个参数。

现在来看看查询字符串,第一个参数 map 有一个值 : /owg/mfa1.map

这告诉MapServer的CGI的程序需要处理/解析的地图文件。当然这里的路径是服务器上的路径。

下一个参数 layer=states,告诉 mapserv 使用 states 图层。我们在 Mapfile 中命名为图层对象 states 。

最后一个参数, mode=map ,告诉 mapserv 做什么以模式输出 MapFile 。在这种情况下,它告诉 mapserv 转储图像直接到Web浏览器(客户端) ,无需先创建一个临时图像在服务器上。

TYPE 的值 可以为: 'chart', 'circle', 'line', 'point', 'polygon', 'raster', 'query', 'annotation'.

地图范围

在 Mapfile 中,需要设置好正确的范围才能显示数据。比如中国范围的数据,设置的范围为: EXTENT 73 8 136 53,效果如下:

完整的 Mapfile 为:

01 MAP

02 IMAGETYPE "PNG"

03 EXTENT -12 25 43 50

04 SIZE 550 250

05 SHAPEPATH "/gdata"

06 IMAGECOLOR 255 255 255

07 LAYER

08 NAME "topo"

09 DATA "land_shallow_topo_8192.tif"

10 STATUS OFF

11 TYPE RASTER

12 END

13 END

MapServer 查看的不同模式

注意上面的 mode=map ,这是 MapServer 支持的查看的模式。MapServer 的 mode 的CGI变量可以使用 map 以外的其他值。除了 map 模式之外,还有 browse 模式。例如,如果你使用 map=browse, MapServer的将转储影像到服务器上的临时目录。使用 browse 模式需要指定 template 参数。一般需要先定义一个模板文件,没有模板文件的情况下 browse 模式无法正常工作,这个在后面会说明。而在MapServer 6.x中,template 参数允许使用 OpenLayers 关键词,可以使用 OpenLayers 来查看 MapServer 的结果。

下面直接使用OpenLayers的缺省配置来查看地图。注意,要调用 MapServer 网站的 OpenLayers 类库,所以初次会比较慢一点。

关于 OpenLayers 模式,可查看:

可以尝试修改 MapFile 中的关键字的值并查看结果。这些实验会帮助了解这些关键字。

webgis 行政图报错_WebGIS教程 使用MapServer制图 发布一个矢量图层相关推荐

  1. webgis 行政图报错_WebGIS 地图 示例源码下载

    [实例简介] [实例截图] [核心代码] esri Deom html, body, #map { height: 100%; width: 100%; } body { background-col ...

  2. python绘制k线图(蜡烛图)报错 No module named 'matplotlib.finance

    使用python绘制蜡烛图报错:No module named 'matplotlib.finance 部分版本移除了finance模块,需要独立安装 安装命令:pip install git+htt ...

  3. Altium Designer在由原理图导入PCB图报错:Number of nets in differential pair NET-TX+ is 1 instead of 2

    一.问题描述. Altium Designer在由原理图导入PCB图报错:Number of nets in differential pair NET-TX+ is 1 instead of 2.内 ...

  4. 2021 申请SSL证书、Nginx和SpringBoot配置阿里云SSL证书解决HTTP HTTPS及不生效、打包报错详细教程

    2021 申请SSL证书.Nginx和SpringBoot配置阿里云SSL证书解决HTTP HTTPS及不生效.打包报错详细教程 目录 1. 获取SSL证书文件 1.1 购买SSL证书 1.2创建证书 ...

  5. 使用pheatmap画热图报错

    使用pheatmap画热图报错 报错内容: Error in hclust(d, method = method) : 外接函数调用时不能有NA/NaN/Inf(arg10) 此外: Warning ...

  6. 今日报错系列:没有找到 或上一个增量链接没有生成它;正在执行完全链接

    今天下面两个问题耗费些时间,特此记录一下,以便后面翻阅. 今日报错记录: 报错一.没有找到 或上一个增量链接没有生成它;正在执行完全链接 报错二.执行异步任务捕获到异常:std::bad_alloc ...

  7. vue项目 IE浏览器打开报错:strict 模式下不允许一个属性有多个定义

    VUE项目,用IE浏览器打开,浏览器报错:strict 模式下不允许一个属性有多个定义 出现这种报错,往往是代码标签里面有重复的属性,之前在Chrome下打开一直是正常的,但是换成IE11版本会报错, ...

  8. eclipse xml文件报错_Maven教程6: Maven与Eclipse整合

    点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长 一.安装Maven插件 下载下来的maven插件如下图所示:,插件存放的路径是:E:/Mave ...

  9. c++ amp vs2017 报错_opencv4教程-1 opencv的安装与调试Windows10+vs2017

    安装解压我就不必多说了. 将opencv解压到相应的文件目录下: 在vs2017创建一个空的项目. 可以设置成release或者debug模式,64位,具体随意,代码如下: ============= ...

最新文章

  1. 解决 - java.lang.OutOfMemoryError: unable to create new native thread
  2. JDK的bin目录下各种工具的使用说明_对不起自己,这么久没写博,抱歉
  3. 飞鸽传书不能传送文件
  4. c++ windows编译器 amd平台_不同操作系统下的C/C++ 编译器,C/C++新手须知,零基础学习C语言...
  5. wt在matlab中什么意思,new wt.是什么意思
  6. 用AI实现隔墙“透视”,准确率达97%,这家中国公司研究入选CVPR
  7. linux VM中复制虚拟机后eth0变成eth1
  8. 张小龙 4 小时演讲没时间看?看这一篇就够了!「附赠张小龙历年演讲实录 PDF」...
  9. 知识竞赛中如何按抢答器才能最先抢到
  10. 2. HTTP 报文
  11. 【原创】2021-2001重庆统计年鉴面板数据、重庆市统计年鉴、重庆年鉴、重庆区县数据(可直接使用)
  12. 计算机识别图像的原理,什么是图像识别技术?图像识别技术原理介绍
  13. php全站文章搜索,phpspider在列表页生成内容采集url.(又名:如何通过搜狗搜索关键词,爬取新浪新闻)...
  14. 数学对于编程有多重要?
  15. ubuntu18.04 LTS 安装英伟达驱动
  16. MAC系统免驱显卡汇总
  17. not in和or 出的问题
  18. 计算机毕业设计Android网上相亲交友婚恋app(源码+系统+mysql数据库+Lw文档)
  19. js截取某个字符的前、后面所有字符串
  20. EN 13163-2012 建筑保温产品,工厂生产发泡聚苯乙烯(EPS)产品.规范

热门文章

  1. 数据分析:numpy和pandas基础操作详解
  2. 尺规作图及其研究意义
  3. 毕业论文管理系统(图)
  4. 为什么Java的要求越来越高,面试总是拿凉经?
  5. 《Python One-Liners》电子书分享,一行代码可以做些什么?
  6. 现代教师应该掌握的计算机知识,现代教育的技术计算机基本知识点讲训.ppt
  7. JavaScript系列学习笔记 —— 代码优化的8种方法
  8. 程序员鼓励师这个是神马
  9. 母婴行业会员管理系统解决方案
  10. 一键关闭windows防火墙_Windows防火墙与网络设备拦截软件数据包案例记录!