一、部分GIS框架及平台

在这里插入图片描述

1、2D地图框架

2D地图框架主要是应用于二维的地图应用开发,二维地图由于多年的发展,已经比较成熟,框架提供的接口也都比较丰富,可以满足不同的二维应用的展示、分析需求。
在这里插入图片描述
在这里插入图片描述

2、3D地球框架

3D地球框架主要是以地球为视角来对大范围的场景进行浏览和管理。可以结合OGC服务、倾斜摄影、点云及建筑模型等数据进行加载展示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、3D场景框架

3D场景框架,在局部范围及场景下有广泛的应用,不一定需要结合GIS,如楼宇的结构、设备间的数据流转、设备故障定位、医疗手术模拟等场景的应用。
在这里插入图片描述

二、WebGIS开发框架介绍

GIS相关的开发框架是比较多的,既有收费的,也有开源的,还有免费的;各自有各自的优势,弱势。
收费的框架一般较为成熟,基础的、专题的功能多、封装完善、基础的Bug少、有专有的示例网站及人工技术支持。但二次开发所能实现的功能,严重依赖框架的能力,框架没有的能力,可能无法用其他方式实现。如:Esri的ArcGis系列产品及框架、SuperMap系列产品及框架等。

开源的框架一般基本的功能完善、有社区支持、示例较多,可结合许多个人及组织在框架上定制开发的开源组件,灵活的实现各类功能。但一般开源框架对于专题、高级的功能少,需要自己开发封装,并存在部分上功能Bug,需要使用者解决,虽然示例多,但都在各个不同网站间,需要学习者自己甄别、积累,深入学习的成本高。如:OpenLayers、Cesium、ThreeJS、BabylonJS等。

还有部分免费的不开源的框架,这类由个人或组织提供,有自己开发封装的、有基于一些开源框架进一步封装的,这些框架有些是个人学习下沉淀出来,有些是公司产品需求封装而来,对外免费使用的。该类型的问题在于受众小,更新不及时,功能基础,且二次开发的使用者无法进一步完善扩展,遇到瓶颈时,可能滞留无法解决。

像UE(虚幻引擎)、Unity3D引擎定为免费、开源与收费之间,如虚幻引擎可免费使用,并且核心代码开源,只有当您发行的商用现成品整合了虚幻引擎代码(比如电子游戏),且该产品生命周期内的营收超过了100万美元,才只需要支付5%的分成费用。而且在此情况下,这前100万美元的营收也是无需支付分成的。

当然所有的框架都有其优势和劣势,在框架的选择上需要结合自己的产品及发展方向进行选择。如GIS并非公司的所涉及的核心应用或方向,只是某些项目上使用到,那可能选择成熟、收费的框架更为合适,官方有完整案例,可快速学习上手,遇到问题可以询问技术支持人员,协助解决,网上也有较多基于框架的资料。

1、OpenLayers简介

OpenLayers是一个用于开发WebGIS客户端的JavaScript包,最初由MctaCarta公司开发,通过BSDLicense发行。OpenLayers是一个开源的项目,其设计之意是为互联网客户端提供强大的地图展示功能,包括地图数据显示与相关操作,并具有灵活的扩展机制。目前OpenLayers己经成为一个拥有众多开发者和帮助社区的成熟、流行的框架。

OpenLayers采用纯面向对象的JavaScript方式开发,同时借用了Prototype框架和Rico库的一些组件。而应用于Web浏览器中的DOM(文档对象模型)也由JavaScript实现,因此,基于OpenLayers开发的WebGIS不依赖于Web浏览器,具有跨浏览器特性,同时,OpenLayers实现了类似于Ajax的无刷新功能,可以结合很多优秀的JavaScript功能插件,带给用户更多丰富的交互体验。

