修复TheGreatWallWebGIS
|
长城小站是由志愿者支持的公益性网站,无固定经济来源。2012年小站台历是由各方网友赞助图片、设计、印刷精心制作的纪念品,用于小站运营经费筹款。 欢迎您购买小站台历,支持长城小站与小站博客的发展。 |
|
因更换服务器,操作系统随之由32位系统升级到64位系统。原建的小站中国长城地理信息系统(TheGreatWallWebGIS)后台的MAPSERVER引擎因为是32位的,不能正常工作了。
之前试图修复一次,因MAPSERVER社区提供的给EL6的包不全,无法解决依赖性问题而暂时放手。
今天下午开始着手解决,思路之一是重新编一边所有需要的包,虽然会很麻烦,但结果一般会很可靠。
查看了MAPSERVER的子项目ELGIS 6的仓库,发现提供了MAPSERVER5和6。下载了仓库提供的所有稳定版本的包,经过测试,主要依赖性缺失是来自gdal,考虑到重编也要下载编译这些依赖性关系包,打算在社区里找一下,看能偷懒就偷懒。
经过不断搜索、下载、测试,确定如下列表,可解决在el6上的mapserv5和6安装支持
cfitsio-3.240-3.el6.x86_64.rpm
libdap-3.11.0-1.el6.x86_64.rpm
libspatialite-2.4.0-0.6.RC4.el6.x86_64.rpm
ogdi-3.2.0-0.14.beta2.el6.x86_64.rpm
hdf5-1.8.5.patch1-7.el6.x86_64.rpm
librx-1.5-14.el6.x86_64.rpm
netcdf-4.1.1-3.el6.2.x86_64.rpm
xerces-c-3.0.1-0.20.1.el6.x86_64.rpm
proj-epsg-4.7.0-2_0.el6.x86_64.rpm
proj-4.7.0-2_0.el6.x86_64.rpm
geos-3.3.1-2.el6.x86_64.rpm
gdal-1.8.1-1_0.el6.x86_64.rpm
libgeotiff-1.3.0-4_0.el6.x86_64.rpm
fcgi-2.4.0-10.el6.x86_64.rpm
fribidi-0.19.2-2.el6.x86_64.rpm
安装上述环境后,mapserv5和6均可正常执行。
./mapserv -v
MapServer version 6.0.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=CAIRO SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
./mapserv -v
MapServer version 5.6.7 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS SUPPORTS=RGBA_PNG INPUT=TIFF INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=MYGIS INPUT=SHAPEFILE
这样,为解决问题迈出第一步。
用64位mapserv6替换系统原有的32位mapserv4,运行后报错:
loadSymbol(): Unknown identifier. Parsing error near (STYLE):(line 471)
通过社区搜索,大体了解到mapserv从4升级到6,修改了很多语法规则,直接使用肯定不行!这意味着又要投入庞大的精力去看包括mapfile规范在内的众多文档,从我目前的时间精力来看,实在是安排不开。
抱着试一下的心理,用CPIO解开mapserv5(rpm2cpio xxx.rpm | cpio -div),安装替换32位mapserv4,运行后报错:
loadWeb(): Unknown identifier. Parsing error near (xxxx.html):(line 1)
通过社区搜索,是模板配置问题。下载社区中的DEMO(demo版本5.4,mapserv版本5.6,demo落后了),提取模板实现成功,能形成地图。对比社区文档,经过如下改造:
1、原有文档头部加上 标签。
2、修改MAP文件,直接指定缓存图片目录和地址。
3、修改调用MAPSERV参数,删除和模板、缓存目录相关的变量。
修改后,目前提供的几个案例(全国、北京、河防口)首页均能正常显示,代表MAPSERV能正常工作。
但是当进行任何点击操作时,都会有后续错误:
loadWeb(): Unknown identifier. Parsing error near ([):(line 1)
不管怎样,已经有了一个好的开头,经过今天6个小时的工作,mapserv引擎已经修复正常,迈出了重要的一步。
1:30补记:
迷迷糊糊睡着了,醒来后打算再试一下,对比新下的DEMO中的模板和原有的模板,比较差别,经过实验删除模板中原有的map_web_imagepath,map_web_imageurl两个隐藏控件,即可正常显示。
小站中国长城地理信息系统(TheGreatWallWebGIS)修复完毕。