地图服务器通常也称作地图引擎,它是WebGIS架构的核心,所有的地图操作都是通过地图服务器完成的。现在的主流开源地图服务器主要是MapServer和GeoServer。GIS 应用服务器,主要用来接收地图请求、动态生成地图图片或地理信息并返回给客户端其中,其中GML 与OWS 服务体系应用最广泛。GML 对地理实体的几何和普通属性进行基于XML 的编码,对空间信息进行统一描述和表示。OWS 包括三个空间信息服务: 网络地图服务WMS(Web Map Service) 、网络要素服务WFS(Web Feature Service)和网络处理服务WPS (Web Proceeeing Service) 。WMS是利用具有地理空间位置信息的数据制作地图的一项服务,它将地图定义为地理数据可视化的表现; WFS支持在遵循HTTP 协议的分布式计算机平台上进行要素查询,返回空间数据要素级GML编码;WPS是一个通用的接口,每个WPS 实现了它支持的过程,以及与其相关的输入和输出。

GeoServer

GeoServer(http://geoserver.org/)是一个遵守OGC开放标准的开源地图服务器,它支持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 框架、基于 servlet和STRUTS 框架、 支持高效的 Spring 框架开发;

2) 兼容 WMS 和 WFS 特性、支持 WFS-T 规范;

3) 高效的数据库支持 PostGIS、ShapeFile、ArcSDE,Oracle、MySQL 等;

4) 支持上百种投影;

5) 能够将网络地图输出为 jpeg、gif、png 、SVG、GML、KML等格式;

6)能够运行在任何基于J2EE/servle框架之上;

7)嵌入MapBuilder支持AJAX的地图客户端

8)实现了在线编辑空间数据、生成专题地图;

9)地图发布是用XML文件。

10)支持Goodgle Maps;

11)可发布KML数据,可与GoogleEarth影像叠加。

​​​​​​​MapServer