在地图数据以服务方式提供的前提下,OpenLayers实现访问地理空间数据的方法符合行业标准,支持各种公开的和私有的数据标准和资源。OpenLayers支持OGC制定的WMS、WFS等网络服务规范,可以通过远程服务的方式,将以OGC服务形式发布的地图数据加载到OpenLayers客户端中显示,目前,OpenLayers所支持的数据格式有XML、JSON、GML、GeoRSS、KML、WFS、WICT(Well-KnownText)等,在其Format命名空间下的各个类里实现了具体读/写这些Format的解析器。因此,基于OpenLayers能够利用的地图资源非常丰富,提供给用户最多的选择,包括公共地图服务,如OpenStreetMap、Google、Bing、Yahoo、Baidu等,OGC资源(WMS、WMTS、WFS…),其他矢量数据及简单的图片等。

在采用JavaScript纯客户端开发的WebGIS项目中,我们可将OpenLayers作为功能库引用,在HTML文档中调用其提供的类,以及类的属性和方法,从而实现互联网地图发布与功能操作。

官网示例地址:
https://openlayers.org/en/latest/examples/
官网API文档地址:
https://openlayers.org/en/latest/apidoc/
官网框架下载:
https://openlayers.org/download/
在这里插入图片描述
在这里插入图片描述

2、Cesium简介

Cesium正式发布于 2014 年,是一个完全开源的基于 WebGL 的 JavaScript框架,无需安装插件即可创建具有最佳性能、精度、视觉质量和易用性的世界级三维地球影像和地图,并且具有丰富的开源社区内容。 Cesium 作为一个较为年轻的三维可视化框架,在数字地球项目的应用上有着巨大的优势,其具有以下 3 点特性:

(1)支持多种视图
能够以 2D、2.5D 和 3D 形式对地图进行展示,并且无需分别编写代码。
(2)支持地理信息数据动态可视化
a. 能够使用时间轴动态展示具有时间属性的数据。
b. 能够使用符合 OGC 标准的 WMS、WMTS 等多种地图服务,并且通过流式传输图像和全球地形。
c. 能够通过加载 KML、GeoJSON 等格式的数据绘制矢量图形。
d. 支持加载 3D Tiles 和 glTF 格式的三维模型,其中 3D Tiles 可以加载点云、倾斜摄影等大规模模型数据。
(3)高性能和高精度的内置方法
a. 对 WebGL 进行优化,充分利用硬件加速功能,使用底层渲染方法进行可视化。
b. 提供了可以绘制大型折线、多边形、广告牌、标签等的 API。
c. 提供了可以控制摄像头和创造飞行路径等的坐标、向量、矩阵运算方法。
d. 提供了可以控制时间轴等组件的动画控件。
官方示例地址:(下载框架后,带有示例代码)
https://sandcastle.cesium.com/
官方英文API文档地址:
https://cesium.com/learn/cesiumjs/ref-doc/
国内中文API文档地址(版本低):
http://cesium.xin/cesium/cn/Documentation1.72/index.html
官方框架下载地址:
https://www.cesium.com/downloads/
官方的资源列表(需注册账号、登录,可申请TOKEN,在项目中调用):
https://cesium.com/ion
在这里插入图片描述
在这里插入图片描述

3、ThreeJS简介

官⽹对 Threejs 的介绍⾮常简单:“Javascript 3D library”。openGL 是⼀个跨平台3D/2D的绘图标准,WebGL 则是openGL 在浏览器上的⼀个实现。web前端开发⼈员可以直接⽤WebGL 接⼝进⾏编程,但 WebGL 只是⾮常基础的绘图API,需要编程⼈员有很多的数学知识、绘图知识才能完成3D编程任务,⽽且代码量巨⼤。Threejs 对 WebGL 进⾏了封装,让前端开发⼈员在不需要掌握很多数学知识和绘图知识的情况下,也能够轻松进⾏web 3D开发,降低了门槛,同时⼤⼤提升了效率。

OpenGL,WebGL到Three.js

