摘要: 由于主要做GIS数据处理,桌面开发用得比较少;而且一般都是在Linux下使用开源的一些软件,所以对于Windows下面的开源GIS桌面开发组件一向了解的比较少。这次从网上找了一些资料,总结了一下。 1. MapWindow,一个桌面GIS软件,提供C++开发...
由于主要做GIS数据处理,桌面开发用得比较少;而且一般都是在Linux下使用开源的一些软件,所以对于Windows下面的开源GIS桌面开发组件一向了解的比较少。这次从网上找了一些资料,总结了一下。
1. MapWindow,一个桌面GIS软件,提供C++开发的ActiveX控件二次开发使用,自己的GUI界面是用VB.Net开发,更新很活跃,而且目前有一个很早期的.Net版本。使用它的桌面软件,感觉还不错,并且由于有插件机制,功能上也能满足大部分需求了。然后看了网站上提供的文档,感觉ActiveX控件提供的接口比较不舒服,而且功能上也相对有限,不过它的论坛好像还比较活跃。MapWindow的更新还是很活跃的,不过它的ActiveX控件用来做二次开发还不是特别合适,期待.net版本早日到来。
2.SharpMap,基于.net的GIS组件,同时支持WinForm和Web两种平台,由于我主要关心桌面的开发,对其Web的支持没怎么关心。目前网站上提供两个版本下载,0.9正式版和2.0beta1,我更新了几天它的2.0版本的代码库,发现2.0版本的API还处在非常不稳定的状态,经常有较大的变动。于是转向0.9,认真研究了一下,觉得它的代码量较少,虽然文档不多,但是由于接口设计比较清晰简单,使用和扩展也比较方便,在没发现其他更好的开源项目后,决定使用这个的0.9版本。不过从这段时间的使用情况来看,它的功能相对较弱,很多功能都需要自己扩展,比如其自身的空间查询功能非常少,还有它自带的MapImage控件也过于简单,实际使用需要自己开发地图显示控件。
3.NetTopologySuite,提供拓扑操作支持,可以认为是JTS的.net版本,项目已经很久没更新过了。为了扩展SharpMap的空间查询能力,我也使用了这个库。最开始是在SharpMap的网站上看到有提供的对NetTopologySuite支持的代码,不过不能支持NetTopologySuite最新的版本,并且效率上可能有问题,实际使用的话还需要自己做很多工作。
4.PostGIS,这个就不多说了,提供PostgreSQL的空间数据支持。这个其实与桌面无关,但是桌面的应用中,还是非常重要的。在我的这个程序中现在同时支持Shp文件和PostGIS,如果后期遇到性能问题,就将数据全部转换到PostGIS中,希望至少可以解决查询时的效率问题。SharpMap也有热心人提供的对PostGIS提供支持的代码,不过这也是比较老的代码了,使用的数据驱动是一个已经停止更新的项目,并且代码也并不完善。