开源GIS总结(一)——总结

阅读: 评论:0

开源GIS总结(⼀)——总结
谈到GIS软件,⾸先让我们想到的便是GIS界的龙头⼤哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.6,其发展可谓风⽣⽔起。MapInfo软件也不错,可是给⼈的感觉是渐渐被淘汰了似的,周围使⽤该软件的⼈并不算多。然后接触了⼀些的是国内的SuperMap软件,MapGIS软件等,很遗憾的是作为武⼤的学⽣,竟然没有使⽤过GeoStar的产品。这些产品在国内GIS中的份额⼏乎可以覆盖全部。
介于商业软件的昂贵,我等⽆产阶级学⽣⾃然是消费不起。不过借助⽹络的强⼤,如何免费地安装并使⽤这些商业软件已成为公共的秘密。⾄于版权问题,在学⽣范围也不必理会,只是在应⽤到商业开发时才会有所顾忌。
作为⼀个⽆知的Coder,很好奇这⼀个个地图是如何显⽰出来的,这⼀个个投影是如何体现到地图上的,这⼀系列数据是如何存储到Shapefile、存储到数据库中的,这⼀个个分析功能是如何解决的,等等。显然这些商业软件不会告诉你答案,他们提供的开发接⼝都是⼀个个⿊箱。于是将触⾓转向开源软件界,试图去寻觅这些问题的答案。
回想以前做项⽬,写代码都缺少整理和归纳,等到⽤的时候却不到先前的资料,理解也不够。因此决定通过写⽇志的⽅式,将这些信息都记录下来,做⼀番整理的⼯作。以下内容是查阅相关资料并结合个
⼈理解总结的。
1.GIS开源软件简介
GIS的出现是上个世纪60年代的事,在当代众多IT缩写词出现之前,GIS已经在城市规划、⼟地管理、军事等⾏业得到了应⽤。GIS作为⼀门交叉学科,它的发展伴随着计算机技术的发展。随着软件的开源化趋势GIS软件也开向开源时代迈进。
不同于商业GIS软件,开源GIS软件不⽤背负数据兼容、易⽤性等问题的包袱,开发者能够集中精⼒于功能的开发,因此开源GIS软件普遍功能很强,技术也⾮常先进,其背后是来⾃技术狂热者和学院研究⽣的⼤⼒⽀持。
开源GIS软件⽬前已经形成了⼀个⽐较齐全的产品线。在⽹站上,我们会发现众多各具特⾊的GIS软件。⽼牌的综合GIS软件GRASS,数据转换库OGR、GDAL,地图投影算法库Proj4、Geotrans,也有⽐较简单易⽤的桌⾯软件Quantum GIS,Java平台上有MapTools,MapServer则是优秀的开源WebGIS软件。各种空间分析,模型计算尤其是开源GIS领域的强项。
开源GIS世界虽然繁荣,但其影响还是很⼩,其⾝份在外⼈眼⾥看来是⾼莫测的专业⼯具,现有的Linux发⾏版中也没有哪个集成了开源GIS⼯具。开源GIS技术虽然先进,但是缺乏良好的能够满⾜商
⽤的发⾏版本,因此涉⾜开源GIS领域的多是技术爱好者和科学家,⽽少有商业⼈⼠问津。如果能提供⼀个⽐较系统的、达到商⽤要求的开源GIS解决⽅案,并能获得稳定发⾏版,如同
Linux+Apache+MySQL+PHP那样,开源GIS前途将是不可限量。
2.当前较为成熟的GIS开源软件
2.1从开发结构⾓度看
⼀套GIS的完整开发框架,包括四个组成部分:标准层、数据库层、平台层和组间层。这四个部分从下到上,从底层到⾼层,共同构成⼀个完整的体系。
2.1.1标准层
大型超市管理>条桶标准层主要是⽤于制定各类标准。开放的GIS标准主要有两⼤体系:OGC()、ISO/TC211()。前者为那些法律上的国际组织制定的标准添加详细的实现标准,同时也在市场需要的时候扩展那些法律上的标准,其侧重于系统的实现上;后者所制订的ISO19100系列的地理信息标准,是属于基础性的标准,注重概念性规格叙述,独⽴于执⾏平台外。
其中,WKT(Well-Known Text)与WKB(Well-Known Binary)是OGC制定的空间数据的组织规范,顾名
思义,WKT是以⽂本形式描述空间数据,⽽WKB是以⼆进制形式描述空间数据。⽬前⼤部分⽀持空间数据存储的数据库构造空间数据都采⽤这两种⽅式。
数据库层主要是采⽤开源地理信息标准采⽤开源⽅式开发的空间数据库项⽬,包括POSTGIS、MySQL空间扩展等。
《Simple Features specifications for SQL》是OGC制定的关于在基于SQL的关系数据库中存储空间数据标准。这个标准(如图)定义了数据类型、空间操作符号、输⼊和输出格式、函数以及其他。⼤多数SQL数据库的空间扩展都遵循这个标准,包括PostGIS和MySql 空间扩展。
2.1.2.1PostGIS
PostGIS⽀持所有的空间数据类型,这些类型包括:点(POINT)、线(LINESTRING)、 多边形(POLYGON)、多点(MULTIPOINT)、多线(MULTILINESTRING)、 多多边形(MULTIPOLYGON)和集合对象集(GEOMETRYCOLLECTION)等。PostGIS⽀持所有的对象表达⽅法,⽐如WKT和WKB。PostGIS⽀持所有的数据存取和构造⽅法,如GeomFromText()、AsBinary(),以及GeometryN()等。PostGIS提供简单的空间分析函数(如Area和Length)同时也提供其他⼀些具有复杂分析功能的函数,⽐如Distance。PostGIS提供了对于元数据的⽀持,如GEOMETRYCOLUMNS和SPATIAL REF SYS,同时,PostGIS也提供了相应的⽀持函数,如AddGeometryColumn和DropGeometryColumn。PostGIS提供了⼀系列的⼆元谓词(如Contains、Within、Overlaps和Touches)⽤于检测空间对象之间的空间关系,同时返回布尔值来表征对象之间符合这个关系。PostGIS提供了空间操作符(如Union和Difference)⽤于空间数据操作。⽐如,Union操作符融合多边形之间的边界。两个交迭的多边形通过Union运算就会形成⼀个新的多边形,这个新的多边形的边界为两个多边形中最⼤边界。
2.1.2.2MySql空间扩展
MySQL是世界上最流⾏的开源数据软件。MySQL从4.1开始引⼊了空间功能,实现和使⽤⽅式基本和POSTGIS类似。
2.1.3组件层
数据库组件层按照功能可分为两类:数据管理组件和分析组件。
2.1.
3.1数据管理组件
(1)GDAL
GDAL()是⼀个基于C++的栅格格式的空间数据格式解释器。作为⼀个类库,对于那些⽤它所⽀持的数据类型的应⽤程序来说它代表⼀种抽象的数据模型。GDAL持⼤多数的栅格数据类型。
在开发上GDAL⽀持多种语⾔的接⼝如:Perl、Python、VB6、Java、C#。
(2)OGR
OGR()是C++的简单要素类库提供对各种⽮量数据⽂件格式的读取(某些时候也⽀持写)功能。OGR是根据OpenGIS的简单要素数据模型和Simple features for COM(SFCOM)构建的。OGC也⽀持⼤多数的⽮量数据类型⽀持数类型。
(3) GeOxygene
GeOxygene()基于Java和开源技术同时提供⼀个实现OGC规范和ISO标准可扩展的对象数据模型(地理要素、⼏何对象、拓扑和元数据)。它⽀持Java开发接⼝。数据存储在关系数据中(RDBMS)保证⽤户快速和可靠的访问数据,但⽤户不⽤担⼼SQL描述语句,他们通过为应⽤程序建⽴UML和Java代码的模型。在对象和关系数据库之间使⽤开源软件进⾏映射。到现在可以使⽤OJB同时⽀持Oracle和PostGIS中的数据。
GML4J()是⼀个作⽤于Geography Markup Language(GML)的Java API⼯具。当前GM4J的作⽤是⼀个GML数据的扫描器。通过它可以读取和解释那代表地理要素、⼏何对象、它们的⼏何、要素的属性、集合对象的属性、复杂属性、坐标系统和其他的GML结构的XML。现阶段GML4J只⽀持GML读取和访问,在以后将⽀持GML数据的修改。
2.1.
3.2分析组件
(1)JTS
JTS Topology Suite()是⼀套2维的空间谓词和函数的应⽤程序接⼝。它由Java语⾔写成,提供了全的、延续的和健壮的基本的2维空间算法的实现,并且效率⾮常⾼。
Net Topology Suite(http;//nts.sourceforge/)则是⼀个.Net的开源项⽬,该项⽬的主要⽬的是将JTS Topology Suite应⽤程序提供给.Net应⽤程序使⽤。
(2) GSLIB
GSLIB()是⼀个提供了空间统计的程序包,它是当前最强⼤和综合的⼀个统计包,并且具有灵活性和开放的接⼝。其缺点是缺少⽤户⽀持,⽤户界⾯不友好且缺少⾯向对象建模能⼒。
(3) PROJ.4
PROJ.4()是⼀个开源的地图投影库,提供对地理信息数据投影以及动态转换的功能,WMS,WFS或WCS Services也需要它的⽀持。
(4)GeoTools
GeoTools(/)是也是遵循OGC规范的GIS⼯具箱。它拥有⼀个模块化的体系架构,这保证每个功能部分可以⾮常容易的加⼊和删除。 GeoTools⽬标是⽀持OGC所有的规范并且各类国际规范和标准。
GeoTools已经在⼀个统⼀的框架下开发了⼀系列的JAVA对象集合,其完全满⾜了OGC的服务端的各
种服务并且提供了OGC兼容的单独应⽤程序。GeoTools项⽬由⼀系列的API接⼝以及这些接⼝的实现组成。开发⼀整套产品或应⽤程序并不是GeoTools的⽬的,但是其⿎励其他应⽤项⽬使⽤它以各类⼯作。
GeoTools.NET( geotoolsnet.sourceforge/Index.html)则是与Java对应的.NET版本。
2.1.4平台层
平台层主要是构建在标准层、数据库层、中间件层基础上的可以扩展的系统框架。使⽤平台层可以简化我们搭建GIS框架的⼯作量。通过对平台的⼆次开发扩展可以让我们搭建基于GIS开放框架的GIS应⽤系统。平台多基于开源的GIS标准,同时兼容开源的空间数据库,与整个开放框架体有很好的兼容性。平台层根据应⽤的不同这⾥可以分为两⼤类:桌⾯平台、平台。桌⾯平台主要是指⽤于桌⾯应⽤的平台框架,web平台主要是指应于web应⽤的平台框架。
2.1.4.1桌⾯平台
(1)Grass GIS
GRASS(地理资源分析⽀持系统, )是⼀个栅格/⽮量GIS、图像处理系统和图件成图系统。GRASS包括超过350个程序和⼯具,实现:1)显⽰器和纸质地或图象的打印显⽰;2)操作栅格、⽮量或点数据;
3)处理多光谱图像数据;4)创建、管理和存储空间数据。GRASS⽀持图形界⾯或⽂字界⾯。 GRASS可以与商⽤打印机、绘图仪、数字化仪或商⽤数据库交互。
GRASS基于GNUGPL协议下发⾏,有超过100万⾏的C源代码可以⾃下载得到。GRASS提供了⼀个复杂的GIS库,可⽤于开发⾃⼰的项⽬。
(2)OSSIM
OSSIM()是⼀个⽤于遥感、图⽚处理、地理信息系统、照相测量⽅⾯的⾼性能软件。OSSIM库主要使⽤C++完成,⽀持多种平台,现在包括Linux、dows、MacOS X和Solaris,并且可以移植到其他平台。由于OSSIM库⽤了模型⼀控制器⼀视图(MCv)的结构,所以算法及实现与GUI是分离的,使得OSSIM可以⽀持多种GUI接⼝。第⼀个GUI的实现使⽤了QT,其的GUI框架及接⼝也在开发计划中(如
Cocoa/Windows等)。
(3)SharpMap
SharpMap()是⼀个基于 2.0使⽤c#开发的Map渲染类库,可以渲染各类GIS数据(⽬前⽀持ESRIShape和PostGIS格式),可应⽤于桌⾯和Web程序。⽬前稳定版本为0.9(2.0beta已发布),代码⾏数10000⾏左右,实现了下功能:
①⽀持的数据格式:PostGreSQL/PostGIS,ESRI Shapefile,⽀持WMS layers,⽀持ECW 和JPEG2000 栅格数据格式;
②Windows Forms 控件,可以移动和缩放;
③通过HttpHandler⽀持ASP程序;
④点、线、多边形、多点、多线和多多边形等⼏何类型和⼏何集合(GeometryCollections)等OpenGIS Simple Features Specification;
⑤可通过Data Providers(增加数据类型⽀持)、Layer Types(增加层类型)和Geometry Types等扩展;
⑥图形使⽤GDI+渲染,⽀持anti-aliased等;
⑦专题图。
SharpMap⽬前可以算是⼀个实现了最基本功能的GIS系统,但⼀些很重要的功能,例如投影,⽐例尺,空间分析,图形的属性信息,查询检索等等,通过同NTS等开源空间类库的结合可以在SharpMap中实现的空间变换、缓冲区等功能。
(4) World Wind
World Wind()是个开放软件,允许⽤户修改WorldWind软件本⾝。软件⽤C#编写,调⽤微软SQLServer影像库TerrainServer进⾏全球地形三位显⽰,低分辨率的Blne marble数据包含的初始安装内,当⽤户放⼤到特定区域时,附加的⾼分辨率数据将会⾃动从NASA 服务器上下载。它通过将遥感影像与RTM⾼程(航天飞机雷达地形数据库)叠加⽣成三位地形。在功能⽅⾯,软件具有长度测量功能(仅能测量两点间的直线距离)、坐标和⾼程查询、屏幕截图、添加标注及三位动态显⽰等功能。
(5) MapWindow
MapWindow GIS()桌⾯应⽤程序是⼀个免费开源基于标准的地理信息软件,使⽤它可以浏览和编辑多种GIS数据格式。这个软件包括很多地理处理的插件如:缓冲分析、合并处理等,也可以使⽤脚本编辑器编写VB.NET和C#的脚本。最新版本的MapWindow应⽤程序完全基于.NET2.0平台和C#。现在⼜开发出了MapWindow.Web可以让⽤户更容易开发基于ASP.Net的web应⽤。这样MapWindow逐渐形成⼀个完整的体系,从开发嵌⼊式系统的MapWinGIS.OCX到应⽤程序框架的MapWindow应⽤程序再到发布web程序的MapWindow.web。
MapWindow 6()是在MapWindow 4的基础上进⾏改进,整个框架采⽤C#完成,代码完整清晰,其优点是:
①完全采⽤平台(不需要COM注册或DLL加载);
②可以通过使⽤Mono运⾏在Mac或Linux平台上;
③⼤量扩展了符号集,点、线、⾯的符号化更丰富,⽽且可以基于属性内容进⾏专题化,同时⽀持⽮量化的字体符号;
华能国际商务平台④⾯向对象的代码:直接对各要素进⾏重叠分析、相交分析等。⽀持OGC的⼏何对象模型,基于System.Data.DataTable的数据集;
⑤可兼容的插件模式:插件的接⼝就像普通对象的事件对象⼀样;
⑥组件模式:所有的组件通过MapWindow.dll提供,能够拖放控件就可以定制GIS程序。
2.1.4.2 Web平台
(1)GeoServer
GeoServer()是⼀个符合J2EE规范,且实现了WCS、WMS及WFS规格,⽀持TransactionWFS(WFS-T),其技术核⼼是整合了颇负盛名的JavaGISolkit--GeoTools。对于空间信息存储,它⽀持ESRI Shap
efile及PostGIS、Oracle、ArcSDE等空间数据库,输出的GML档案满⾜GML2.1的要求。由于它是纯Java的,所以更适合于复杂的环境要求,⽽且由于它的开源,所以开发组织可以基于GeoServer灵活实现特定的⽬标要求,⽽这些都是商业GIS组件所缺乏的。
GeoServer作为⼀个纯粹的Java实现,被部署在应⽤服务器中,简单的如Tomcat等;它的WMS和WFS组件响应来⾃于浏览器或uDig的请求,访问配置的空间数据库,如PostGIS、OracleSpatial等,产⽣地图和GML⽂档传输⾄客户端。
(2)MapServer
MapServer()基于C语⾔,利⽤GEOS、OGR/GDAL对多种失量和栅格数据的⽀持,通过Proj.4共享库实时的进⾏投影变换。同时,还集合PostGIS和开源数据库PostgreSQL对地理空间数据进⾏存储和SQL查询操作,基于ka.map、MapLab、Cartoweb和Chameleon等⼀系列客户端JavaScfiptAPI来⽀持对地理空间数据的传输与表达,并且遵守开放地理空间协会(Open Geospatial Consortium,OGC)制定的WMS、WFS、WCS、WMC、SLD、GML和FilterEncoding等⼀系列规范。对不同项⽬的借鉴和运⽤,增强了MapServer的功能,并使开发团队更多地关注于⽹络制图的核⼼功能。
MapServer是⼀套⽤来构建空间⽹络应⽤的开源开发环境,并不是⼀套全能的GIS系统,它更擅长于在⽹络上展⽰空间数据,在服务器端实时的将地理空间数据处理成地图发送给客户端。MapServer拥
有⼀个庞⼤的社区,并有⼀个来⾃全球的近20名核⼼开发⼈员以致⼒于产品的维护和增强。同时还有各种不同的组织机构为MapServer的开发和维护提供资助。
(3) Mapnik
Mapnik()是⼀个⽤于开发地图应⽤程序的⼯具。Mapnik⽤C++写同时有Python绑定接⼝。使⽤Mapnik可以很⽅便的进⾏桌⾯和web应⽤程序开发。
Mapnik主要提供地图的渲染功能,使⽤AGC库同时提供世界级的标注引擎。可以说Mapnik是现在最强⼤的开源地图渲染⼯具。
(4) OpenLayers
OpenLayers()是⼀个开源的jS框架,⽤于在您的浏览器中实现地图浏览的效果和基本的zoom,pan等功能。OpenLayers⽀持的地图来源包括了WMS,GoogleMap,KaMap,MSVirtualEarth等等,您也可以⽤简单的图⽚作为源,在这⼀⽅⾯OpenLayers提供了⾮常多的选择。此外,OpenLayers实现了⾏业标准的地理数据访问⽅法如OGC的Web Mapping Service(WMS)and Web Feature Service(WFS)协议。OpenLayers可以简单的在任何页⾯中放⼊动态的地图。它可以从多种的数据源加载显⽰地图。MetaCarta公司开始开发了OpenLayers的初始版本同时将它开放给了公众以作为以后各种地理信息系统的应⽤。
(5) TileCache
TileCache()是⼀个实现WMS.C的标准的服务器, TileCache提供了⼀个基于PythonTile的WMS.C/TMS服务器,同时具有开可插⼊的缓存和后台渲染机制。在最简单的应⽤中,只要求TileCache可以访问磁盘可以运⾏Python的CGI脚本。同时可以连接需要缓存的WMS 服务。使⽤这些资源,你可以创建任何WMS服务在你的本地硬盘的缓存,同时使⽤⽀持WMS-C标准的客户端如:OpenLayers或任何⽀持TMS的客户端如:OpenLayers和wordKit就可以访问这些缓存数据。
2.2从语⾔派系⾓度看
从软件底层的开发语⾔⾓度讲,开源空间信息软件可以被独⽴的分为以下三种技术体系门类,在每种分类体系内部,开发⼈员往往是基于不同的项⽬交叉⼯作的,所以这种分法仅仅是⽅便了熟悉某种开发语⾔的程序员,对于⽤户和应⽤⼈员⽽⾔, 意义不⼤。
五纵七横
团体操队形语⾔
开源软件
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等

本文发布于:2023-07-05 07:27:07,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/172296.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:开源   空间   软件   标准
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图