也谈开源GIS架构实现思想
针对业务发展需要,需要开发设计一套具备自己独立GIS平台。然而以ArcGIS为主的GIS软件价格昂贵,在经过仔细技术与市场动向调研后,确立一套以Java语言的开源GIS软件平台。桌面CS端Udig+GeoServer+三方组件+矢量切片,服务器BS端GeoServer+ OpenLayer +PostGIS+ GeoWebCache+ 扩展,移动端GeoServer+ MapBox/LeafLet+ Html5。三维方面WorldWind/Cesium+三维建模+ GeoServer,可满足CS和BS需求。云端核心提供SAAS为主的产品应用。应用开发上融入通用的Extjs、JQuery、MVC,前端融入React\VUE\AVALON等。
【名词解释】:
(1)Udig:一款开源GIS桌面系统,JAVA开发扩展,类似ArcDesktop,但功能比不上;
(2)GeoServer:一款开源WebGIS地图服务器,类似ArcGIS Server,提供统一OGC接口服务WMS/WFS/WMTS,功能比较强大,便于使用,使用量多较成熟;
(3)OpenLayer:一款开源前台地图API产品,对数据进行可视化、空间分析、成果展示;
(4)PostGIS:一款开源先进的开源空间数据库;
(5)GeoWebCache:可看做瓦片金字塔服务器,提高web浏览速度性能;
(6)MapBox/LeafLet:一款轻量前端地图API,即可支持Web显示,也可支持移动端设备显示,目前ESRI(ArcGIS)也提供了Esri-LeafLet用于移动Web;
(7)WorldWind:一款开源三维系统,可提供桌面和Web显示,支持多种三维模型和多种数据库,需自定义定制;
(8)Ceisum:一个基于WebGL的开源地图引擎,直接在浏览器中展示三维或二维地图,无需插件,已有一定GIS应用,也适合做二三维;
(9)SAAS:云计算其中一种表达,软件即服务,提供云端软件形式使用产品。
1 平台架构概述
目前在商业应用中多是以ArcGIS进行从数据、建模、开发、应用、服务,有一部分大公司开发具有知识产权的自己一套产品平台,很多公司有或正在研发此类似底层开发的平台产品,或基于C++ GIS组件,或基于GIS二次开发组件,或基于GIS开源组件,大多数都是针对本公司业务产品而架构设计,形式多以大数据、网格、云计算等为依托,辐射公司内部各种产品,增加技术含金量,从创新角度诠释产品,达到创新、效益目的。
针对项目应用方面,ArcGIS价格昂贵,从桌面到WebGIS到移动再到云端可能总达50万甚至上百万软件费用,多数需求商承担不起这样的成本。然而随着GIS技术成熟,开源GIS慢慢夜融入市场,目前正处于商务收费GIS软件与开源免费GIS软件的分流时期,抓住这个机遇搞创新产品可抓住市场走向,提高产品竞争力。根据目前已有GIS相关技术成果和技术市场调研,WebGIS体系方案最为成熟,为此产品架构分3步设计:
第一步:用开源GIS方案逐渐替换目前GIS系统;
第二步:使用开源GIS后务必有桌面GIS相关管理应用,开发桌面GIS产品,并在WebGIS基础上将应用扩展到移动端和二三维方向;
第三步:随着应用丰富和项目增多,多个应用可能共用一套数据源、一套基础架构,那么整合起来形成一套流水线产品,提供云SAAS服务,一站式云平台。
2 架构关键技术及框架
架构关键技术主要包括:SaaS(软件即服务)技术、开源GIS、RIA Web和Mobile、开源WorldWind二三维,细分技术并解决方案:
(1)开源GIS技术产品方案:Udig+Geoserver +第三方组件类库做桌面GIS;
(2)RIA:作为富应用,GeoServer+Openlayer+PostGIS+GeoWebCache做WebGIS方案;GeoServer+MapBox/Leaflet+HTML5做移动端方案;
(3)开源WorldWind二三维:WorldWind+GeoServer/ArcGIS+数据库做桌面三维客户端,同时三维Web方面考虑Cesium+HTML5,实现web与移动端三维;
(4)SaaS整合应用:提供一套可配置的软件平台,即客户通过平台进行自定义配置即可使用相应的软件服务,将软件以服务方式提供使用。