OpenGL它是最常用的跨平台图形库。
WebGL是基于OpenGL设计的面向web的图形标准,提供了一系列JavaScript API,通过这些API进行图形渲染将得以利用图形硬件从而获得较高性能。

而Three.js是通过对WebGL接口的封装与简化而形成的一个易用的图形库。简单点的说法threejs=three + js,three表示3D的意思,js表示javascript的意思。那么合起来,three.js就是使用javascript 来写3D程序的意思。而javascript的计算能力因为google的V8引 擎得到了迅猛的增强,做3D程序,做服务器都没有问题。

WebGL门槛相对较高,需要相对较多的数学知识(线性代数、解析几何)。因此,想要短时间上手WebGL还是挺有难度的。 Three.js对WebGL提供的接口进行了非常好的封装,简化了很多细节,大大降低了学习成本。并且,几乎没有损失WebGL的灵活性。

官网地址:
https://threejs.org/
官方示例地址:(下载框架后,带有示例代码)
https://threejs.org/examples/#webgl_animation_keyframes
ThreeJS中文教程地址:
http://www.yanhuangxueyuan.com/
http://www.webgl3d.cn/
WebGL理论基础:
https://webglfundamentals.org/webgl/lessons/zh_cn/
官网框架下载:
https://github.com/mrdoob/three.js/
https://github.com/mrdoob/three.js/archive/master.zip
在这里插入图片描述

4、虚幻引擎Unreal Engine

虚幻引擎是全球最开放、最先进的实时3D创作平台。经过持续的改进,它已经不仅仅是一款殿堂级的游戏引擎,还能为各行各业的专业人士带去无限的创作自由和空前的掌控力。无论是前沿内容、互动体验还是沉浸式虚拟世界,一切尽在虚幻引擎。——来自官网

使用 Cesium for Unreal 插件, 可以将 3D 真实世界的地理空间数据加载到 Unreal 中使用了,也就是说游戏中虚拟世界它可以来源于我们物理设备采集的真实世界。

官网地址:
https://www.unrealengine.com/zh-CN/
虚幻引擎5文档:
https://docs.unrealengine.com/5.0/zh-CN/unreal-engine-5-0-release-notes/
引擎下载地址:
https://www.unrealengine.com/zh-CN/download
在这里插入图片描述
在这里插入图片描述

三、软件介绍

1、GeoServer介绍

GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。

GeoServer的主要特点:
1)兼容WMS 和WFS 特性
2)支持PostGIS、Shapefile 、ArcSDE、Oracle、VPF、MySQL、MapInfo
3)支持多种投影
4)能够将网络地图输出为JPEG、GIF、PNG、SVG、KML
5)能够运行在任何基于J2EE/Servlet容器上
6)支持OpenLayers

GeoServer能够发布的数据类型:
1)地图或影象——应用WMS
2)实时数据——应用WFS
3)用户更新、删除和编辑的数据——应用WFS-T

官方下载地址:
https://geoserver.org/download/
在这里插入图片描述

2、QGIS介绍

QGIS作为一款开源的桌面GS软件.其易用性、稳定性和可扩展性受到越来越多的技术人员和觉者的好评与支绩.并具菱无社及的开发模式使QGIS的研发和迭代非常迅速。目前,QGIS已经具有完整且稳定的桌面GIS功能,并且逐渐地在移动GIS、WebGIS等方向进行扩展,可以与MapServer、PostGIS等众多开源GIS软件和模块相互支持,形成工具链(Toolchain),并构成功能全面的GIS软件体系,在开源GIS中具有独特且完整的应用前景。

QGIS与其他开源软件一样,研发速度很快,几乎每个月都会推出一个新版本,并且每年会推出一个长期支持版本(Long Term Release,LTR)。相对于最新的QGIS版本,长期支持版本更加稳定。QGIS长期支持版本启动页面的右上角注明了“long term release”字样。
QGIS之所以受到GIS工作者和科研人员的欢迎,主要因为其具有以下特点:

