基于MAPSERVER的校园电子地图WEBGIS系统-此地信人 - 新浪BLOG

来源:百度文库 编辑:神马文学网 时间:2024/06/03 13:16:09

  
2007-12-12 15:11:57
大中小
概述  本系统是做一个简单的校园WEBGIS导航系统,用户主要是西大校园内用户!考虑到MAPSERVER的简单易用,和开源等特点,我们选择用MAPSERVER 作为我们这个系统的GIS服务器,APACH作为WEB服务器,来构件WEBGIS所甬道的服务器。
项目定位:    由于初次涉及到WEBGIS方面的知识! 以前学的WEB方面的知识也比较初级!定位在能做出基本功能!对于比较难的功能就尽力去做。主要的目的还是学习为主,了解WEBGIS的工作原理、应用的机制和实现方法
需求分析时候的总目标:一般电子地图功能:包括缩放、自由缩放、漫游、全图显示
用户主要利用地物查询功能,进行导航,包括一般电子地图的浏览、查询功能,可根据查询条件进行查询,如查询八教位置,可以在全地图上显示八教位置,并在左边显示八教图片和相关信息,测量两点间距离功能:单击所经点,双击显示距离
需求分析的完成情况
实现了缩放、自由缩放、漫游、全图显示这些基本功能
实现了点击查询和属性查询
新增加了图例和图层控制
未实现路径查询。
未实现测量两点距离。
未实现多媒体连接。
未完成的原因分析
未实现路径查询,主要做这个路径查询和缓冲区分析需要对脚本语言很熟悉。
未实现测量两点距离,在教材里面没有找到MAPSERVER的相关功能
未实现多媒体连接,也是网页设计方面能力不够
服务器配置:
由于我们刚刚接触到WEBGIS和APACH服务器的配置很烦琐,我们选用的是MS4W(MAPSERVER FOR WINDOW)压缩包,里面用批处理文件来进行了的服务器的配置和一些参数的设置,一般将MS4W解压到D盘的根目录,然后依次点击D:\ms4w里的setenv.bat apach_install.bat就安装好了WEBGIS的服务器APACH 和MAPSERVER!
组员工作情况:
大家都尽力去做好自己的工作,并且大家相互帮助,遇到问题一起探讨,对于不同意见的地方大家协商解决,共同完成了该项目。
MAPSERVER的使用:
MAPSERVER是使用CGI(通用网关接口)的一个开源的GIS服务器!MapServer 能够创建一张图片到本地的文件夹里面,然后你可以通过WEB BROWSE如IE,浏览到生成的图片,不需要编辑网页就可以直接生成可以在浏览器浏览的图片,生成什么样的图片,图片里面有些什么内容甚至各个图层的关系投影比例尺,这些所有的一切,怎么样来让MAPSERVER知道呢?那就要编写一个.MAP文件!.MAP就象是一个中间人,他使得使用者能够很好的让MAPSERVER去如何工作,产生什么样的图片等。宏观上就很好的控制和管理各个图层要素!下面是英文的原文描述.MAP文件更为准确the mapfile is MapServer's basic configuration mechanism. The mapfile is made up of "objects" and each object can have keywords or other objects. It has a hierarchical structure such that some objects fall under other objects... on top of this hierarchy is the MAP object, all other objects belong to it. Then there are objects like the PROJECTION object which can belong to the MAP object or to the LAYER object (which in turn belongs to the MAP object). Each object begins with the object name and ends with "END".
既然.MAP文件那么重要,那又如何来具体编写.MAP呢?其实他就想一般的文本文件,只是扩展名为.map而已!所以我们打开WINDOWS自带的记事本就行了!现在我们就可以写入具体内容了!比如下面的例子,只有一个图层的简单例子
MAP
IMAGETYPE PNG
EXTENT 201621.496941 -294488.285333 1425518.020722 498254.511514
SIZE 400 300
SHAPEPATH "data"
IMAGECOLOR 255 255 255
PROJECTION
"proj=laea"
"ellps=clrk66"
"lat_0=45"
"lon_0=-100"
# Alternatively, you can specify an EPSG code.
# "init=epsg:2163"
END
# Start of LAYER DEFINITIONS
LAYER # States polygon layer begins here
NAME states
DATA states_ugl
STATUS DEFAULT
TYPE POLYGON
PROJECTION
"init=epsg:4269"
END
CLASS
COLOR 232 232 232
OUTLINECOLOR 32 32 32
END
END # States polygon layer ends here
# End of LAYER DEFINITIONS -------------------------------
END # end of map file/object
我们来具体的讲哈每一句话的意思,第一句MAP,这是说这个文件从这里开始,到最后一个END结束。第二句IMAGETYPE PNG。这是告诉MAPSERVER输出的图片是PNG格式的,这种格式是压缩比较大的一个图片,在网络上大量使用!当然你也可以将PNG换成我们熟悉的gif甚至jpg。第三句EXTENT 201621.496941 -294488.285333 1425518.020722 498254.511514,这是告诉MAPSERVER我们看到的地图范围,四个点分别是矩形筐的最小的XY值和最大XY值,第四句SIZE 400 300,是确定输出图片的大小400*300相素;第五句SHAPEPATH "data"指SHP数据文件的相对地址,第六句IMAGECOLOR 255 255 255是指输出地图的背景色白色,第七句PROJECTION
"proj=laea"
"ellps=clrk66"
"lat_0=45"
"lon_0=-100"
# Alternatively, you can specify an EPSG code.
# "init=epsg:2163"
END
是定义投影系统的,以END字符结尾,“#”后面的文字表示注解,MAPSERVER不会执行他们。第八句
LAYER # States polygon layer begins here
NAME states
DATA states_ugl
STATUS DEFAULT
TYPE POLYGON
PROJECTION
"init=epsg:4269"
END
CLASS
COLOR 232 232 232
OUTLINECOLOR 32 32 32
END
END # States polygon layer ends here
是定义一个图层,图层一LAYER开始END结束。NAME后面的为这个图层起的名字,以后设置这个图层的各种性质,如可见,是否作为查询层是都要用这个名称来使用这个图层。DATA后面跟的是这个图层的SHP文件,STATUS DEFAULT他的状态是一直都是显示的。TYPE POLYGON说明他是一个面状图层,PROJECTION
"init=epsg:4269"
END
是为这个图层定义一个投影,以END结束,CLASS
COLOR 232 232 232
OUTLINECOLOR 32 32 32
END
是为这个图层定义颜色COLOR是指填充色,OUTLINECOLOR是指边界的颜色。以END结束。后面的END是图层的解释标志,最后是整个MAP文件的解释的标准END!这样一个简单的MAPFILE就做好了!我们只需要把他保存假使保存在C:\FIRS.MAP当然你的DATA数据也要保存在一起(前面已经说了我们用的是相对路径,然后在IE浏览器里输入HTTP://LOCALHOST/CHI-BIN/MAPSERVER.EXE?MAP=C:\FIRST.MAP&MODE=MAP就行了!我们刚才编的地图就显示出来了!
这样我们就可以用相同的方法添加其他图层,点状线状面状甚至是栅格图象,我们还可以添加比例尺,鹰眼,标签,图例,这些都可以用MAPSERVER来自动输出!
WEBGIS不仅仅是一张图片,而是可以放大缩小查询的系统,怎么样样让这个MAP文件能随着命令的不同输出我们想要的地图呢!而这些命令我们又如何随机产生的命令怎么样动态的传递给MAPSERVER,并响应这些命令呢?这就要加入一个HTML的TEMPLATE让MAPSERVER产生的图片放到这个TEMPLATE里面,并且通过这个TEMPLATE来接受拥用户输入的命令,我们还是以一个简单的例子来说明吧!


MapServer Workshop

































Map Control:










这个HTML文件其实并么眼什么特别的,只是在FORM里面和一般的网页有很大的不同!form使用GET方式传递值,ACTION是CGI下面的一个可执行文件MAPWERV.EXE.还有就是在FORM 中出现了用“[]”括在一起的变量。如,中的[img],这句代码正是用于显示产生的地图图片的。而这些 
Map Control: