WebGIS基础原理

news2024/11/16 16:26:41

该部分内容与部分插图、学习框架的主要参考的网站与博主如下(也趁机分享给大家):

OSGeo开源WebGIS在线教程:http://webgis.cn/
OSGeo《地理信息系统原理》:https://www.osgeo.cn/gis-tutorial/index.html
OSGeo《Python与开源GIS》:https://www.osgeo.cn/pygis/index.html
博客园李晓晖:http://www.cnblogs.com/naaoveGIS/
GitHub/知乎/公众号 作者giscafer:https://github.com/giscafer;作者小专栏:https://xiaozhuanlan.com/webgis
GitHub博主Tek Kshetri:https://github.com/iamtekson
GitHub博主Emmanuel Jolaiya:https://github.com/jeafreezy
其他:https://github.com/petedannemann/gis-programming-roadmap/blob/master/README.md
https://medium.com/geekculture/web-gis-development-starter-guide-e9ecd32e7fad

还包括一些公众号推送,包括老靳的WebGIS:#从0开始的WebGIS (qq.com),giscafer公众号文章:认识 WebGIS (qq.com),测绘数据分析:WebGIS 开发人员的学习指南 (qq.com)等。

1、 WebGIS定义

WebGIS可以拆分为Web+GIS。Web按照我们一般人的理解就是网页、网站,但是这只是我们看到的最表面的东西,它更是分布式图形信息系统。而GIS即是地理信息系统,GIS被定义为由计算机软硬件支持和不同方法组成的系统,该系统被设计用来进行空间数据等的采集、管理、处理、分析、建模和显示,以便解决复杂的规划和管理问题。

Web是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统,由于 HTTP 协议采用基于C/S(Client/Server)的请求/应答机制,具有较强的用户交互能力,可以传输并在浏览器上显示多媒体数据。而GIS中的信息主要是需要以图形、图像方式表现的空间数据,用户通过交互操作,对空间数据进行查询分析。所以,WebGIS就是利用Web技术来扩展和完善地理信息系统的一项技术,人们基于WebGIS可以利用Web来实现空间数据的采集、处理、分析和显示等。

OSGeo将WebGIS定义为:一个基于超文本传输协议的B/S模式(Browser/Server,浏览器/服务器模式)分布式计算机应用系统,在Internet或Intranet环境下存储、管理、分析、发布和共享地理信息;并且其将WebGIS看作是Network GIS和Internet GIS的一个子集。

2、 WebGIS特点

主要特点是:面向对象、分布式、可互操作。

开放性:WebGIS是一个开放的系统,可以实现数据的客户端共享、跨平台运营、容易集成;不仅仅可以实现不同来源、尺度、格式的地理数据的共享,还可以实现与数据库系统等的集成,支持JavaScript、Python、Java等基础,支持c/s模式。

网络适宜性:WebGIS更适合在万维网中运行,共享空间数据,降低系统的数据分发、运维成本。

