好吧,这个标题可能有点误导。但我也想不出其他更好的标题了。如果您能提出来合适的,我会立即更改。
本文主要介绍一些开源的GIS开发库和工具,如果大家在生产研究中需要进行相应的处理,使用这些开发库和工具可以节省许多时间和经历。同时,在研究的过程中使用这些“底层”的工具,可以加深大家对基本原理和理论的认识。
本文不是“死”的,我将会一直维护和更新本文。
现在,就让我们开始吧。
一、我的GIS经历
首先,吐槽下我的GIS经历吧。
本科阶段,还是测绘工程专业的。大部分课都是跟着地理信息系统专业的同学一起上。在老师朦胧的介绍中,我们当时粗浅的理解就是:测绘做外业,GIS做内业。
考上研究生后,专业转成了地图学与地理信息系统。做了一些项目,如地名地址、还有最近的两权发证,都与要使用到ArcGIS。不光在生产中需要用到ArcGIS。另外在研究当中,也使用ArcGIS作为研究工具。比如前一阵子,来我校举行讲座的萧世伦(Shih-Lung Shaw)教授就是用ArcGIS作为其研究工具(这么说好像有点。。。哪个从事GIS研究的不用ArcGIS啊。)
的确,谈到GIS就不能不说ESRI,ESRI的影响力之大,以致有人称呼ESRI为GIS界的微软。
聚会时,有高中同学问GIS是做什么的。我反问了他们:在你们眼里GIS是做什么的?得到的答案有许多,其中最有喜感的是一个女同学的答案,她说GIS和PS差不多。。。因为在她眼里,我们也是对着电脑处理一些“照片”。
二、GIS编程实现
在平时我们都是用专业的应用软件来处理相关数据,如ArcGIS等。同时有时候也会通过Arc Engine,使用C#等语言进行二次开发。以定制开发适合自身需要的工具。关于ArcGIS的使用,以及二次开发,网上的资料很多。而这篇文章的侧重点提高自身的GIS编程能力,所以这里介绍一些如何使用一些开源软件和工具来处理GIS数据。使用开源软件的好处之一就是您可以在使用的过程中,遇到不明白的地方,去查看源代码,观察这个软件包的对某个问题的处理方式和实现办法。
下面将要介绍一些GIS开发中可以使用到的开源软件和工具,通过这些工具的使用,大家可以了解在GIS数据在“底层”处理的一些简单的认识。当然,这里的底层和计算机上常说的底层是不同的。希望通过介绍这些工具的使用,来达到抛砖引玉的作用。让大家能学习到更多的知识。
GIS数据的处理,概括来说,有读取/输出、处理、显示三大步骤。不过在下面将要介绍的工具和库中,每个库的作用并不是单一的。比如有的库可以读取/输出,也可以进行部分的处理工作;有些库可以进行显示和渲染,但也可以进行一部分处理工作。下面就通过对shapefile的处理来分别简要介绍这些库。
GIS相关的许多工作,其实都是对shapefile进行处理。除了使用专业的工具之外,我们还可以使用一些开源的工具和编程语言,从底层进行开发和使用。
1、GIS开发的语言
编程语言数目繁多,有专攻科学计算的Matlab;有系统开发语言C/C++