MapServer(https://mapserver.org/) 源自美国太空总署(NASA)资助的美国明尼苏达大学(University of Minnesota)ForNet项目,最终衍生为一个WebGIS开源软件,是一个功能强大的跨平台的网络地图服务软件包, 可以应用于UNIX/Linux, Windows, MacOSX, Solaris等平台,支持的语言包括 Python,PHP,Perl,Java,Tcl,C# 等。MapServer使用几个知名的开放源代码软件完成数据格式转换、地图投影转换、空间数据库的大数据量处理等, 而本身专注于地图绘制、地图图形格式、接口环境、兼容OGC互操作规范等方面。

MapServer具有强大的空间数据的网络发布功能,支持多种数据格式,使得在WebGIS 中整合空间数据和非空间数据变得更加容易。MapServer是基于胖服务器/瘦客户端模式开发的 WebGIS 平台。主要是因为处理空间数据的任务主要在服务器端完成,在通过客户端发送请求的时候,服务器依据客户端请求,执行相应的操作并返回数据,客户端将数据处理显示返回用户。它的核心模块主要是通过C语言编写完成,提供了两种开发模式,一种是基于CGI的,另一种是MapScript方式; 在服务器端可以使用任一模块,编写WebGIS程序。它遵守OGC制定的WMS、WFS、WCS和GML等一系列规范,支持分布式访问和互操作。MapServer作为WebGIS解决方案是基于对象的,基本配置文件 MapFile 和 MapScript 模块的API组织都是基于对象的。

​​​​​​​MapProxy

MapProxy(https://mapproxy.org/)是 WMS 网页地图服务与切片服务提供者的瑞士军刀。它对已有地图服务的数据服务进行缓存、加速和转换,服务任何支持 OGC 标准的桌面与网页客户端。 MapProxy 开发与部署方式灵活,易于同 Apache/Nginx 环境等集成。MapProxy 也能作为一个独立服务器使用,这是对于新用户而言最容易的方式。  MapProxy 的默认示例是一个基本的 WMS 切片客户端,它显示了配置的各个图层;不具备改变投影等复杂功能,但足以验证服务是否正常运行。

​​​​​​​MapServer和GeoServer的总体对比

先看历史悠久产品成熟的MapServer。Mapserver在国内用户广泛,其内核使用C++编写,基于CGI脚本实现,页面调用支持PHP、JSP等多种语言,并且对OGC的WMS和WFS规范提供支持。Map文件是Mapserver工程中关键的结构配置文件,定义了地图范围、数据源、地图图层、投影方式以及符号标记等内容。如果在Linux平台下快速配置MapServer地图服务器,使用Maptools发布的 FGS(FOSS GIS Suite)套件无疑是最佳方案,套件集成了整套的MapServer、Apache、PHPMapScript以及GDAL库等众多内容,并且提供安装后就可直接浏览的地图DEMO。

再看GeoServer,基于Java和Geotools库开发的Geoserver功能全面且遵循OGC开放标准,并由同时拥有PostGIS与uDig的Refractions公司提供支持。GeoServer对发布WFS-T和WMS服务提供便捷的支持,并以XML文件描述所有地图服务,同时即将加入的FROGS(Framework for Open Geospatial Services)项目将着重提供对WPS规范的支持。GeoServer的开发组很活跃,邮件咨询的问题很快会得到Jody Garnett和组内其他成员的回复。

比较来说,Mapserver对WMS的支持更为高效,而Geoserver则更擅长于结合WFS规范的属性查询。当然,对于使用者来说,最主要的区别还是传统CGI脚本与J2EE在技术上的分歧。但就发展趋势来看,J2EE的架构明显要占据优势,并且Geoserver拥有基于Eclipse RCP平台的开源客户端uDig。随着Geoserver的版本更新,相信其有实力成为今后开源WebGIS解方案的主流选择。

总的来说,功能上:MapServer弱于GeoServer。效率上:Mapserver对WMS(Web Map service)的支持更为高效,而Geoserver则更擅长于结合WFS(Web Feature service)规范的属性查询。

开源WEBGIS(五)WEBGIS五剑客之GIS服务相关推荐

  1. 因果推断笔记——因果图建模之微软开源的EconML(五)

    文章目录 1 EconML介绍 1.1 EconML介绍 1.2 一些理论解答 1.3 常规CATE的估计器 1.4 IV工具变量 + CATE的估计器 1.5 动态处理效应的估计器 2 智能营销案例 ...

  2. 【WebGIS】WebGIS、桌面GIS、移动GIS、三维GIS的简介

    什么是WebGIS? WebGIS是建立在Web技术上的一种特殊环境下的地理信息系统. WebGIS通过互联网对地理空间数据进行发布和应用,以实现空间数据的共享和互操作,如GIS信息的在线查询和业务处 ...

  3. 遵循Java EE标准体系的开源GIS服务平台之二:平台部署

    传送门☞Android兵器谱☞转载请注明☞http://blog.csdn.net/leverage_1229 传送门☞系统架构设计☞转载请注明☞http://blog.csdn.net/levera ...

  4. [Python从零到壹] 五十五.图像增强及运算篇之图像平滑(均值滤波、方框滤波、高斯滤波)

    又是一年1024,首先,祝大家节日快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界 ...

  5. Python编程基础:第五十五节 map函数Map

    第五十五节 map函数Map 前言 实践 前言 map函数的作用是将指定函数作用于一个可迭代对象内部的每一个元素,其表达方式为map(function, iterable),第一个位置指定作用函数,第 ...

  6. 【零基础学Java】—Socket类(五十五)

    [零基础学Java]-Socket类(五十五) Socket类:该类实现客户端套接字,套接字是指两台设备之间通讯的端点. 在Java中,提供了两个类用于实现TCP通信程序 客户端:java.net.S ...

  7. JavaScript学习(五十五)—组合继承

    JavaScript学习(五十五)-组合继承 组合继承:就是借用构造方法继承和原型链继承的组合形式

  8. MSP借助五招让中小企业签约云计算服务

    本文讲的是MSP借助五招让中小企业签约云计算服务,如今中小企业在云计算服务领域调查比较适合自己的选择;在许多情况下,他们求助于托管服务提供商(MSP),帮助自己弄清楚云计算服务领域有哪些解决方案.这正 ...

  9. 遵循Java EE标准体系的开源GIS服务平台之一:平台架构

    传送门☞Android兵器谱☞转载请注明☞http://blog.csdn.net/leverage_1229 传送门☞系统架构设计☞转载请注明☞http://blog.csdn.net/levera ...

最新文章

  1. 一篇文章搞懂fof好友推荐案例
  2. power shell远程_PowerShell入门教程之远程操作运行PowerShell的方法
  3. Linux之字符串截取
  4. 云计算的背后到底是什么?
  5. hexo修改默认端口
  6. 【face-landmarks】人脸关键点检测汇总
  7. boot idea无法识别spring_idea搭建springboot项目
  8. Java开发和嵌入式开发该如何选择
  9. Huffman树压缩和解压文件
  10. 个人vscode插件配置全记录
  11. PHP设计模式——解释器模式
  12. 王者荣耀s18赛季服务器什么时候维护好,王者荣耀S18赛季开始时间是什么时候?王者荣耀S18赛季开始时间一览-超能街机...
  13. mes系统与Oracle对接,Oracle ERP系统与MES系统的接口分析及实现
  14. 亚马逊AWS沙龙笔记:如何通过AWS快速发展国际业务?及多种架构方案
  15. 如何写软件设计文档[转]
  16. java实现列表拖动排序
  17. 补习班停了,家长“卷向”兴趣班
  18. 淘宝转化率突然下降怎么办?原来是这些原因
  19. oppo手机投屏到电脑上
  20. 技术面试官的9大误区

热门文章

  1. 实现简单的自定义音乐播放器
  2. 软件项目管理MOOC(北邮)——第七章测试答案
  3. 深蓝学院-多传感器融合定位课程-第2章-3D激光里程计I
  4. python云计算好学吗_没有基础,可以学云计算专业吗,学起来是不是很难,?
  5. 11-贴片陶瓷电容材质NPO、C0G、X7R、X5R、Y5V、Z5U区别
  6. Python培训班一般学费是多少?
  7. 【JavaScript编程】window.location.search 返回值为空
  8. AcWing 188. 武士风度的牛 BFS 水题
  9. 关于EeePc的Linux下安装GCC编译器
  10. 如何将图片裁剪成规定尺寸?怎样裁剪多余画面尺寸?