gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1889回复:0

开源地理信息软件框架简介pdf

楼主#
更多 发布于:2015-05-14 14:41
pdf文件下载地址
开源空间信息软件.pdf

开源空间信息软件的发展仅仅20年左右的时间,但造就了如GRASS、OSSIM这样功能突出、性能异常优越,不亚于任何一款商业软件的标志性项目,更有如WorldWind、MapGuide等用户体验良好、方便用户使用的前端平台。

 
      从开发语言角度来划分开源gis主要包括三大派系“C派”、“Java派”和“C#派”
    
      一、 “C”派系项目
 
      “C”派系项目包括了UMN
MapServer、GRASS、GDAL/OGR、OSSIM、Proj4、GEOS、PostGIS、QGIS、MapGuide
OpenSource,以及OpenEV等。同时,还包括了使用C库的各类脚本语言的程序,包括Python、Perl,以及PHP不同的语言。
       “C”派系是三大派系中的老大,最成熟也是拥有开发项目最多的派系。这与C语言本身的发展历史,以及与Unix渊源都是分不开的,因为其语言的强大和优异性能已经吸引了大量活跃的开发社区和开发者个人。
 
      
概略了解“C”派系中最有代表性的几个大型项目,其中有些项目已经成为诸多其他项目的通用基础,比如空间数据格式的支持坐标投影转换功能,这点也是与空间
信息与通用软件项目的重要区别。(ps当初上学时一提投影就晕倒,后来投影也是用来蒙非gis专业人员的法宝,一蒙一个准,其实到现在我只是用过
WGS84坐标和北京54坐标,其他的也没学会)
 
      GDAL/OGR类库目前是两个不同的组成模块,GDAL提供了一整套读写不同栅格数据格式的功能的抽象类库,
而OGR则是一个读写诸多矢量数据格式功能的抽象类库。(ps前面投影有了,现在矢量和栅格这两个数据格式也有了,这个也是我后来蒙那些号称懂gis,但
是非gis专业开发人员的考题)
 
      然而因为历史的原因,两大类库是用同样一个生成系统进行维护的,最重要的是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格式互操作的学生项目。
喜欢0 评分0
游客

返回顶部