图1 引擎与服务框架
此为本次开源GIS架构方面内容。
也谈开源GIS架构实现思想的更多相关文章
- 我的开源GIS解决方案之路
好久没更新了,因为我在--憋--大--招--,对,就是今天这篇. 今天跟大家分享一下我的开源GIS解决方案经历. --额-- 考虑到单聊技术解决方案你可能会很快睡着,所以我今天会把重点放在我封装地图A ...
- 开源GIS浅谈 【转】
http://blog.csdn.net/happyduoduo1/article/details/51773850 谈到GIS软件,首先让我们想到的是GIS界的龙头大哥ESRI公司旗下的ArcGIS ...
- [置顶] 遵循Java EE标准体系的开源GIS服务平台架构
传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.csd ...
- 开源GIS简介.学习
开发者都希望自己的软件能够运行在尽可能多的计算机上.然而事与愿违,摆在 GIS开发者面前的仍然是对峙的平台.J2EE随着Java5.0的发布,已经正式更名为JavaEE,而微软也正式发布了.NET2. ...
- 开源GIS简介
原文 开源GIS C++开源GIS中间件类库: GDAL(栅格)/OGR(矢量)提供了类型丰富的读写支持 GEOS(Geometry Engine Open Source)是基于C++的空间拓扑分析实 ...
- 开源GIS软件初探
谈到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.1,其发展可谓风生水起.MapInfo软件也不 ...
- 朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招
朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 概览 标题中的高并发架构设计是指设计一套比较合适的架构来应对请求.并发量很大的系统,使系统的稳定性.响应时间符合预期并且能在极端的情况下自 ...
- 【架构】浅谈web网站架构演变过程
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- 两年内从零到每月十亿 PV 的发展来谈 Pinterest 的架构设计(转)
原文:Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years 译文:两年内从零到每月十亿 PV ...
随机推荐
- Tomcat配置Web默认页面
1.在web.xml中配置要加载的首页 <welcome-file-list> <welcome-file>Tiring-room/index.jsp</welcome- ...
- java 命令查字节码文件, 查.class文件内容
1. 需要用javac,javap命令,所以先配下环境变量 2.配置环境变量 单击“计算机-属性-高级系统设置”,单击“环境变量”.在“系统变量”栏下单击“新建”,创建新的系统环境变量. 3.写需要用 ...
- DataGridView 列排序 内存表查找
DataRow[] drow = dt.Select("列名 = 列名的值" ); 就这句话,dt是一个datatable 且断点调试时能看到里面有trade这个列,可为什么执行到 ...
- 关于eric4和pyqt的入门学习(转)
在Eric4下用PyQt4编写Python的图形界面程序 转载请注明作者RunningOn 本文是PyQt4的入门教程.网上能搜到其它教程,但我觉得讲得不是很清楚,希望这篇文章对入门者更加有帮助. 先 ...
- win10电脑只有自带浏览器能上网
今天遇到了个奇葩问题,开机后登陆微信,怎么也登陆不上,用360检测,修复不了,找来大神一枚,打开我的Edge浏览器,各种网页浏览正常.......就告诉我就修好了.WTF!!! 现象:只有自带浏览器能 ...
- js encode方法
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...
- jq复制
function funCopy() { var va = $("#va").val(); if (va != "") { var save = ...
- ogg同步DDL时,源和目标端表空间名称不同的解决思路
在OGG同步过程中,经常会碰上有创建表或表空间的同步,往往因为源和目标的平台不同,如aix->linux or linux->windows,这两个平台的表空间也经常不同,在目标端执行DD ...
- ubuntu 17.10 安装mvn
首先,我用的系统是Ubuntu17.10,编辑器用的 vim ,Maven以 3.5.0为例 第一步,去官网下载maven. 官网下载页面.png 第二步,解压到/opt/maven目录(我安装在这个 ...
- Java8-Map
1.Staff实体 public class Staff { private String name; private int age; private String address; public ...