PostGIS做为PostgreSQL对象关系数据库系统的扩展模块,与Oracle中Spatial类似,使用SFS规范,遵循OGC 的Simple Feature for SQL。java
支持全部的空间数据类型,这些类型包括:点(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运算就会造成一个新的多边形,这个新的多边形的边界为两个多边形中最大边界。web
PostGIS也具备大型数据库的特性,如数据备份,数据库恢复,灾难恢复等。算法
MySQL从4.1开始引入了空间功能,实现和使用方式基本和POSTGIS相似。但函数支持没有postGIS多,对于高精度函数须要在5.6版本才开始支持。mongodb
MongoDB(https://www.mongodb.com/)是一个开源面向文档的NoSQL 数据库,用C++编写。它提供一种强大、灵活、可扩展的数据存储形式。MongoDB功能丰富,内置MapReduce聚合的支持,支持地理空间索引。MongoDb具备弱一致性,保证用户的访问速度,文档结构的访问方式,可以更便捷地获取数据,内置GirdFS 支持大容量的储存,内置Sharding,第三方支持丰富,性能优越。MongoDB在存储空间数据比传统的关系数据库如MySQL 和PostgreSQL 更具优点。MongoDB 对空间数据是原生支持,不须要安装第三方空间数据库引擎便可构建空间索引进行进行快速的空间查询。MongoDB 支持平面( 2d) 和球面( 2dsphere indexes) 两种空间索引。面向大众型的GIS 应用会存储大量的POI 数据或者用户产生的位置数据,利用MongoDB 储存能够提升检索效率。MongoDB 支持MapReduce计算模型,处理海量LBS数据有较高的效率。MongoDB有多种基于的Node.JS的第三方库实现对MongoDB的操做,这样使得对数据的操做更加的便捷。数据库
能够接受带有空间位置坐标的信息,包括geopoint和geoshape(线面),同时能够实现空间聚合,geohash等功能。c#
GDAL(http://www.gdal.org/)是一个基于C++的栅格格式的空间数据格式解释器。做为一个类库,对于那些用它所支持的数据类型的应用程序来讲它表明一种抽象的数据模型。GDAL持大多数的栅格数据类型。浏览器
在开发上GDAL支持多种语言的接口如:Perl、Python、VB六、Java、C#。缓存
OGR(http://www.gdal.org/ogr/)是C++的简单要素类库提供对各类矢量数据文件格式的读取(某些时候也支持写)功能。OGR是根据OpenGIS的简单要素数据模型和Simple features for COM(SFCOM)构建的。OGC也支持大多数的矢量数据类型支持数类型。服务器
GeOxygene(http://www.oxygene-project.sourceforge.net/)基于Java和开源技术同时提供一个实现OGC规范和ISO标准可扩展的对象数据模型(地理要素、几何对象、拓扑和元数据)。它支持Java开发接口。数据存储在关系数据中(RDBMS)保证用户快速和可靠的访问数据,但用户不用担忧SQL描述语句,他们经过为应用程序创建UML和Java代码的模型。在对象和关系数据库之间使用开源软件进行映射。到如今可使用OJB同时支持Oracle和PostGIS中的数据。网络
GML4J(http://gml4j.sourceforge.net/)是一个做用于Geography Markup Language(GML)的Java API工具。当前GM4J的做用是一个GML数据的扫描器。经过它能够读取和解释那表明地理要素、几何对象、它们的几何、要素的属性、集合对象的属性、复杂属性、坐标系统和其余的GML结构的XML。现阶段GML4J只支持GML读取和访问,在之后将支持GML数据的修改。
JTS Topology Suite(http://sourceforge.net/projects/jts-topo-suite/)是一套2维的空间谓词和函数的应用程序接口。它由Java语言写成,提供了全的、延续的和健壮的基本的2维空间算法的实现,而且效率很是高。
Net Topology Suite(http;//nts.sourceforge.net/)则是一个.Net的开源项目,该项目的主要目的是将JTS Topology Suite应用程序提供给.Net应用程序使用。
GSLIB(http://www.gslib.com/)是一个提供了空间统计的程序包,它是当前最强大和综合的一个统计包,而且具备灵活性和开放的接口。其缺点是缺乏用户支持,用户界面不友好且缺乏面向对象建模能力。
PROJ.4(http://trac.osgeo.org/proj/)是一个开源的地图投影库,提供对地理信息数据投影以及动态转换的功能,WMS,WFS或WCS Services也须要它的支持。
GeoTools(http://www.geotools.org/)是也是遵循OGC规范的GIS工具箱。它拥有一个模块化的体系架构,这保证每一个功能部分能够很是容易的加入和删除。 GeoTools目标是支持OGC全部的规范而且各种国际规范和标准。
GeoTools已经在一个统一的框架下开发了一系列的JAVA对象集合,其彻底知足了OGC的服务端的各类服务而且提供了OGC兼容的单独应用程序。GeoTools项目由一系列的API接口以及这些接口的实现组成。开发一整套产品或应用程序并非GeoTools的目的,可是其鼓励其余应用项目使用它以各种工做。
GRASS(地理资源分析支持系统, http://grass.fbk.eu/)是一个栅格/矢量GIS、图像处理系统和图件成图系统。GRASS包括超过350个程序和工具,实现:1)显示器和纸质地或图象的打印显示;2)操做栅格、矢量或点数据;3)处理多光谱图像数据;4)建立、管理和存储空间数据。GRASS支持图形界面或文字界面。 GRASS能够与商用打印机、绘图仪、数字化仪或商用数据库交互。
GRASS基于GNUGPL协议下发行,有超过100万行的C源代码能够自下载获得。GRASS提供了一个复杂的GIS库,可用于开发本身的项目。
OSSIM(http://www.ossim.org/)是一个用于遥感、图片处理、地理信息系统、照相测量方面的高性能软件。OSSIM库主要使用C++完成,支持多种平台,如今包括Linux、dows、MacOS X和Solaris,而且能够移植到其余平台。因为OSSIM库用了模型一控制器一视图(MCv)的结构,因此算法及实现与GUI是分离的,使得OSSIM能够支持多种GUI接口。第一个GUI的实现使用了QT,其的GUI框架及接口也在开发计划中(如Cocoa/Windows等)。
SharpMap(http://www.codeplex.com/SharpMap)是一个基于.net 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.net程序;
④点、线、多边形、多点、多线和多多边形等几何类型和几何集合(GeometryCollections)等OpenGIS Simple Features Specification;
⑤可经过Data Providers(增长数据类型支持)、Layer Types(增长层类型)和Geometry Types等扩展;
⑥图形使用GDI+渲染,支持anti-aliased等;
⑦专题图。
SharpMap目前能够算是一个实现了最基本功能的GIS系统,但一些很重要的功能,例如投影,比例尺,空间分析,图形的属性信息,查询检索等等,经过同NTS等开源空间类库的结合能够在SharpMap中实现的空间变换、缓冲区等功能。
World Wind(http://worldwind.arc.nasa.gov/)是个开放软件,容许用户修改WorldWind软件自己。软件用C#编写,调用微软SQLServer影像库TerrainServer进行全球地形三位显示,低分辨率的Blne marble数据包含的初始安装内,当用户放大到特定区域时,附加的高分辨率数据将会自动从NASA服务器上下载。它经过将遥感影像与RTM高程(航天飞机雷达地形数据库)叠加生成三位地形。在功能方面,软件具备长度测量功能(仅能测量两点间的直线距离)、坐标和高程查询、屏幕截图、添加标注及三位动态显示等功能。
MapWindow GIS(http://mapwindow4.codeplex.com/)桌面应用程序是一个免费开源基于标准的地理信息软件,使用它能够浏览和编辑多种GIS数据格式。这个软件包括不少地理处理的插件如:缓冲分析、合并处理等,也可使用脚本编辑器编写VB.NET和C#的脚本。最新版本的MapWindow应用程序彻底基于.NET2.0平台和C#。如今又开发出了MapWindow.Web可让用户更容易开发基于ASP.Net的web应用。这样MapWindow逐渐造成一个完整的体系,从开发嵌入式系统的MapWinGIS.OCX到应用程序框架的MapWindow应用程序再到发布web程序的MapWindow.web。
MapWindow 6(http://mapwindow6.codeplex.com/)是在MapWindow 4的基础上进行改进,整个框架采用C#完成,代码完整清晰,其优势是:
①彻底采用.net平台(不须要COM注册或DLL加载);
②能够经过使用Mono运行在Mac或Linux平台上;
③大量扩展了符号集,点、线、面的符号化更丰富,并且能够基于属性内容进行专题化,同时支持矢量化的字体符号;
④面向对象的代码:直接对各要素进行重叠分析、相交分析等。支持OGC的几何对象模型,基于System.Data.DataTable的数据集;
⑤可兼容的插件模式:插件的接口就像普通对象的事件对象同样;
⑥组件模式:全部的组件经过MapWindow.dll提供,可以拖放控件就能够定制GIS程序。
QGIS是一个用户界面友好的桌面地理信息系统,可运行在Linux、Unix、Mac OSX和Windows等平台之上。QGIS是基于Qt,使用C++开发的一个用户界面友好、跨平台的开源版桌面地理信息系统。 http://www.qgis.org/
QGIS软件的主要特色有:
1 支持多种GIS数据文件格式。经过GDAL/OGR扩展能够支持多达几十种数据格式.
2 支持PostGIS数据库。
3支持从WMS,WFS服务器中获取数据
4 集成了Grass的部分功能。
5 支持对GIS数据的基本操做,如属性的编辑修改等。
6 支持建立地图。
7 经过插件的形式支持功能的扩展
uDig是一个 open source (EPL and BSD) 桌面应用程序框架,构建在Eclipse RCP和GeoTools(一个开源的Java GIS工具包)上的桌面GIS(地理信息系统) ;是一款开源桌面GIS软件,基于Java和Eclipse平台,能够进行shp格式地图文件的编辑和查看;是一个开源空间数据查看器/编辑器,对OpenGIS标准,关于互联网GIS、网络地图服务器和网络功能服务器有特别的增强。uDig提供一个通常的java平台来用开源组件建设空间应用。
桌面经典GIS软件,显示引擎使用cario, http://grass.fbk.eu/
OpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协做计划, 由网络大众共同打造的免费开源、可编辑的地图服务,目标是创造一个内容自由且能让全部人编辑的世界地图。
OpenStreetMap它是利用公众集体的力量和无偿的贡献来改善地图相关的地理数据。OSM是非营利性的,它将数据回馈给社区从新用于其它的产品与服务。而其余地图则是将大多数的地图数据出售给第三方。
http://www.openstreetmap.org/
用来开发 GIS 应用程序的工具包,其核心是一个 C++ 的共享库提供空间数据访问和可视化的算法和模式。OpenStreetMap地图用mapnik渲染,显示引擎使用AGG,效率与美感优秀。 http://mapnik.org/
3D地图制图工具,: http://wush.net/trac/osggis
GeoServer(http://geoserver.org/)是一个符合J2EE规范,且实现了WCS、WMS及WFS规格,支持TransactionWFS(WFS-T),其技术核心是整合了享有盛名的JavaGISolkit--GeoTools。对于空间信息存储,它支持ESRI Shapefile及PostGIS、Oracle、ArcSDE等空间数据库,输出的GML档案知足GML2.1的要求。因为它是纯Java的,因此更适合于复杂的环境要求,并且因为它的开源,因此开发组织能够基于GeoServer灵活实现特定的目标要求,而这些都是商业GIS组件所缺少的。
GeoServer做为一个纯粹的Java实现,被部署在应用服务器中,简单的如Tomcat等;它的WMS和WFS组件响应来自于浏览器或uDig的请求,访问配置的空间数据库,如PostGIS、OracleSpatial等,产生地图和GML文档传输至客户端。
具备如下优势: 1) 用 java 语言编写、标准的 J2EE 框架、基于 ser vlet 和 STRUTS 框架、 支持高效的 Spring 框架开发; 2) 兼容 WMS 和 WFS 特性、支持 WFS-T 规范; 3) 高效的数据库支持 PostGIS、ShapeFile、ArcSDE,Oracle、MySQL 等; 4) 支持上百种投影; 5) 可以将网络地图输出为 jpeg、gif、png 等格式;
MapServer(http://mapserver.org/)基于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的开发和维护提供资助。
提供两种工做方式,CGI方式(适用于CGI、AJAX、FLEX开发人员)和MapScript方式(适用于Php、Java、 C#、Python开发人员)。以原生CGI方式效率最高,配合TileCache,能够快速生成大范围的地图瓦片数据。比较基于.Net和J2EE的商 业或开源平台,MapServer更适合高负荷的大型互联网地图应用。MapServer 是基于C写的地图服务软件,比用JAVA写的GeoServer速度要快。并且 MapServer 历史要比 GeoServer 悠久,甚至MapServer 的性能与商业的 ArcIMS 的功能能够娉美。
Mapnik(http://mapnik.org/)是一个用于开发地图应用程序的工具。Mapnik用C++写同时有Python绑定接口。使用Mapnik能够很方便的进行桌面和web应用程序开发。
Mapnik主要提供地图的渲染功能,使用AGC库同时提供世界级的标注引擎。能够说Mapnik是如今最强大的开源地图渲染工具。
Java开发的提供地理信息数据源构建的垂直搜索引擎应用接口、针对在线地图服务(互联网或移动互联网)的服务端,可以提供POI搜索、道路搜索、区域搜索、地址匹配、路径规划、公交换乘和无线定位等功能。 http://code.google.com/p/sse4j/
OpenLayers(http://openlayers.org/)是一个开源的jS框架,用于在您的浏览器中实现地图浏览的效果和基本的zoom,pan等功能。OpenLayers支持的地图来源包括了WMS,GoogleMap,KaMap,MSVirtualEarth等等,您也能够用简单的图片做为源,在这一方面OpenLayers提供了很是多的选择。此外,OpenLayers实现了行业标准的地理数据访问方法如OGC的Web Mapping Service(WMS)and Web Feature Service(WFS)协议。OpenLayers能够简单的在任何页面中放入动态的地图。它能够从多种的数据源加载显示地图。MetaCarta公司开始开发了OpenLayers的初始版本同时将它开放给了公众以做为之后各类地理信息系统的应用。openscales(Flex): http://openscales.org/
TileCache(http://tilecache.org/)是一个实现WMS.C的标准的服务器, TileCache提供了一个基于PythonTile的WMS.C/TMS服务器,同时具备开可插入的缓存和后台渲染机制。在最简单的应用中,只要求TileCache能够访问磁盘能够运行Python的CGI脚本。同时能够链接须要缓存的WMS服务。使用这些资源,你能够建立任何WMS服务在你的本地硬盘的缓存,同时使用支持WMS-C标准的客户端如:OpenLayers或任何支持TMS的客户端如:OpenLayers和wordKit就能够访问这些缓存数据。
FGMap是一个仿Google Maps API for Flash 作的WebGIS客户端组件,容许 Flex 开发人员将 Google Maps,MapABC地图,Bing地图,QQ地图 嵌入到 Flash 应用程序中。而不须要使用KEY或验证。 http://code.google.com/p/fgmap-webgis/
Leaflet 是一个为建设交互性好适用于移动设备地图,而开发的现代的、开源的 JavaScript 库。代码仅有 33 KB,但它具备开发在线地图的大部分功能。Leaflet设计坚持简便、高性能和可用性好的哲学思想,在全部主要桌面和移动平台能高效运做,在现代浏览器上会利用HTML5和CSS3的优点,同时也支持旧的浏览器访问。支持插件扩展,有一个友好、易于使用的API文档和一个简单的、可读的源代码。Leaflet强大的开源库插件涉及到地图应用的各个方面包括地图服务,数据提供,数据格式,地理编码,路线和路线搜索,地图控件和交互等类型的插件共有140多个。这些控件 丰富leaflet的功能,同时也能够十分方便的实现自定义的控件具备良好的可扩展性。http://leafletjs.com