1)优秀的用户界面
QGIS的设计初衷是构建一个地理数据浏览与制图的工具,并基于Qt平台构建GUI,因此相对于uDig、GRAS$GIS等常见的开源桌面GIS软件. QGIS用户界面非常友好。

2)跨平台能力
QGIS可以运行在多数常见的操作系统中,如类UNIX-like(包括UNIX、Linux、BSD等)、Mac OS、Windows等。

3)空间分析能力
QGIS内嵌GDAL、SQLite等常见的GIS类库,并且可以整合GRASS GIS、SAGA GIS等桌面GIS软件。因此,QGIS可以轻松地完成常见的数据处理与空间分析操作。
4)数据格式的支持性强
QGIS对各种栅格数据和矢量数据的支持性很强,基本可以覆盖当前主流的地理空间数据格式,如shapefile、coverages、personal database、GeoTiff等。QGIS还可以访问Postgre、MySQL、SQLite等数据库。另外,QGIS还可以通过插件扩展等方式增加数据的支持格式。

5)可扩展性强
QGIS具有插件功能,因此用户可以轻松地从互联网或官方渠道获得并安装特定功能的插件。另外,开发者还可以利用PyQGIS或C++网AP)对QGIS进行二次开发。如果上述方法仍难以满足用户需求,那么开发者可以通过重新编译的方式自定义QGIS的功能(但必须符合GNU GPLv2协议)。

QGIS主要功能:
作为一个完整的地理信息系统桌面软件,QGIS的主要功能包括数据浏览、地图制图、数据管理与编辑、空间数据处理与空间分析、地图服务等功能框架。

1)数据浏览功能
QGIS创立的初衷就是提供一个简单的地理空间数据浏览工具,因此数据浏览功能是QGIS的核心功能。QGIS既可以利用内嵌
GDAL/ORG和GRASS支持常见的数据格式,也可以读取PostGIS、SpatiaLite、MS SQL Spatial、Oracle Spatial等存储于数据库中的地理空间数据。另外,QGIS还可以访问符合WMS、WMTS、WCS、 WFS等OGC标准的互联网空间数据服务。某些数据虽然无法被原生QGIS软件读取,但它们可以通过插件扩展的方式被读取。因此,相对于ArcGIS、GRASS GIS等桌面软件,QGIS的数据支持能力非常强。

2)地图制图功能
QGIS具有非常强大的地图表达和渲染能力,甚至可以进行简单的3D渲染。在OpenGlS中,QGIS包含完整的符号化、地图标注、输出与打印功能。特别是,QGIS具有实时渲染和优秀的抗锯齿能力。在一定程度上,OGIS的制图能力远超绝大多数的GlS软件,在某些方面甚至超越了ArcGIS软件。

3)数据管理与编辑功能
受益于QGIS的数据支持能力,QGIS可以管理不同数据源的地理空间数据。这些不同数据源的数据在QGIS中具有相同的数据接口,不同数据类型的空间数据可以轻而易举地进行格式转换。我们可以通过QGIS完整的矢量编辑功能对这些数据进行增、删、改、查等操作及基本矢量叠加运算。

4)空间数据处理与空间分析功能
空间分析实际上属于空间数据处理的一部分。QGIS的空间数据处理与空间分析功能较弱,但是QGIS整合了GDAL/OGR、GEOS.GRASS GIS、SAGA GIS等GIS工具。因此,QGIS的优势在于可以对来源不同的空间数据处理工具进行整合,利用QGIS中的ProcessingModeler、PyQGIS和C++API构建自动化的数据处理工具,以解决复杂的地理与空间问题。

5)地图服务功能
QGIS可以作为WMS、WMTS客户端,QGIS Server可以作为轻量级WMS、WCS、WFS服务器。如果QGIS Server不能满足需求,则可以通过MapServer构建复杂的GIS服务器。

