1.3. 主要开源WebGIS简介

WebGIS由四个部分组成,从名称可以看出,它至少包括Web和GIS,这涉及到技术的复杂性。从WebGIS的角度来看,开源工具可以分为两大类:组件产品和全栈产品。

1.3.1. 自由开源软件、开放规范、开放数据

目前,商用地理信息系统软件的使用和维护成本越来越高。例如,包括客户端和服务器在内的一整套ESRI ArcGIS软件的价格约为70万元。而它的销售策略是,如果购买服务器端软件,就必须购买客户端软件。原因是,由于用户使用他们的服务器端软件来发布服务,他们必须使用客户端软件来处理数据。这远远超出了一些相对较小的WebGIS应用程序的承受范围。而很多商业软件对地理信息系统的数据和操作不能完全转换和共享,导致了一些信息孤岛情况。

但与商业地理信息系统软件相对的是开源地理信息系统。OGC成立于1994年,致力于研究和建立开放的地理数据互操作标准,使用户和开发人员能够进行互操作。国际地理空间发展基金会(开放源码地理空间基金会)成立于2006年2月。其使命是支持开源地理信息软件和遥感软件的开发并促进其更广泛的应用,为其支持的项目提供组织、法律和资金援助,促进OSGeo基金会基于地理信息的标准软件及其互操作技术的开发、推广和普及。

免费开源的地理信息系统软件

自由开放源码软件是一种计算机软件,可以分为自由软件和开放源码软件。也就是说,任何获得许可的人都可以自由地以任何方式使用、复制、研究和修改软件,并且其源代码是开放和共享的,因此鼓励人们自愿改进软件的设计。这类软件与商业软件形成鲜明对比,商业软件受到严格的版权限制,其源代码通常无法向用户提供。

目前,包括不同层次的免费开源地理信息系统软件有很多。例如,大型桌面GIS包括QGIS和GRASS地理信息系统。目前比较流行的服务器端软件包括Geoserver、MapServer和QGISSERVER,以及开源的GIS数据库项目,如PostGIS/PostgreSQL空间数据库,此外还有一些开源项目,如数据转换工具(如GDAL/OGR)和地图投影算法库(如Proj和GeoTrans)。其中大多数软件都得到了osgeo的支持。

开放数据的作用

开放数据是一种任何人都可以自由使用、重用和重新分发的数据类型。在其局限性中,充其量需要使用类似的协议进行归属和重新分配。Data.gov包含了美国政府收集的大量公开数据。此外,OpenStreetMap(简称OSM)也是一个广泛使用的开放数据源,OSM项目由英国史蒂夫·科斯特创立。这个概念的灵感来自于维基百科网站。这是一个建立免费内容的在线地图协作项目,目标是创建一个任何人都可以编辑的免费内容世界地图,并为廉价的移动设备提供易于导航的解决方案。

1.3.2. WebGIS的组件

WebGIS的四个组成部分:WebGIS应用程序开发和GIS服务

  1. 客户端

  2. Web服务和应用程序服务

  3. 地理信息系统服务

  4. 数据业务

客户端:客户端是用户与WebGIS中的空间对象和分析功能进行交互的地方。它也是互联网地理信息系统程序将其输出呈现给用户的地方。

Web服务器和应用服务器:Web服务器通过HTTP响应来自Web浏览器的请求。当Web服务器将请求传递给其他程序时,它向应用程序服务器请求服务。应用服务器充当网络服务器和地理信息系统服务器之间的转换器或连接器。

GIS server:GIS server是地理信息系统的主要组成部分,它可以完成空间查询、进行空间分析,并根据用户的请求生成地图并提供给客户。

Data Servers:Data Servers以关系型或非关系型数据库结构提供空间和非空间数据。在本网站中,我们特别关注了地理信息系统服务器端和客户端应用程序。许多GIS服务器都在互联网上,如Geoserver、MapServer、Mapnik、MapGuide、QGIS、Server等。所有这些服务器都是开源的服务器,即免费提供。ArcGIS也提供了服务器,但它不是免费提供的,但具有许多附加功能。所有开源服务器都可以从各自的网站免费下载。

1.3.3. 组件产品

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

MapServer

MapServer是一个用于在Web上发布空间数据和创建交互式地图应用程序的开源平台。它自20世纪90年代中期出现以来,被认为是成熟和稳定的,并继续活跃发展。它的主要关注点是从多个层生成地图,包括基础图像和空间数据集。它还提供智能标签,包括先进的排版和布局,包括碰撞检测。它可以读取和提供各种格式的空间数据,包括Shapefile、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是一个前端用户界面库,用于使用Java脚本创建基于Web的空间应用程序,它支持各种层源和后端。例如,地图切片可以从GoogleMaps或自定义切片源提取。这带来的好处是,它使开发人员能够重用Table源等元素,转而专注于其应用程序的更独特的方面,如“业务逻辑”。诸如平铺源之类的默认组件可以在以后轻松地被换出。它支持位图和矢量层,包括点、线和多边形。它最广泛使用的功能之一是能够在底图顶部覆盖数据层。

http://openlayers.org

GDAL (地理空间数据抽象库)

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

http://www.gdal.org

TileMill

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

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

Leaflet

Leaflet是一个侧重于前端用户界面的Java脚本库。它支持多个基本层和几何图形类型的组合。它涵盖了与OpenLayers类似的领域,但功能略有减少。它相对于OpenLayers的优势在于它对移动设备的出色支持、巨大的产品价值、简洁的极简主义设计以及对性能的强烈关注。

http://leafletjs.com/

1.3.4. 堆栈产品

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

GeoServer

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

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

MapGuide

MapGuide是一个功能齐全的基于Web的地理信息系统应用程序,主要用PHP和Java脚本编写。它包括一个基于AJAX的应用程序用户界面,用于查看和创建地图和数据层。它支持一系列令人印象深刻的图层格式,包括ESRISHP、SDF、ESRI ArcSDE、PostGIS、SQL Server Spatial、栅格文件格式(通过GDA)、OGC、WMS和WFS。它还使用OpenLayers工具包,并支持用PHP和Java进行定制应用程序开发。它主要基于对各种输入格式、开箱即用的编辑工具的支持,以及已经在使用PHP的开发人员。

http://mapguide.osgeo.org

GeoMoose

GeoMoose结合了几个流行的开源库,创建了一个强大而灵活的地图平台,并在前端重点放在了Java/AJAX上。它使用MapServer作为后端,使用OpenLayers和Dojo(两者都基于Java脚本)作为其用户界面。它提供了一套强大的工具,用于在浏览器中查看、编辑和查询数据。它的开发社区似乎非常活跃,并有一个很好的前进轨迹。它的吸引力来自其功能集和现代、平易近人的用户界面。由于大多数Web开发人员至少有过一定程度的使用,因此其文档齐全的Java脚本API将使其可供Java脚本开发人员和其他Web构建者访问。

http://www.geomoose.org

GeoDjango

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

http://geodjango.org

MapFish

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

http://mapfish.org