支持数据分发和分布式处理:GIS服务器为用户提供地理数据目录服务、地理数据访问服务、地理空间分析服务、地理模型系统服务和地理空间可视化服务。通过互操作技术,处理过程可以由多个GIS服务器来协调和完成,这些服务器共享分布的数据对象,并在多个不同的平台上协同运行,以最大限度地利用网络资源(http://webgis.cn)。

3、 WebGIS的组成/架构

简单来说,WebGIS架构如下图所示,主要是包括三层:数据层(数据库层)、逻辑层(地图服务器中间层)、客户端(浏览器)。

插图来源公众号:giscafer

在这里插入图片描述

4、WebGIS优势

平台独立性:基于浏览器实现访问和分析

更广泛的准入:同时访问不同服务器的多个数据

降低系统成本:不需要专业的GIS软件、学习和维护成本低

操作更简单:web浏览器操作复杂性更低

计算负载均衡高效:相比传统的GIS软件依赖用户的电脑处理器性能,WebGIS更加充分利用网络资源

5、主要开源WebGIS(主要内容源于OSGeo)

相比于大家比较熟悉的开源GIS桌面软件(QGIS、SAGA、GeoDa等),目前比较流行的服务器端软件包括Geoserver、MapServer和QGISSERVER,以及开源的GIS数据库项目,如PostGIS/PostgreSQL空间数据库,此外还有一些开源项目,如数据转换工具(如GDAL/OGR)和地图投影算法库(如Proj和GeoTrans),这大多数软件都得到了osgeo的支持。

而从WebGIS的角度来看,开源工具可以分为两大类:组件产品和全栈产品。组件产品可以简单理解为该软件是一个软件单元,安装过程不捆绑安装其他的,而全栈产品安装使用中需要捆绑安装其他软件单元。

5.1 组件产品

MapServer(http://www.mapserver.org)

MapServer是一个用于在Web上发布空间数据和创建交互式地图应用程序的开源平台。它自20世纪90年代中期出现以来,被认为是成熟稳定的,并不断发展。其主要关注点是从多个层生成地图,包括基础图像和空间数据集。此外,还提供智能标签,包括先进的排版和布局、碰撞检测;可以读取和提供各种格式的空间数据,包括Shapefile、WMS、GDAL、PostGIS和GeoTIFF;常用于生成地图切片及其MapCache扩展;拥有支持各种语言的应用程序开发的库,包括Python、Perl、Ruby、Java和PHP。

PostGIS(http://postgis.net/)

PostGIS是支持空间查询的PostgreSQL数据库的扩展。PostgreSQL既是关系数据库又是对象数据库,被广泛认为是最先进的开源数据库,类似于Oracle。PostGIS支持各种空间查询,包括邻近度、半径、边界框、碰撞/重叠检测等。在SolVES等生态或地理模型中也经常使用。

Leaflet(http://leafletjs.com/)

Leaflet是一个侧重于前端用户界面的JavaScript库,它支持多个基本层和几何图形类型的组合,并涵盖了与OpenLayers类似的领域,但功能略有减少。其相对于OpenLayers的优势在于它对移动设备的出色支持、巨大的产品价值、简洁的极简主义设计以及对性能的强烈关注。

5.2 全栈产品

以下产品以“堆栈”或“捆绑”的形式分发,它们是模块化产品的预配置组合。有些在添加配置层和基础层之后可以按原样使用,所有这些都可以进一步扩展以创建自定义应用程序。

GeoServer(http://geoserver.org/display/GEOS/Welcome)

Geoserver主要基于Java语言,其提供了在面向服务的体系结构中创建和编辑地理空间数据以及提供地图的基本功能;使用OpenLayers模块并提供和实现Web地图服务(WMS)标准;使用GeoTools框架,该框架涵盖了MapServer的一小部分功能。与Geoserver本身一样,该框架也是用Java编写的。Geoserver主要吸引习惯使用Java工具和平台的开发人员。

GeoDjango(http://geodjango.org)

GeoDjango是Django应用程序框架的一组空间扩展。Django主要由Python编写,是使用Python构建Web应用程序的最流行的通用框架之一。与GeoMoose或MapGuide不同,它不提供开箱即用的应用程序,而是一组精心设计的构建块,用于构建自定义应用程序。与上面描述的一些其他堆栈产品不同,它对堆栈中将使用哪些其他地理空间工具的假设较少,并通过一系列设计清晰、文档齐全的API提供集成点。它可能会吸引那些希望在构建应用程序时有更多选择和控制的开发人员,以及那些更喜欢使用Python语言的开发人员。

MapFish(http://mapfish.org)

MapFish是来自Python社区的另一个堆栈产品。它基于(Python)Pylons框架,以及(基于Java的)OpenLayers和ExtJs框架。与GeoDjango不同,它提供了一个简单的开箱即用的应用程序,可以进行定制和扩展;还支持通过插件在Rails和PHP中进行开发。它提供了一个干净、紧凑的起点,可以很容易地在各种语言中扩展。与GeoDjango相比,它的优势在于为开发人员提供了更多的选择,因此他们可以更快地开始使用。它吸引具有Python或JavaScript经验的开发人员,以及重视其干净、紧凑设计的Rails/PHP开发人员。

6、WebGIS学习路线

全部内容见公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1919685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

30.ROM-IP核的调用

(1)ROM IP核简介: ROM是只读存储器,是一种只能读出事先锁存的固态半导体存储器。其特性是一旦存储资料就无法再将之改变或删除,并且资料也不会因为电源关闭而消失。(掉电不丢失) FPGA使用内部RA…

鸿蒙语言基础类库:【@ohos.util.HashMap (非线性容器HashMap)】

非线性容器HashMap 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 H…

算法 | NOIP1999 Cantor表

算法篇——Cantor的数表 - SteveWang - 博客园 (cnblogs.com) #include <bits/stdc.h> using namespace std; int high(int n) {return n*(n1)/2; } int main() {int k;cin>>k;int n1;while(1){if(high(n)>k){break;}n;} int mhigh(n);int wm-k1;if(n%20){cout…

Autosar诊断实战系列28-2E写DID Pending期间偶发回NRC0x13问题排查

本文框架 前言1.问题描述2.问题复现3.问题分析问题1:为何在2E Pending期间会发送功能寻址的10 01回NRC13?问题2:在ECU Pending期间收到功能寻址10 01,MCU需要如何处理?问题3:DcmDslConnection是如何定义的?问题4:功能寻址于物理寻址是否对应不同的DcmDslConnection?问…

vue 下拉菜单树形结构——vue-treeselect的组件使用

参考&#xff1a; https://www.cnblogs.com/syjtiramisu/p/17672866.htmlhttps://www.cnblogs.com/syjtiramisu/p/17672866.html vue-treeselect的使用 - 简书下载依赖 使用https://www.jianshu.com/p/459550e1477d 实际项目使用&#xff1a;

【087】基于SpringBoot+Vue实现的房租租赁管理系统

系统介绍 视频演示 基于SpringBootVue实现的房租租赁管理系统采用前后端分离架构&#xff0c;系统分为管理员、房东、用户三种角色&#xff0c;实现了登陆与注册、在线聊天、预约看房、房源管理、用户管理、租房、投诉举报、收藏、房主申请等功能 技术选型 开发工具&#x…

Protobuf: 大数据开发中的高效数据传输利器

作为一名大数据开发者&#xff0c;我经常需要处理海量的数据传输和存储。在这个过程中&#xff0c;选择一个高效、可靠的数据序列化工具至关重要。今天&#xff0c;我想和大家分享一下我在项目中使用 Protobuf 的经历。 目录 故事背景Protobuf 简介优点&#xff1a; 实战案例示…

Go-知识测试-示例测试

Go-知识测试-示例测试 1. 定义2. 例子3. 数据结构4. 编译过程5. 执行过程 建议先看&#xff1a;https://blog.csdn.net/a18792721831/article/details/140062769 Go-知识测试-工作机制 1. 定义 示例测试要保证测试文件以_test.go结尾。 测试方法必须以ExampleXxx开头。 测试文…

常见点云处理总结汇总

点云处理是一系列操作和技术&#xff0c;用于分析和处理三维点云数据&#xff0c;以提取有用的信息并生成可视化结果。以下是常见的点云处理方法及其简要说明&#xff1a; 1. 点云预处理 滤波&#xff1a;去除噪声和无效点&#xff0c;如使用统计滤波、半径滤波等。下采样&a…

PostgreSql中的JSON数据类型

PostgreSQL 提供了两种 JSON 数据类型&#xff1a;JSON 以及 JSONB。这两种类型主要的区别在于数据存储格式&#xff0c;JSONB 使用二进制格式存储数据&#xff0c;更易于处理。 PostgreSQL 推荐优先选择 JSONB 数据类型。 两种数据类型之间的区别&#xff1a; 功能JSONJSONB存…

【Linux】日志

日志是记录软件运行过程中发生的事件的一种手段&#xff0c;通常包含以下内容&#xff1a; 时间戳&#xff1a;记录日志条目创建的确切时间。这对于追踪事件发生的时间顺序至关重要。日志级别&#xff1a;表示日志信息的严重性或重要性&#xff0c;常见的级别包括 DEBUG、INFO…

2024年西安铁一中集训DAY1---- 杂题选讲

文章目录 牛客练习赛125 E 联谊活动&#xff08;枚举&#xff0c;分讨&#xff09;牛客练习赛125 F 玻璃弹珠&#xff08;类莫队&#xff0c;离线询问&#xff0c;数据结构&#xff09;2024ccpc长春邀请赛 D Parallel Lines&#xff08;随机化&#xff09;2024ccpc长春邀请赛 E…

Java高级重点知识点-24-函数式接口

文章目录 函数式接口函数式编程常用函数式接口 函数式接口 有且仅有一个抽象方法的接口。 格式&#xff1a; 修饰符 interface 接口名称 {public abstract 返回值类型 方法名称(可选参数信息);// 其他非抽象方法内容 }public interface MyFunctionalInterface {void myMethod…

二进制补码计算

基本知识 原码&#xff08;Sign and Magnitude&#xff09;:原码是一种最简单的表示法&#xff0c;使用符号位和数值位来表示整数。 符号位&#xff1a;最高位是符号位&#xff0c;0表示正数&#xff0c;1表示负数。 数值位&#xff1a;剩下的位表示数值的大小。反码&#xf…

2串锂电池5V升压15V 18V 2.5A 升压恒压IC H6391芯片 低待机功耗

H6391是一款升压恒压转换器芯片&#xff0c;适用于多种需要2.6-5V输入升压至较高电压的应用场景。但值得注意的是&#xff0c;在您提供的描述中提到输出可调达。 输出电压范围&#xff1a;H6391的直接输出电压可能无法直接达到15V或18V。 输出电流&#xff1a;H6391支持的可调…

Python类与对象01

1、理解使用对象完成数据组织的思路 1.1类和对象的基本理解 理解类&#xff1a;从现实世界到编程世界 类由三个部分组成&#xff1a;类名、类的属性、类的方法。类的定义实际上是描述事物的一种方法&#xff0c;在现实世界中&#xff0c;事物都是有属性和行为的。通过类&…

机器学习 | 对K-Means聚类假设的研究演示及实践示例

我们在Scikit-learn对K-means假设的调查中探索了揭示算法优势和局限性的场景。我们研究了K-means对不正确的聚类大小的敏感性&#xff0c;它在各向异性分布中面临的困难&#xff0c;它在不同的聚类方差中面临的困难&#xff0c;以及使用合成数据集的大小不均匀的聚类问题。我们…

2024.7.11作业

1.使用递归实现 求 n 的 k 次方 #include <stdio.h> int digui(int n,int k) { if(k0) //任何数的0次方等于1 { return 1; } else { return n*digui(n,k-1); //递归 } } int main(int argc,const char *argv[]) { in…

龙旗科技在线测评、招聘笔试 如何通过、考点分析|备考建议

龙旗电子入职在线测验真题考点分析&#xff0c;通过技巧&#xff1f; ​言语逻辑部分的考试时间是10分钟&#xff0c;需要完成10道题目。每题的作答时间被限定为60秒&#xff0c;一旦提交后无法返回修改。这部分的题目类型包括总结中心思想、选词填空和推理文章意思。考生需要快…

大模型真能模拟人类语言?中国人民大学提出新的数据增强方法

获取本文论文原文PDF&#xff0c;请在公众号【AI论文解读】留言&#xff1a;论文解读 论文标题:LLM-Generated Natural Language Meets Scaling Laws: New Explorations and Data Augmentation Methods 机构: School of Information Resource Management, Renmin University …