摘要: Maplet在线地图共享网站(http://www.maplet.org),是一个使用了Web、WebGIS技术开发的信息共享、科普、教育网站。最近几天,开发工作大概完成,有一些文字,写一下记录一下,防止以后忘记。 本科时候的专业是地理科学,研究生阶段学的是地...
Maplet在线地图共享网站(http://www.maplet.org),是一个使用了Web、WebGIS技术开发的信息共享、科普、教育网站。最近几天,开发工作大概完成,有一些文字,写一下记录一下,防止以后忘记。
本科时候的专业是地理科学,研究生阶段学的是地图学与地理信息系统,工作之后在单位的遥感与地理信息中心,也大都与地理空间业务相关。个人对技术方面比较感兴趣,尤其是开源GIS方面,现在算起来也有了十年的经验,现在还在做一些OSGeo中国中心的工作。科研工作大抵是无所建树,技术方面可能还有点特长吧。
因为工作关系,这几年也是收集了许多地理数据、扫描的地图图件等。长久以来一直在考虑一个问题,如何把手头的资料转换成更方便实用的形式,如何更方便的提供给别人使用。
从2014年开始,因为做地理科学数据共享方面的一些工作,开始接触到Web开发。因手头维护着几个网站,便开发了一个CMS(TorCMS, 源代码托管于GitHub, https://github.com/bukun/TorCMS ),用于网站的管理。原来网站都是用 WordPress 做的,之所以用 Python 自行写了一个CMS,主要是平时用 PHP 的时间比较少,不想在这个语言身上多花工夫了。另外,因为个人兴趣,做了一个在线计算的网站(云算笔记,http://www.yunsuan.org,想做些云计算实践,做还没做到,起了这样一下不伦不类的名字)。现在想起来,这些应该是在做技术铺垫了,云算笔记网站中,也颇有一些地学计算相关的(http://www.yunsuan.org/post/32000.html ),有一些也用到WebGIS技术,但当时并没有这样的意识。云算笔记的开发量比较大,断断续续做到了2015年初。某一天,我实然想,我把在线计算的网站程序来做在线地图发布是否可行呢? 于是马上就动手实验,这个想法的实现其实只用了一个晚上。当然现在以Maplet网站程序为主,代码的名称都改了,也放在了 GitHub,https://github.com/bukun/maplet。
再往后来,是云算笔记网站的阶段性收尾工作与Maplet网站相关工作开展,这些开发维护工作与实际的课题工作结合到了一起。这中间比较关键的,并不是网站程序的开发(应该说云算笔记网站对程序要求更高一点),而是地图服务的应用部署。不过有利的一点是我在这方面的经验反而更多一些,从数据处理到地图发布,把原来的工作系统地整合到一起,做成了地图纠正、配置文件生成、远程发布的一整套方案,后期的添加数据等,我介入的其实并不多了。为了简化地图的发布,采用了MapServer作为地图服务器,使用了MapProxy作为地图切片的程序。网站的前端,则选择了Leaflet。基本的技术选型就是这个样子,当然,这些选型也是在做的过程中反复比较确定下来的。
作为一个个人项目,Maplet网站开始也并没有太高的需求。只是想将扫描的地图资料发布到网络上,可以在线浏览、查看,这是基本的WebGIS的要求,在线叠加的功能倒是最开始就想到了,这点可能是多年做GIS形成的惯性思维吧,而且实现起来也非常简单。其他方面,可能就是我想发布的地图可能会有些多,以后可能会逐渐增加。这样,以地图为中心的发布与管理模式,就初步建立起来了。另外,作为Web应用,网站的推广优化也是一开始就考虑了的,所以想做的,基本就是一个地图内容管理系统了。
开发语言选择了Python3,开发的时候用的3.4,现在已经是3.5了。也为也没用到什么特别的功能,所以迁移起来也没有什么难度。最初接触到 Python 是在ArcGIS下写数据处理脚本,后来用Python结合开源GIS的一些工具写数据处理脚本。这方面的经验其实更多一些,也一直在写一本书《Python与开源GIS》,不过一直工作兴趣很容易转移,导致迟迟没有完成。用Python写Web程序其实是相当偶然的,作为GIS专业的从业人员,做网站开发有点不务正业了。不过感谢当时能有暂时脱离工作业务的一段时间,可以接触到相对新一点的领域。