主要开源WebGIS介绍

WebGIS由四部分构成,从名称上也能看到至少包括 Web 与 GIS ,涉及技术复杂。从 WebGIS 方面来看,开源的工具可以分为组件产品与全栈产品两类。

WebGIS的组成部分

Four Components of Web GIS: Web GIS application Development and GIS Servers

  1. 客户端
  2. Web 服务与应用服务
  3. GIS 服务
  4. Data 服务

客户端:客户端是用户在Web GIS中与空间对象和分析功能进行交互的场所。 它也是互联网GIS程序向用户呈现输出的地方。

Web服务器和应用程序服务器:Web服务器通过HTTP响应来自Web浏览器的请求。 当Web服务器将请求传递给其他程序时,它会从应用程序服务器请求服务。 应用程序服务器充当Web服务器和GIS服务器之间的转换器或连接器。

GIS服务器:GIS服务器是一个主要的主力组件,它可以完成空间查询,进行空间分析,并根据用户的请求生成并向客户端提供地图。

数据服务器:数据服务器在关系或非关系数据库结构中提供空间和非空间数据。

在本网站中,我们特别关注GIS服务器以及客户端应用。 互联网上有许多GIS服务器,如GeoServer,MapServer,Mapnik,MapGuide,QGIS服务器等。所有这些服务器都是开源服务器,即免费提供。 ArcGIS还提供服务器,但它不是免费提供的,但具有许多附加功能。 所有开源服务器都可以从各自的网站免费下载。

组件产品

以下产品通常用作组件,并与各种组合的其他工具组合在一起以创建自定义应用程序。

MapServer

MapServer是一个开源平台,用于发布空间数据和创建交互式地图应用程序到Web。 它自90年代中期以来一直存在,并被认为是成熟和稳定的,并且持续积极发展。其主要重点是从多个层生成地图,包括基础图像和空间数据集。 它还提供智能标签,包括高级排版和布局,包括碰撞检测。 它可以读取和提供各种格式的空间数据,包括Shapefiles,WMS,GDAL,PostGIS和GeoTIFF。它通常用于生成地图图块及其MapCache扩展。 它有一些库,支持各种语言的应用程序开发,包括Python,Perl,Ruby,Java和PHP。

http://www.mapserver.org

PostGIS

PostGIS是PostgreSQL数据库的扩展,它支持空间查询。PostgreSQL既是关系数据库又是对象数据库,被广泛认为是最先进的开源数据库,与Oracle和MS-SQL相同。 PostGIS支持各种空间查询,包括邻近度,半径,边界框,碰撞/重叠检测等。 它是Web GIS项目中经常使用的非常有用的工具。

http://postgis.net/

OpenLayers

OpenLayers是一个前端UI库,用于使用javascript创建基于Web的空间应用程序。 它支持各种图层源和后端。 例如,可以从GoogleMaps或自定义磁贴源中提取地图图块。这带来的优势在于它使开发人员能够重用诸如tile源之类的元素,而是将注意力集中在其应用程序的更独特方面,例如“业务逻辑”。平铺源等默认组件可以在以后轻松换出。 它支持位图和矢量图层,包括点,线和多边形。 其最广泛使用的功能之一是能够在基本地图上叠加数据层。

http://openlayers.org

GDAL (Geospatial Data Abstraction Library)

GDAL是地理空间数据格式的翻译库。 它可以导入和导出各种各样的文件和编码类型。 它可用于在不同投影系统之间转换空间数据。 栅格数据格式由GDAL处理,矢量数据格式由OGR处理,现在包含在GDAL中。 它还可用于从多个图像文件源创建马赛克。 GDAL是一种有价值的工具,用于从不同来源获取数据并将其转换为协同工作。

http://www.gdal.org

TileMill

TileMill是一个桌面应用程序,用于生成地图图块图像,然后将其作为静态文件托管以用作基础图层。 TileMill可用于创建视觉上令人惊叹的基础层。 它非常注重美学,包括许多经过深思熟虑的预设,使没有设计背景的人能够制作非常有吸引力和专业的地图图层。 TileMill的开发由一家名为MapBox的公司领导。 他们提供几种有吸引力的付费服务,包括瓷砖托管和精选和精心调整的基础层。

