一、前言
一套WebGIS架构方案包含以下几个基本要素:
1. 前端框架
前端框架选择主要考虑到易用性、维护性和功能性。目前比较流行的前端框架有Vue、React和Angular等,其中Vue最为轻量级、易上手和扩展性好,因此可以选择Vue作为前端框架。
2. 后端框架
后端框架主要负责处理数据接口请求和数据存储。根据项目规模和需求,可以选择Flask、Django、Express、Spring等框架。其中,Flask是一款轻量级、灵活的框架,易于搭建,因此可以选择Flask作为后端框架。
3. 数据库选择
数据库主要用于存储和管理各种数据,包括地理空间数据、非地理空间数据等。目前较为常见的数据库有MySQL、PostgreSQL、MongoDB等,其中PostgreSQL是一款可扩展性和稳定性较好的数据库,支持地理空间数据的存储和查询,因此可以选择PostgreSQL作为数据库。
4. 数据库管理工具
数据库管理工具可以方便地对数据库进行管理、维护和优化。目前比较优质的数据库管理工具有PgAdmin、Navicat等,其中PgAdmin是一款免费且开源的数据库管理工具,支持PostgreSQL的管理和维护。
5. 地图渲染引擎
地图渲染引擎负责将地理空间数据转换为可视化的地图,并提供丰富的地图交互功能。目前较为流行的地图渲染引擎有Mapbox、Leaflet、OpenLayers等,其中Leaflet是一款轻量级、易扩展的地图渲染引擎,提供丰富的地图渲染和交互功能,因此可以选择Leaflet作为地图渲染引擎。
6. 地理编码服务
地理编码服务主要用于将地址转换为经纬度坐标或者将经纬度坐标转换为地址。目前市面上比较好的地理编码服务有Google Maps API、ArcGIS Online等,其中Google Maps API是一款大众使用的地理编码服务,免费版可以提供较准确的地址解析和逆地址解析功能,因此可以选择Google Maps API作为地理编码服务。
7. 部署环境
部署环境在开源WebGIS方案中也是十分关键的,可以选择Linux操作系统、Nginx服务器和Docker容器。其中,Linux操作系统是开源、快速、安全和稳定的操作系统,适用于部署Web应用、网络服务器等;Nginx服务器是一款高性能的Web服务器和反向代理服务器,可以提高Web应用程序的性能和规模化适应能力;Docker容器是一款轻量级、移植性强的容器技术平台,可以确保应用程序在任何环境下都能够正常运行。
以此为基本架构,可以根据实际情况进行灵活的定制和优化,以满足项目需求。
目前国际上著名的地理空间信息生产商大都拥有了成熟的产品线, 基本涵盖了从数据采集、数据编辑、数据管理、空间数据互操作、空间分析到网络地理信息服务注册、发布、聚合等所有地理信息工程相关的功能模块 。有时候,在商业软件价格比较昂贵的情况下,使用开源WebGIS也是一个不错的选择。
二、开源WebGIS架构
一套开源WebGIS架构方案包含以下三个部分:2.1 地理信息数据库和业务数据库
- 地理信息数据库用于存储地理信息数据(包含矢量、地名地址、专题及瓦片数据);
- 业务数据库用于存储前端网站或者行业应用的关系型数据;
2.2 GIS服务器
- GIS服务器则用于提供WMS、WTMS、WFS和WCS等GIS服务;
2.3 Web应用服务器
Web应用服务器主要针对行业应用,用于调取GIS服务和后台的业务数据,并在前端展示。
提供Web信息浏览服务,通常你看到的是一个网站。
2.4 开源WebGIS解决方案
针对WebGIS以上组成部分,一套开源WebGIS有着相应的解决方案,其架构方式如下 :
- 数据生产(桌面软件--uDig、QGIS等)
- 数据存储(关系型或非关系型数据库:postgreSQL、mySQL、mongodb)
- GIS服务(GIS服务器:mapserver、Geoserver)
- Web服务(Web服务器:tomcat、apache、nginx)
- 前端渲染(OpenLayers 、cesium、mapbox、leaflet)
当然还需要提供这一整套架构方式的外围软件环境:
- 虚拟化或者云环境(VirtualBox、OpenStack、docker)
- 操作系统(linux:centos、ubuntu)
- 堡垒机( teleport )
- 运维系统( spug )
- Nas服务器(TrueNas)
2.4.1 地图数据生产
- 使用uDig、QGIS、Grass等开源桌面GIS软件采集、加工地理信息数据
- uDig:http://udig.refractions.net/
- QGIS:https://www.qgis.org/
- Grass:https://grass.osgeo.org/
- OpenEV:http://openev.sourceforge.net/
- gvSIG :http://www.gvsig.com/
- OpenJUMP:http://www.openjump.org/
- OSSIM:http://trac.osgeo.org/ossim/
- InterImage:http://www.lvc.ele.puc-rio.br/projects/interimage/(专注影像解译)
- PolSARPro:https://earth.esa.int/web/polsarpro(极化雷达处理)
- E-foto:http://www.efoto.eng.uerj.br/en 航空摄影测量
2.4.2 地理信息数据存储
关系型数据使用PostGIS或者MySQL Spatial数据库存储地理信息数据和关系型业务数据,
- 非关系型数据使用mongodb数据库(瓦片、图像)
- PostGIS:http://postgis.net/
- PostgreSQL:https://www.postgresql.org/
- MySQL:https://www.mysql.com
- mongodb :https://www.mongodb.com/
- rasdaman:http://www.rasdaman.org/ (栅格数据库)
- SpatiaLite:http://www.gaia-gis.it/gaia-sins/ (轻量级数据库SQLite空间扩展)
2.4.3 GIS服务器
使用GeoServer、MapServer生产地图瓦片,注册、发布地理信息服务。
- GeoServer:http://geoserver.org/
- MapServer:http://mapserver.org/
- Mapnik:http://mapnik.org/
- TileCache:http://tilecache.org/
- MapTiler:https://www.maptiler.com/
2.4.4 Web服务器应用
使用Geomajas、Tomcat或apache搭建网站,在网页中嵌入地图容器加载地图;使用niginx作为反向代理或者负载均衡。
- Tomcat:http://tomcat.apache.org/ (网站服务器)
- apache:https://www.apache.org/(apache即可做网站服务器又可作反向代理、负载均衡)
nginx:http://nginx.org/ (负载均衡、反向代理)
- 地图网站专用服务器
- GeoMoose:https://demo.geomoose.org/
- Geomajas:http://www.geomajas.org/
2.4.5 个人客户端或者web应用服务器的前端展示:
地理信息服务使用OpenScales、支持Java的Openlayers或Leaflet地图容器前端展示。前端其他数据展示使用Java、vue等流行网页API。
- openlayers(Java): http://openlayers.org/
- openscales(Flex): http://openscales.org/
- LeafLet:https://leafletjs.com
- Cesium:https://github.com/CesiumGS/cesium
- ol-cesium:https://openlayers.org/ol-cesium/
注:这里的web应用服务器相对于GIS服务器而言是客户端,相对于浏览者而言是服务器。
以上给出使用开源软件实现WebGIS各个环节可采用的软件,在实际项目中,应根据项目需要做一下筛选。
比如:uDig (QGIS)+ PostgreSQL/PostGIS (mongodb)+ GeoServer + Tomcat +Openlayers组合。
倘若有高性能、高可用的需求,还应使用集群技术,搭建数据库集群、GIS服务器集群和web应用服务器集群生态,增加服务的冗余,提高服务性能,毕竟地图服务不是简单的网页服务,其消耗的资源是非常大的,即便是一个空间查询语句,对数据库的性能消耗也是非常可观的。
三、开源地理数据函数库
Vue 3.3 已经发布 ,
以下列出所有开源软地理信息软件或者商业地理信息软件都可能有到的开源地理信息函数库。其中,GDAL/ORG、PROJ.4、GEOS是地理信息软件或者系统开发的三架马车,它们搭建了地理信息软件的基础。
- GDAL/OGR:https://gdal.org/ 开源栅格/矢量空间数据转换库
- PROJ.4:https://proj.org/ 地图投影库
- GEOS:http://trac.osgeo.org/geos 开源地理空间数据引擎
- pyshp:https://pypi.org/project/pyshp/ 用于处理shapfile的简单函数库
- Shapely:https://pypi.org/project/Shapely/ 基于 GEOS,用于操作和分析平面几何对象的函数库
- Fiona:https://pypi.org/project/Fiona/ 基于GDAL,用于读取空间矢量数据的函数库
- Rasterio:https://pypi.org/project/rasterio/ 基于GDAL和Numpy,用于读取地理空间栅格数据的函数库
- PIL:https://pypi.org/project/PIL/ 用于处理影像的python库
- NumPy:https://pypi.org/project/numpy/ 用于矩阵科学计算的函数库
- Scikit-image:基于scipy的一款图像处理python库
- GeoPandas:http://geopandas.org/ 用于空间分析的函数库
- SPy:http://www.spectralpython.net/ 用于高光谱遥感影像处理的python库
- GML4J:http://gml4j.sourceforge.net/ 用于读取gml数据的函数库
- GSLIB:http://www.gslib.com/ 用于空间统计的函数库
- JTS:https://sourceforge.net/projects/jts-topo-suite/ (支持JAVA的空间分析包)
- GeoTools:https://www.geotools.org/ (支持JAVA的地理处理工具箱)
- GeoMesa:https://www.geomesa.org/ 分布式时空大数据分析工具,配合hadoop使用
四、开放网络地图引擎
- OSM:https://www.openstreetmap.org/ 地图
- Navit:https://www.navit-project.org/ 导航
五、开放三维引擎
- Cesium:https://cesium.com/
- OSG earth:http://www.openscenegraph.org/
- ogre:https://www.ogre3d.org/
- marble:https://marble.kde.org/
六、开放地理处理工具
- GeoTools:https://www.geotools.org/ 地理处理工具箱
- GeoNetwork:https://geonetwork-opensource.org/ 网络地图查看和目录工具
- Orfeo ToolBox:https://www.orfeo-toolbox.org/ 可以处理TB级的高分辨率光学,多光谱和雷达图像。 七、时空大数据框架
随着全球化和信息化的发展,数据已经成为一种非常宝贵的资源。时空大数据处理技术也因其在军事、环境、气象、交通和金融等领域的广泛应用而备受关注。为了提高数据处理效率和准确度,许多企业和机构开始采用开源框架来构建他们的时空大数据应用。
在本文中,我们介绍几个流行的时空大数据开源框架。
1. Apache Hadoop
Apahce Hadoop是一款流行的分布式存储和分析平台,它可以处理大规模数据和时间序列数据。Hadoop是一种完全开源的框架,旨在处理大数据集并在集群中分发数据。它主要由HDFS(Hadoop 分布式文件系统)和MapReduce(一种计算框架)组成。Hadoop有着广泛的数据处理能力,因此可以在很多大型企业、政府机构和科研团队中得到应用。
2. Apache Spark
Apache Spark是一款快速的大数据计算系统,其可以在内存中快速处理大数据。它能够支持复杂的数据分析任务和像机器学习这样的数据科学工作负载。Spark比Hadoop处理速度更快,并且可以在不占用太多资源的情况下进行大数据处理。它也支持Python、Java和Scala等多种编程语言。Apache Spark常被用来对时空数据进行分析和可视化。
3. GeoMesa
GeoMesa是一个地理信息系统(GIS)库,可以用于管理和分析大规模时空数据集。它是一个开源库,形成了在云中处理海量时空数据的技术基础,并提供了一些用于时空数据管理和分析的工具。GeoMesa支持多种数据源,如Hadoop、Spark和Accumulo等。利用GeoMesa框架,可以实现时空数据的存储、查询、分析和可视化等操作。
4. GeoSpark
GeoSpark是基于Spark的时空数据处理、分析和可视化框架。与Apache Spark相似,GeoSpark使用内存计算技术,利于大规模数据的处理。该框架支持多种时空数据源,包括点、线、面、栅格等各种空间数据类型,并提供了丰富的时空数据分析算法。GeoSpark发挥了Spark和Hadoop的优点,使它成为一种非常强大的时空数据分析框架,被广泛应用于城市规划、交通管理和环境监测等领域。
总之,这些时空大数据开源框架可以帮助企业和组织快速处理和分析时空数据,最大程度地实现数据价值。以上框架都是经过长期测试的,应用广泛的开源框架,因此用户可以根据项目需求和特点对其进行灵活的选择和定制。
八、开放协会或组织
- https://www.osgeo.org/ 开源地理空间基金会
- https://www.osgeo.cn/ 中国开放地理空间实验室
- https://www.opengeospatial.org/ OGC开放地理空间信息联盟
加利福利亚大学荧光动力学实验室python 库:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
也可参见grss-ieee地球科学与遥感学会与遥感相关的开源函数库和软件列表:
http://www.grss-ieee.org/open-source-software-related-to-geoscience-and-remote-sensing/
OSGeoLive 目录:
http://live.osgeo.org/en/overview/overview.html
关于我们
进群方式:关注" opengis"后,回复"小助手",加 “opengis.文强” 哥,微信回复“ 进群”,即可进群。
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!返回搜狐,查看更多
责任编辑: