GIS库基础知识

jopen 10年前

谈到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,其发展可谓风生水起。MapInfo软件也不错,可是给人的感觉是渐渐被淘汰了似的,使用该软件的人并不算多。一套GIS的完整开发框架,包括四个组成部分:标准层、数据库层、平台层和组间层。这四个部分从下到上,从底层到高层,共同构成一个完整的体系。


    标准层主要是用于制定各类标准。开放的GIS标准主要有两大体系:OGC(http://www.opengeospatial.org/)、ISO/TC211(www.isotc211.org/)。其中,WKT(Well-Known Text)与WKB(Well-Known Binary)是OGC制定的空间数据的组织规范,顾名思义,WKT是以文本形式描述空间数据,而WKB是以二进制形式描述空间数据。目前大部分支持空间数据存储的数据库构造空间数据都采用这两种方式。
    
    数据库层主要是采用开源地理信息标准采用开源方式开发的空间数据库项目,包括POSTGIS、MySQL空间扩展等。数据库组件层按照功能可分为两类:数据管理组件和分析组件。

数据管理组件

1、GDAL(http://www.gdal.org/):GDAL是一个基于C++的栅格格式的空间数据格式解释器。作为一个类库,对于那些用它所支持的数据类型的应用程序来说它代表一种抽象的数据模型。GDAL持大多数的栅格数据类型(shp、tab)。

在开发上GDAL支持多种语言的接口如:Perl、Python、VB6、Java、C#。

2、OGR(http://www.gdal.org/ogr/):OGR是C++的简单要素类库提供对各种矢量数据文件格式的读取(某些时候也支持写)功能。OGR是根据OpenGIS的简单要素数据模型和Simple features for COM(SFCOM)构建的。OGC也支持大多数的矢量数据类型支持数类型。

3、GeOxygene(http://www.oxygene-project.sourceforge.net/):GeOxygene 基于Java和开源技术同时提供一个实现OGC规范和ISO标准可扩展的对象数据模型(地理要素、几何对象、拓扑和元数据)。它支持Java开发接口。数据存储在关系数据中(RDBMS)保证用户快速和可靠的访问数据,但用户不用担心SQL描述语句,他们通过为应用程序建立UML和Java代码的模型。在对象和关系数据库之间使用开源软件进行映射。到现在可以使用OJB同时支持Oracle和PostGIS中的数据。
4、GML4J(http://gml4j.sourceforge.net/):GML4J是一个作用于Geography Markup Language(GML)的Java API工具。当前GM4J的作用是一个GML数据的扫描器。通过它可以读取和解释那代表地理要素、几何对象、它们的几何、要素的属性、集合对象的属性、复杂属性、坐标系统和其他的GML结构的XML。现阶段GML4J只支持GML读取和访问,在以后将支持GML数据的修改。

分析组件

1、JTS(http://sourceforge.net/projects/jts-topo-suite/):JTS Topology Suite是一套2维的空间谓词和函数的应用程序接口。它由Java语言写成,提供了全的、延续的和健壮的基本的2维空间算法的实现,并且效率非常高。Net Topology Suite(http;//nts.sourceforge.net/)则是一个.Net的开源项目,该项目的主要目的是将JTS Topology Suite应用程序提供给.Net应用程序使用。

2、GSLIB(http://www.gslib.com/):GSLIB是一个提供了空间统计的程序包,它是当前最强大和综合的一个统计包,并且具有灵活性和开放的接口。其缺点是缺少用户支持,用户界面不友好且缺少面向对象建模能力。

3、PROJ.4(http://trac.osgeo.org/proj/):PROJ.4是一个开源的地图投影库,提供对地理信息数据投影以及动态转换的功能,WMS,WFS或WCS Services也需要它的支持。

4、GeoTools(http://www.geotools.org/):GeoTools是也是遵循OGC规范的GIS工具箱。它拥有一个模块化的体系架构,这保证每个功能部分可以非常容易的加入和删除。 GeoTools目标是支持OGC所有的规范并且各类国际规范和标准。GeoTools.NET(http:// geotoolsnet.sourceforge.net/Index.html)则是与Java对应的.NET版本。

    平台层主要是构建在标准层、数据库层、中间件层基础上的可以扩展的系统框架。使用平台层可以简化我们搭建GIS框架的工作量。通过对平台的二次开发扩展可以让我们搭建基于GIS开放框架的GIS应用系统。平台多基于开源的GIS标准,同时兼容开源的空间数据库,与整个开放框架体有很好的兼容性。平台层根据应用的不同这里可以分为两大类:桌面平台、平台。桌面平台主要是指用于桌面应用的平台框架,web平台主要是指应于web应用的平台框架。

桌面平台:Grass GIS、OSSIM、SharpMap、World Wind、MapWindow

Web平台:GeoServer、MapServer、Mapnike、OpenLayers、TileCache

    从软件底层的开发语言角度讲,开源空间信息软件可以被独立的分为以下三种技术体系门类,在每种分类体系内部,开发人员往往是基于不同的项目交叉工作的,所以这种分法仅仅是方便了熟悉某种开发语言的程序员,对于用户和应用人员而言, 意义不大。

语言       开源软件                          
C/C++       GRASS、GDAL、OGR、GSLIB、OSSIM、Proj4、QGIS、MapWindow4、MapServer、Mapnik等    
Java GeoTools、GeOxygene 、GML4J、MapTools、GeoServer、JTS等
.Net NetTopologySuite、GeoTools.NET、SharpMap、World Wind、MapWindow6等
脚本 OpenLayers、TileCache等
</div>
    
    这段时间做了个shp、tab数据校验的小工具,最初准备使用geotools库,由于没有找到处理tab数据的相关类,只好使用GDAL,官方只提供 C++版本下载,想使用Java版接口须要自己编译,编译步骤比较麻烦,而且API文档也是在线版的,我将编辑好的库以及API文档上传至CSDN方便大家使用。
下载地址:http://download.csdn.net/detail/bbirdsky/5838397
API地址:http://download.csdn.net/detail/bbirdsky/5837301

来自:http://blog.csdn.net/bbirdsky/article/details/9627071