http://www.mapbox.com/tilemill/

Leaflet

Leaflet是一个Javascript库,强调前端UI。 它支持多种基础层和几何类型的组合。 它覆盖了与OpenLayers有些相似的领域,但功能集略有减少。 相对于OpenLayers而言,它的优势在于其对移动设备的出色支持,卓越的产品价值,简洁的简约设计以及对性能的强烈关注。

http://leafletjs.com/

Stack Products

以下产品分发为“堆栈”或“捆绑”。 它们是模块化产品的预配置组合。 有些可以按原样使用(在添加配置和基础层之后),并且可以进一步扩展所有这些以创建自定义应用程序。

GeoServer

GeoServer主要基于Java语言。 它提供了创建和编辑地理空间数据以及在面向服务的体系结构中提供地图的基本功能。它使用OpenLayers模块并提供和实现Web地图服务(WMS)标准。 它还使用了GeoTools框架,该框架涵盖了MapServer功能的一小部分。 像GeoServer本身一样,是用Java编写的。 它将主要吸引已经使用基于Java的工具和平台的开发人员。

http://geoserver.org/display/GEOS/Welcome

MapGuide

MapGuide是一个功能齐全的基于Web的GIS应用程序,主要用PHP和Javascript编写。 它包括一个基于AJAX的应用程序UI,用于查看和创建地图和数据层。 它支持一系列令人印象深刻的图层格式,包括ESRI SHP,SDF,ESRI ArcSDE,PostGIS,SQL Server Spatial,光栅文件格式(通过GDA),OGC,WMS和WFS。 它还使用OpenLayers工具包,并支持PHP和Java中的自定义应用程序开发。 它主要基于对各种输入格式,开箱即用的编辑工具以及已经使用PHP的开发人员的支持。

http://mapguide.osgeo.org

GeoMoose

GeoMoose结合了几个流行的开源库,创建了一个强大而灵活的映射平台,重点放在前端的Javascript / AJAX上。 它使用MapServer作为后端,OpenLayers和Dojo(都是基于Javascript的)用于其用户界面。 它提供了一组强大的工具,用于查看,编辑和查询浏览器中的数据。 它的发展社区似乎非常活跃,并且具有良好的前进轨迹。 它的吸引力来自其功能集和现代,平易近人的用户界面。 其记录良好的Javascript API将使Javascript开发人员和其他Web构建者都能接近,因为大多数Web开发人员至少都接触过Javascript。

http://www.geomoose.org

GeoDjango

GeoDjango是Django应用程序框架的一组空间扩展。 Django主要用Python编写,是用于使用Python构建Web应用程序的最流行的通用框架之一。 与GeoMoose或MapGuide不同,它不提供开箱即用的应用程序,而是一组用于构建自定义应用程序的精心设计的构建块。 与上面描述的其他一些堆栈产品不同,它对堆栈中将使用哪些其他地理空间工具做出较少的假设,并通过一系列设计清晰,文档齐全的API提供集成点。 它可能会吸引那些希望在构建应用程序时更多选择和控制的开发人员以及喜欢Python语言的开发人员。

http://geodjango.org

MapFish

MapFish是Python社区的另一个堆栈产品。 它基于(基于Python的)Pylons框架,以及(基于Javascript的)OpenLayers和ExtJs框架。 与GeoDjango不同,它提供了一个开箱即用的简单应用程序,可以自定义和扩展。 它还支持通过插件在Rails和PHP中进行开发。 它的吸引力在于它提供了一个干净,紧凑的起点,可以用各种语言轻松扩展。 与GeoDjango相比,它的优势在于它为开发人员提供了更多选择,因此可以更快地开始使用。 它可能会吸引具有Python或Javascript经验的开发人员,以及重视其干净,紧凑设计的Rails / PHP开发人员。

http://mapfish.org