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

自由及开源软件、开放规范与开放数据

当前商业GIS软件的使用和维护费用越来越高,例如包含客户端与服务器端一整套的ESRI ArcGIS软件售价约为70万元人民币。而且其销售策略是,若购买了服务器端软件则必须购买客户端软件,其理由是用户既然使用了其服务器端软件来发布服务,那必然就需要使用其客户端软件来处理数据。这对一些比较小的WebGIS应用来说,远远超出了其可承受的范围。并且众多商业软件GIS的数据和操作并非完全能够转换和共享,造成一些信息孤岛。

不过在商业GIS软件的对面活跃着开源GIS。OGC成立于1994年,致力于研究和建立开放地理数据交互操作标准,使用户和开发者能进行互操作。国际地理空间开发基金会(Open Source Geospatial Foundation)成立于2006年2月,其使命是支持开源地理信息软件和遥感软件的开发及推动其更广泛的应用,并对其支持的项目提供组织、法律和财政上的帮助,促进OSGeo基金会基于地理信息开发标准软件及其互操作技术的开发、推广和普及。OSGeo中国中心于2006年9月成立,帮助中国地区的用户和开发者更好地使用OSGeo基金会提供的源代码、产品和服务。

自由及开源GIS软件

自由及开源软件是一种可以归类为既是自由软件又是开源软件的计算机软件。也就是说,任何人被授权后都可以自由地使用、复制、研究和以任何方式来改动软件,并且其源代码是开放和共享的,因此人们被鼓励志愿地改善软件的设计。这种软件是相对于商业软件而言,而后者是在版权的严格限制之下,并且通常其源代码对于用户是不开放的。

当前存在许多包含了各种层次的自由及开源的GIS软件,例如大型的桌面GIS有QGIS和GRASS GIS等,目前比较流行的服务器端软件有Geoserver、MapServer和QGIS Server等,还有开源的GIS数据库项目如PostGIS/PostgreSQL Spatial Database,另外还有一些数据转换工具(如GDAL/OGR)以及地图投影算法库(如 PROJ 和 GeoTrans )等开源项目。这些软件大多都得到OSGeo的支持。

开放数据的作用

开放数据是一类可以被任何人免费使用、再利用、再分发的数据。在其限制上,最多是要求署名和使用类似的协议再分发。Data.gov中包含了许多由美国政府收集的开放数据。此外,开放街道地图(OpenStreetMap,缩写OSM ) 也是一个广泛使用的开放数据源示。OSM项目由英国人Steve Coast创立,概念启发自维基百科网站,是一个构建自由内容之网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图,并且让廉价的移动设备有方便的导航方案。

WebGIS的组成部分

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

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

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

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

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

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

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

组件产品

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

MapServer

MapServer是一个开源平台,用于发布空间数据和创建交互式地图应用程序到Web。 它自20世界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

主要开源WebGIS介绍、自由及开源GIS软件、组件产品相关推荐

  1. 开源地图服务器 网站,开源WebGIS:地图发布与地图服务

    开源WebGIS:地图发布与地图服务 语音 编辑 锁定 讨论 上传视频 上传视频 本词条缺少信息栏.概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! <开源WebGIS:地图发布与 ...

  2. SuperMap GIS 9D(2019)产品白皮书_V2018Q4R1

    SuperMap GIS 9D(2019)是超图软件研发的全面拥抱大数据的新一代GIS平台软件,提供 功能强大的云GIS应用服务器SuperMap iServer.云GIS门户服务器SuperMap ...

  3. GIS开发常用的开源地图数据库介绍

    通常GIS二次开发会用到很多开源的JavaScript数据库,本篇文章再给大家主要讲讲针对WebGIS开发的地图和可视化数据库. Echarts ​ ECharts是一个使用 JavaScript 实 ...

  4. 开源WEBGIS(五)WEBGIS五剑客之GIS服务

    地图服务器通常也称作地图引擎,它是WebGIS架构的核心,所有的地图操作都是通过地图服务器完成的.现在的主流开源地图服务器主要是MapServer和GeoServer.GIS 应用服务器,主要用来接收 ...

  5. 面向企业级的开源WebGIS解决方案--MapGuide(介绍)

    .MapGuide概述 MapGuide是Autodesk公司推出的在网络上发布空间数据的新一代Web GIS平台,为了促进开源Web GIS的发展,Autodesk公司推出了开源版的MapGuide ...

  6. 开源WebGIS实施方案(一):开篇 [转]

    开源WebGIS实施方案(一):开篇 GIS 起源于上世纪六十年代,发展到现如今,也早已不再是某些专业领域的"阳春白雪".放眼当下,各商业GIS软件有如群雄逐鹿,大有风起云涌之势: ...

  7. webgis从基础到开发实践_开源WebGIS教程系列——11.1 GISLite 的开发背景与设计

    地理信息门户可以帮助人们更容易地发现.访问和使用地理空间信息, 是地理信息发布.服务和共享的重要环节.许多国家都很重视地理信息门户的 建设,把它作为国家空间数据基础设施(spatial data in ...

  8. 开源WebGIS实施方案

    开源WebGIS实施方案 http://www.cnblogs.com/hans_gis/archive/2012/09/21/2696880.html GIS起源于上世纪六十年代,发展到现如今,也早 ...

  9. 在别的地方看的给程序员介绍一些C++开源库,记录给大家共同学习

    在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习 首先说明这篇文章不是出自我手,大家共同学习. 引用地址:http://oss.org.cn/?actio ...

最新文章

  1. 【OpenCV 4开发详解】点集拟合
  2. 双向LSTM在时间序列异常值检测的应用
  3. 百万奖池,鹅厂offer,2020腾讯广告算法大赛等你来战!
  4. jmeter中重要组件及其执行顺序
  5. 深度软件商店_3D深度相机,这就是微软未来手机Surface Duo新特性
  6. python软件设置代码字体的大小_PyCharm中代码字体大小调整方法
  7. python docx 字体大小_聊聊python办公自动化之Word(上)
  8. pycharm python部署_使用PyCharm配合部署Python的Django框架的配置纪实
  9. php text(),PHP+TEXT留言本(一)
  10. python predict_对Keras中predict()方法和predict_classes()方法的区别说明
  11. 22考研计算机专业课——数据结构【❤️考研复习指导❤️】
  12. maven中引用JDK中的tools jar
  13. BTrace简介与使用说明
  14. JVM 学习笔记(二)垃圾回收
  15. 推荐使用的JS日期时间格式化的方法
  16. 读《天才在左,疯子在右》01--偷取时间
  17. 【读书笔记】《谈谈方法》(笛卡尔)
  18. win7系统怎么用笔记本做wifi热点啊?
  19. VS2012(2013、2015) OpenCV “HEAP:Invalid Address specified to RtlValidateHeap( 000D0000, 019FEF18 )
  20. autoJS 网易公开课app封装函数

热门文章

  1. Spring cloud 灰度发布
  2. 提交一个骗子喵喵源码站
  3. 优启通制作系统u盘_优启通U盘启动盘制作工具BIOS+UEFI版v3.3.2019.0605
  4. SpringBoot/Spring AOP默认动态代理方式
  5. (个人学习记录)Solidworks常见界面操作问题汇总
  6. 7-30 实验3_13_最大公约数和最小公倍数 (100 分)
  7. 卫星定位与导航相关知识的整理
  8. 北大和人大两年整理出来的阅读书单(收藏)
  9. 史上最全软件测试工程师常见的面试题总结(百度、oppo、中软国际、华为)备战金三银四
  10. [Windows]批处理变更用户文件夹到其他位置