基于postgresql+postGIS+QGIS+MapServer的WebGIS部署
做一个停车场的项目,使用到了WebGIS技术来实现车场平面图展示及车位设备管理,记录下从搭建WebGIS平台到实现效果的过程。要实现WebGIS技术,有各种技术搭配,本项目使用的搭配是:postgresql+PostGIS+QGIS+Mapserver+Openlayers。
一、各技术关系
先来理清一下这几个的关系。Postgresql就是一个数据库,但是它具备地理信息处理扩展,从而可实现对地理信息的存储。PostGIS是postgresql数据库的空间数据扩展模块,提供的空间信息服务功能有:空间对象、空间索引、空间操作函数和空间操作符。PostGIS通过添加地理信息对象,使postgresql数据库能将空间几何数据以数据表的形式进行存储。如图所示,
PostGIS支持点、线、多边形、多点、多线和多多边形等空间数据类型。将停车场中相同对象数据存放在同一个图层(shapefile)中,例如可分为设备图层、车位图层等。不同的图层存储在postgresql中不同的数据表中。
桌面地理信息系统QGIS,将空间数据以PostGIS图层的形式,即ShapeFile导入PostgreSQL。QGIS用来处理Shapefile在PostGIS里的导入导出和编辑。
地图服务器MapServer是一个开源的基于胖服务器端/瘦客户端模式的实时地图发布系统,客户端发送数据请求时,服务器端实时的处理空间数据,并将生成的数据发送给客户端。
MapServer采用配置文件方式管理地图发布,配置文件被称为Mapfile,后缀名为map。
MapFile文件将各种地图要素组织成具有层次关系的对象系统。数据来源,使用的数据格式,用户交互和对OGC协议的支持也在MapFile中定义。Mapfile文件可以手动编写,也可以通过QGIS自动生成。
二、WebGIS部署
你需要用到以下安装包:
1、postgresql数据库:postgresql-9.3.4-1-windows-x64.exe
2、postGIS空间数据扩展模块:postgis-bundle-pg93x64-setup-2.1.1-1.exe
3、Python:python-2.5.4.msi
4、QGIS桌面地理信息系统:QGIS-OSGeo4W-2.2.0-1-Setup-x86_64.exe
5、MapServer地图服务器:ms4w_3.0.6.zip
接下来一步步介绍安装部署过程。
(1)postgresql数据库安装
1、打开postgresql-9.3.4-1-windows-x64.exe,下一步
2、选择安装位置,可自定义,下一步
3、选择数据存储位置,建议默认值
4、设置密码,用户名默认为postgres(此处密码需要与map文件和程序系统参数中一致)
5、设置端口号,强烈建议不要更改
6、设置所在地,直接下一步
7、下一步
8、安装完成(不需要点对勾)
Postgresql安装完成后,会发现pgAdminⅢ这个软件,这是postgresql自带的图形界面的数据库管理工具。
(2)postgis的安装
1、打开postgis-bundle-pg93x64-setup-2.1.1-1.exe,接收协议
2、勾选Creat spatial database,下一步
3、选择安装路径,需要与postgresql在相同目录下
4、建立数据库car_lot,如果更改为其他数据库名字,需要修改map文件和程序系统参数(此处忘记截图)
5、等待安装完成
(3)安装python
1、打开python-2.5.4.msi
2、选择安装路径,强烈建议在此路径下,否则需要修改程序中web.xml以及代理文件中的路径
3、下一步
4、等待安装完成
(4)安装QGIS
1、打开QGIS-OSGeo4W-2.2.0-1-Setup-x86_64.exe
2、下一步
3、同意协议
4、选择安装位置,可自定义
5、选择需要安装的地理数据库,直接下一步
6、等待安装完成
(5)安装地图服务器ms4w
1、 将ms4w_3.0.6.zip解压至安装路径(建议路径D:)
2、
3、打开cmd,进入上图的路径,执行apache-install.bat,出现下图则说明安装成功
4、修改端口号,打开D:\ms4w\Apache\conf下的httpd.conf,找到
将Listen改为改为其他端口号,请确保端口不冲突,并修改map文件和地图页面
(5)将shp文件导入空间数据库
1、 打开QGIS Desktop 2.2.0.exe
2、选择数据库->SPIT工具->将shp文件导入到postgresql
2、 新建连接
3、输入基本信息(x为勾选)
4、测试连接是否可用
5、添加,选择要插入的shp文件
6、确定,插入数据
(6)数据拷贝
1、 将.map文件和mapSymbol文件夹拷到D盘下(如更改位置需要更改程序设置)
2、 打开map文件,找到
修改数据库连接的密码
有若干的地方需要修改
3、此处配置字体和符号的路径,即mapSymbol的路径
4、此处配置地图服务器路径
(7)其他配置
1、 代理设置,当客户端与浏览器不在同一台电脑,需要通过ip访问时,或者在同一台电脑,但是在不同端口时,都涉及到跨域问题,需要修改此处
打开D:\tomcat\tomcat-7.0.54\webapps\ParkingSpaceManage\WEB-INF\cgi下的proxy.cgi,找到
在allowedHosts下加入地图服务器的地址和端口号。
三、用浏览器访问地图服务
输入网址
http://localhost:8080/cgi-bin/mapserv.exe?MAP=D:/gzpark.map&LAYERS=ALL&MODE=MAP
地图出来说明部署成功了,以后再介绍用openlayers调用在mapserver发布的WMS(Web Map Service)和WFS(Web Feature Service)服务
转载自:https://mtr-1.oss-cn-beijing.aliyuncs.com/qyblog/2019/04/51784564.jpg