`
conkeyn
  • 浏览: 1501212 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

GIS开源软件概述

阅读更多

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

“C”派系项目

“C”派系项目包括了UMN MapServer、GRASS、GDAL/OGR、OSSIM、Proj4、GEOS、PostGIS、 QGIS、MapGuide OpenSource,以及OpenEV等。同时,还包括了使用C库的各类脚本语言的程序,包括Python、Perl,以及PHP不同的语言。

“C”派系是三大派系中的老大,最成熟也是拥有开发项目最多的派系。这与C语言本身的发展历史,以及与Unix渊源都是分不开的,因为其语言的强大和优异性能已经吸引了大量活跃的开发社区和开发者个人。

概略了解“C”派系中最有代表性的几个大型项目,其中有些项目已经成为诸多其他项目的通用基础,比如空间数据格式的支持坐标投影转换功能,这点也是与空间信息与通用软件项目的重要区别。
GDAL/OGR类库目前是两个不同的组成模块,GDAL提供了一整套读写不同栅格数据格式的功能的抽象类库,而OGR则是一个读写诸多矢量数据格式功能的抽象类库。

然而因为历史的原因,两大类库是用同样一个生成系统进行维护的,最重要的是GDAL/OGR的作者是同一人,该人目前也是OSGeo的会长 Frank Warmerdam,其在OpenSource Geospatial领域早已大名鼎鼎。许多程序员都是拜读他的代码理解空间信息软件精髓的。

目前GDAL支持达50多种栅格数据格式,几乎覆盖了所有的商业应用软件的格式,OGR已经支持包括著名的ESRI Shapefiles、 ArcSDE,以及MapInfo、Oracle公司在内的诸多商业公司的矢量格式。

数据是软件的血液,空间信息产业更是如此,海量数据在空间信息软件行业体现的最为明显,没有一套高效率的数据转换模型和类库很难完成异构数据的集成和融合,正是有了GDAL/OGR,构建在其之上的各类空间信息软件项目才有了生命力。

Proj4是一套开源的坐标投影转换类库,它可以完成在两套不同制图投影系统之间的转换,同样不同的椭球体或大地基准面之间也可以成功的完成转换。Proj4类库最早是由Gerald Evenden先生作为工具集为美国地质调查局撰写的,目前依然是由Frank Warmerdam先生进行维护和管理,Evenden依然活跃在邮件列表中,尽管他已经不再写代码但仍然提供最新的数学投影模型。

GEOS是“Geometry Engine, Open Source”的含义,其提供了OGC规范中简单几何要素对象操作的C++语言的实现,详细的规范可以在OGC网站上找到(“Simple Features for SQL”),具体的实现方法里面都有所描述。 拓扑模型的计算方法简单但是一般来讲很难得以实现。GEOS/JTS/NTS的算法则对于所有的空间谓词都是非常强壮的,同时在空间操作方面也非常完善。

GRASS、OSSIM、MapGuide OpenSource、PostGIS等项目有专文论述,本文不加以复述。


“Java”派系项目

“Java”派系项目主要是内核或前端平台由Java语言撰写的项目,包括了开发人员熟悉的GeoTools、uDig、GeoServer、 JavaTopologySuite、JUMP,以及DeeGree等。

在“Java”派系的世界中,许多独立的项目一开始都试图完成一整套体系结构的工具集合,例如OpenMap、GeoTools,以及 deegree。

目前,OpenMap项目仍然处于独立研发的状态,没有与其他想法发生融合、交叉。但是deegree和GeoTools项目已经决定逐渐融合到一起,另外最新的uDig桌面平台使用了同样的一套GeoServer和GeoTools底层支持类库和资源。

目前, JAVA世界中的开发人员目前都围绕着JTS拓扑工具集作为几何操作的基础类库,或者是基于其之上的第二个层次的类库 GeoTools。

JTS是目前开源JAVA GIS程序开发人员所有项目的核心几何类库。JTS提供了一整套遵循OGC简单几何对象规范的实现,与前面GEOS类似,所有的函数描述都是可以在“Simple Features for SQL Specification”找到的。

使得JTS不同于其他项目的也正是“空间谓词”与“空间操作”。空间谓词是比较两个空间对象并返回一个布尔变量值作为结果,它表明了存在于两个空间对象之间特殊的关系。

比如典型的空间谓词有Contains(), Intersects(), Touches(), and Crosses()函数等。JTS项目中对该些函数的实现是异常强壮的,即使是奇异几何对象或是临时的坐标系统运算也不能使其运算不正常或计算错误。目前绝大多数的商业软件仍然在最基础的空间谓词上出现问题,这正是JTS项目的重要意义。“空间操作”则主要是对两个几何对象进行计算并且返回一个新的几何实体。

比较典型的操作函数如Difference(), Union(),以及Buffer()等。JTS中的操作算法已经被广泛的经过了测试。“空间谓词”与“空间操作”之所以有着如此重要的意义主要是在于其非常难于编码实现,因为这个原因,JTS类库被各类开源空间信息软件项目广泛应用,使用 JTS,它们可以基于最新的规范的几何实体来完成,同时也拥有了复杂空间方法的实现。

GeoTools是也是遵循OGC规范的GIS工具箱。它拥有一个模块化的体系架构,这保证每个功能部分可以非常容易的加入和删除。 GeoTools目标是支持OGC所有的规范并且各类国际规范和标准。

GeoTools已经在一个统一的框架下开发了一系列的JAVA对象集合,其完全满足了OGC的服务端的各种服务并且提供了OGC兼容的单独应用程序。GeoTools项目由一系列的API接口以及这些接口的实现组成。开发一整套产品或应用程序并不是GeoTools的目的,但是其鼓励其他应用项目使用它以各类工作。

“NET”派系项目

“NET”体系框架目前是微软公司最新的企业级体系,其驾御在NET CLR之上包括了VB.NET、C++和C#等多种语言,众多的程序开发语言都是基于一套虚拟的设备完成工作和运转的,因此无论是用什么语言撰写,只要符合NET CLR规范并基于其运行的程序,我们都归为“NET”派系的项目范畴中。这其中包括了MonoGIS、Appomattox、NetTopologySuite、GeoTools.NET,以及SharpMap等。

PostGIS/PostgreSQL项目的标准原生接口libpq(C/C++)、PGSQL(C#语言撰写)和JDBC(Java语言撰写)可以被各种派系的软件完成各类工作,因其主要的目的是完成软件之间的互操作。

然而,因为PostGIS/PostgreSQL的内核是纯C语言撰写,同时依赖于多个基于C语言开发的GIS类库,所以将其归为“C”派系也就、非常正常可信了。另外,比如MapServer软件可以被Java开发者广泛的使用,这是通过使用JNI桥接技术实现的,目前通过OGC规范的WMS 和WFS协议也可以完成类似的工作。

“NET”派系是年纪最小也是内容最少的一个派系,虽然时间稍短,但我们仍然不容小看其发展前景,随着NET平台在全球的广泛应用,另外还有类似 MONO项目的蓬勃发展,Windows与Linux之间代沟逐渐变小,两者之间的互操作也是几代程序员的梦想,从上图中可以明显的看到NTS仍然作为 JTS在NET世界的替代占据着重要的位置,GeoTools.NET作为GeoTools的替代也非常的重要,基于这两个项目的MonoGIS目前是 Mono平台下的开源完整GIS。已经发布了Internet MapServer,OGC WMS实现和空间格式互操作的工具。另外一个非常年轻的项目 SharpMap也因为网络地图的发布做出了自己的特色。本专题另有专文会对SharpMap和MsSQLSpatial进行描述。

World Wind是美国航空航天局 (NASA)推出的,主要是通过Client/Server的架构,由World Wind在全球尺度下统一管理海量的遥感影像和GIS空间数据,是开源版的Google Earth。

目前World Wind拥有的数据包括 Blue Marble、Land Sat 7、SRTM、NASA SVS、MODIS、 GLOBE、USGS…等。目前,World Wind OGC WMS1.3.1的最新规范,可以获取最新的空间数据模型和模拟演示等,非常适合科研单位的研究人员、高校师生用于教学和研究。2006年,Google 在全球支持开源活动Summer Of Code中,就支持了WorldWind与 Shapefiles格式互操作的学生项目。

勾勒未来

通过对诸多项目的介绍,希望读者清晰了解哪些项目是自己的工程人员可以快速掌握的? 哪些项目是可以解决自己应用工程难题的? 哪些项目是可以替代已有商业软件的?

通过这种对比和思考,相信读者能对国际目前的开源空间信息技术有更加清晰的了解,并可能参与其中。


分享到:
评论

相关推荐

    开源GIS视频教程优化版

    掌握开源GIS设计方法和技术,重点掌握开源GIS软件的基本应用 2、通过对典型开源GIS项目的分析,重点学习GIS设计的基本内容:项目规划,组织管理,系统设计,编码技能和系统测试与维护 3、通过典型模式分析,掌握...

    GIS视频教程下载

    了解常见开源桌面、Web和移动GIS等各种平台软件功能和设计;学习开源开发方法和开源GIS项目设计。 课时1:试听 课时2:付费学员服务指引 课时3:1.GIS空间分析 课时4:2.开源软件 课时5:3.开源GIS课程 课时6:4....

    国内外主流的三维GIS软件

     本文唱谈了十九个国内外主流的三维GIS软件,并对其基本特点、发展历程、应用等方面做了总结概述。由于作者水平有限,不足之处恳请读者批评指正。  国外三维GIS软件:  一重唱·美国谷歌公司:Google Earth--...

    浅析GIS大数据.doc

    而GIS空 间数据产生的商业价值每年正以15.5%的速度增加,是GIS软件和服务的两倍[7]。GIS数 据量大的第二层含义是指数据单位个数多。比如"天地图"各类地名和POI(Point of Interest,兴趣点)有1100多万条, 2011年8...

    支持美国保护措施替代模型的土壤参数大型GIS地理数据库

    核心产品由区域分水岭布局概述,并由GIS土地使用图层支持,使用文件地理数据库(FGDB)数据结构开发,该数据结构通过基于Python的定制工具将数据直接引入到地理处理工作流中。 FGDB工具可以有效地存储空间土壤特征...

    1 WebGIS简介.ppt

    WebGIS(网络地理信息系统)是指工作在Web网上的GIS,是传统的GIS在网络上的延伸和发展,具有传统GIS的特点,可以实现空间数据的检索、查询、制图输出、编辑等GIS基本功能,同时也是Internet 上地理信息发布、共享和...

    udig-platform:uDig父项目包含所有核心组件。 在社区存储库中可以找到更多插件

    用户友好型桌面Internet GIS (uDig)是一个开源( + )桌面应用程序框架,它使用Eclipse Rich Client( RCP )技术构建。 uDig可用作独立应用程序 uDig可以使用RCP “插件”扩展 uDig可以用作现有RCP应用程序中的...

    django-docs-2.2-zh-hans.zip

    尽可能简化构建 GIS Web 应用程序的流程,和利用空间化数据的能力是它的目标。 常用的 Web 应用程序工具 Django 提供了多种开发 Web 应用程序所需的常用工具: 认证: 概述 | 使用认证系统 | 密码管理 | 自定义认证 ...

    MySQL5.1参考手册官方简体中文版

    北京万里开源软件有限公司在全国范围提供MySQL产品相关的商务及 技术方面的咨询与支持服务。垂询请致电:8610-65694500,或发送邮件至:sales@greatlinux.com. 本手册编译于2006-7-29,目录及索引由官方HTML文档...

    Matlabconcavepointmatchingsourcecode-Encyclopedia-of-Applied-in-Informa

    信息技术和跨学科研究应用百科全书的概述。 百科全书集包括许多科学主题,为全世界的学生,硕士学位,博士学位,博士后,研究员,专家,教授,企业家精神,公司图书馆和公司启动提供了科学研究支持。 规则的起源:...

    asp.net知识库

    .NET的反射在软件设计上的应用 关于跨程序集的反射 实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的...

    8d19d988d6f:有待

    乔莫·肯雅塔农业技术大学地理与地理空间工程学协会。 学生(AGGES) 寻找您的开发人员 这是AGGES的官方网站,...这是一个免费且开源的项目(仅使用免费提供的产品),由受启发的JKUAT AGGES学生俱乐部成员发起,始于

Global site tag (gtag.js) - Google Analytics