官网下载地址:
https://qgis.org/en/site/forusers/download.html
在这里插入图片描述

3、PostgreSQL数据库介绍

PostgreSQL是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。PostgreSQL的起源可以追溯到1986年,作为加州大学伯克利分校POSTGRES项目的一部分,并且在核心平台上进行了30多年的积极开发。

PostgresSQL凭借其经过验证的架构,可靠性,数据完整性,强大的功能集,可扩展性以及软件背后的开源社区的奉献精神赢得了良好的声誉,以始终如一地提供高性能和创新的解决方案。PostgreSQL在所有主要操作系统开始使用PostgreSQL从未如此简单。

对比Mysql:
1)PostgreSQL完全免费,而且是BSD协议,如果你把PostgreSQL改一改,然后再拿去卖钱,也没有人管你,这一点很重要,这表明了PostgreSQL数据库不会被其它公司控制。oracle数据库不用说了,是商业数据库,不开放。而MySQL数据库虽然是开源的,但现在随着SUN被oracle公司收购,现在基本上被oracle公司控制,其实在SUN被收购之前,MySQL中最重要的InnoDB引擎也是被oracle公司控制的,而在MySQL中很多重要的数据都是放在InnoDB引擎中的,反正我们公司都是这样的。所以如果MySQL的市场范围与oracle数据库的市场范围冲突时,oracle公司必定会牺牲MySQL,这是毫无疑问的。

2)与PostgreSQl配合的开源软件很多,有很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这在MySQL下则比较困难。

3)PostgreSQL源代码写的很清晰,易读性比MySQL强太多了,怀疑MySQL的源代码被混淆过。所以很多公司都是基本PostgreSQL做二次开发的。

4)PostgreSQL在很多方面都比MySQL强,如复杂SQL的执行、存储过程、触发器、索引。同时PostgreSQL是多进程的,而MySQL是线程的,虽然并发不高时,MySQL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL的总体处理性能不如PostgreSQL,原因是MySQL的线程无法充分利用CPU的能力。

官网下载地址:
https://www.postgresql.org/download/

四、框架选择

在网络上,对开源的框架各种优势劣势的评价,优势包括免费透明、可修改、社区支持等,弊端也是有的,包括学习成本、良莠不齐、性能一般、视觉效果普通等。

以开源框架为主,主要基于以下几个方面考虑:

1、搭建国产化、自主可控的平台产品

基于收费或闭源的框架上开发出来的产品,必然受制于框架,需要考虑收费框架上的投入成本,也无法形成自主可控;当形成自主可控的产品时,在产品在宣传与推广,或招标、投标的竞争上,都更加有优势;

2、可满足各类项目的应用需求

在收费框架基础上形成的产品,一定程度上降低了自己产品的竞争力;很多项目上不得不把自己局限于供应商的视野、要求、支配、价格以及时间表中;反之,基于开源框架,可以尽情的满足客户需求,以更深度应用的完善自己产品,想怎样改都可以,而且也有庞大的开发者和用户的社区去寻求帮助。

3、成本节约

大笔的软件或框架的授权费用被节约,可以将资源用于对核心业务的关注。并且随着现今信息化的发展,企业对于项目间争夺和竞争越来越激烈,项目的价格也因为各种因素越来越低,利用开源的框架,在产品复制上,可以逐步的降低成本;

4、开源无“国界”

选择开源软件及框架,不仅仅是因为它的价格优势,现今世界格局瞬息万变,地缘摩擦加剧,商业的收费的软件,随时因为各种因素被制约、被限制,进而影响在其之上的软件及产品;开源的软件,不用担心这个问题,有广大的社区开发者和组织支持、升级及漏洞修复,且越来越多的政府和组织开始采用,甚至像微软也开始对某些项目逐步开放代码,EPIC的虚幻引擎的核心代码也开源了。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