燃烧的梦想
 燃烧的梦想,流水的时光 

2013-03-19 Tue

修复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)修复完毕。


火箭人于 2013-03-19 00:26:58 发表在分类:OpenDesktopGis
(39959次点击) | 标签: gis mapserv  



 评论
 · 发表新帖
 留言总数0帖 页次:1/0 每页:20条 

Power by 小站博客, Ver0.7 update at 2006-03-04