WebGIS开发入门

2023-10-28

目录

一 WebGIS:

二 GIS背景

三 如何入门webgis开发

1 gis数据处理

2 gis数据服务发布

3 gis数据服务调用

4 gis数据渲染

四 WebGIS核心价值

五 webgis发展方向

六 gis开发就业方向

1 数据处理及制图方向(软件操作):

2 二次开发(桌面端-C端-Client)

3 webgis开发(网页脚本开发)

4 sdk引擎开发

小白新手,可以从该框架入手学习

webgis基础开发教程可参阅:小白GIS-基于地图的Web开发教程

一 WebGIS:

Web就是网页,GIS全称是地理信息系统;所以webgis系统就是网页端的地理信息系统,即将地理空间信息以地图的方式在网页端展现出来,做可视化或者是空间分析功能;

二 GIS背景

        gis是一门专业课程,大学阶段叫地理信息系统(科学),研究生阶段是地图学与地理信息系统;该专业小众而又专业。

        大部分gis专业的学生,在本科阶段,包括c语言、c++、数据结构,c#,VisualStudio等基础技能都会有相关课程教学。

        如果上大学知道这专业可以做软件开发的话,那你就比别人早觉悟一步了,但相信大部分人有这觉悟可能已经大三左右了。

        往后就是实操技能,接触arcgis二次开发、supermap制图等等;然后是arcgis for js的网页gis二次开发;大学阶段接触开源gis相对比较少,因为还是以课程为主。

        目前随着地图渗透在各行各业,只要设计地图的领域都可以定义为GIS。

三 如何入门webgis开发

        想成为比较专业的giser,最起码从gis数据处理,gis数据服务发布,gis数据服务调用,gis数据渲染这四个方向入手;

1 gis数据处理

        gis中的数据一般有矢量栅格数据;

        首先对shp,geojson等矢量数据格式及其构成要有一定了解;其次可以利用arcgis、supermap、mapgis、qgis等软件操作查看、处理、以及转换数据,软件会用其中一二即可。

        栅格数据:就是图片数据,切片数据;常用来发布成底图服务。

        gis数据库:mysql,postgis等空间数据库;用来存储空间数据,说白了就是坐标嘛。

2 gis数据服务发布

        常用方式通过地图服务器类似于 ArcGIS Server、geoserver等,将矢量数据或者栅格数据发布成矢量或者栅格数据服务,如果只是发布简单的栅格服务,用nginx等web服务器也是可以的;

3 gis数据服务调用

        当得到一些发布成功的restful服务地址后,我们可以使用各种gis的sdk调用服务;常用的sdk特别多如下。只需要掌握html、css、javascript即可上手使用。

(1)arcgis api for javascript

(2)openlayers

(3)leaflet

(4)mapbox

(5)cesium

4 gis数据渲染

一种是利用sdk调用地图服务器发布的restful服务,通过指定APi渲染;

一种是直接将txt,geojson,wkt等格式的gis数据,通过sdk绘制几何图形的方法将其绘制在网页地图;

四 WebGIS核心价值

        gis的核心价值是空间分析能力;目前随着可视化方向的发展,已经开始有所分化;空间分析多在传统GIS行业;可视化的设计范围就相对更广了。

        空间分析:包括了路径导航分析,缓冲区分析,叠加分析等等,现在主流的地图引擎,百度,高德,滴滴等都是体现gis空间分析能力的代表,空间分析借助了更多gis传统算法

        空间可视化:即将点线面等要素能在地图直观表达出来,然后加上各种酷炫渲染效果;像墨迹天气等结合遥感数据做的天气可视化系统等

五 webgis发展方向

        个人感觉:目前gis在被各行各业逐渐稀释,即所有行业都能涉及gis内容;但是现在最火也比较专业的是CIM,BIM+GIS等方向;咱也知道行业特点是概念先行,实践在后;不过迟早能发展起来的。

        二维电子地图:政府项目偏多,因为重点是对gis数据的空间分析功能。

        CIM:城市信息模型,顾名思义,范围较大,侧重点在地图大空间下,结合城市级别的模型,进行可视化方向的应用,比如智慧城市;重点在数量级,可视化方向;目前超图,arcgis等都在做。

        BIM+GIS:建筑信息模型+gis;咱就简单点,就是将BIM模型以gis支持的格式,在webgis地图中将模型展现在真实地理位置的真实位置上;重点在模型本身,在模型上做概念,比如精度,操作度等;倾斜数据,obj,3dtiles等都可以在地图展示;

        气象+gis:将气象反演数据结合地图做展示,主要是区域性的降水,温度,地面填土等方向,仅仅可视化作用,核心部分在遥感数据反演。

        数字孪生方向:个人理解,数字孪生未来应更偏向与物联网对接;用高精度的模型,酷炫的场景模型,将真实环境的“实体”通过电脑数字化出来,做到极度逼真;围绕此方向可做的概念也是很多;通俗点说,希望用鼠标操作物理世界;

六 gis开发就业方向

1 数据处理及制图方向(软件操作):

        gis数据种类较多,可以做数据处理,数据转换,数据清洗,数据服务发布,专题制作出图等工作;技能我觉得对常用的gis软件操作熟悉,arcgis, supermap,mapgis,udig等等,熟悉其中常用转换工具,符号化,专题图制作流程即可;

        该工作适合对编程,程序不感冒同学;女生具多,比较合适;

2 二次开发(桌面端-C端-Client)

        二次开发,比较多的是arcgis eninee二次开发;这工作就是利用arcgis的开发包,实现arcgis中的功能,针对不同项目,不同业务定制实现对应的功能;

        大学一直从事二次开发的同学可以继续做;不过目前岗位较少

      掌握技能:c#

3 webgis开发(网页脚本开发)

        新手入门最快的方向;只要熟练引用sdk库开发地图功能,就可以做一些gis渲染相关的项目;

做一些基础的空间分析或者空间可视化系统;目前各大地图厂商也陆续推出自己的可视化sdk,但都是局部,部分定制功能,适合gis系统锦上添花;入门gis开发最好先从以下技能开始;

二维:openlayers,leaflet,arcgis api for js 3.x,mapbox     实现原理:canvas ,image

三维:cesium,arcgis api for js 4.x ,mapboxgl                   实现原理:webgl

2.5D:mapbox

掌握技能:html css javascript  ,一点canvas  webgl技能,geoserver,turfjs等,多多益善。

4 sdk引擎开发

        上面的工作都是对sdk的使用,通过sdk来做项目;很多公司,有一定规模后,会实现自己的sdk;

一种:大公司,从零实现地图引擎,需要技能较高,难度大;熟练canvas和webgl开发

一种:小公司,封装造轮子开源的sdk,做二次封装,对sdk源码有一定理解即可;

熟练掌握技能:canvas webgl 数学能力,偏向于矩阵等算法

小白新手,可以从该框架入手学习

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebGIS开发入门 的相关文章

  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser
  • 【前端】canvas图片加文字

    注释标记了操作步骤 import React Component createRef from react class CertifyImgRender extends Component bgRef createRef
  • 使用 EPSG:25832 投影在 Leaflet 中垂直对齐 TMS 图块

    我使用 Leaflet 和 Proj4Leaflet 来处理 25832 中的图块 该应用程序相当简单 我尝试将 EPSG 25832 中的图块叠加到全比例底图上 我已从瓷砖地图元信息中复制了各个分辨率和来源 我面临的问题是地图未对齐 一旦
  • python 中的测地线缓冲

    给定土地多边形作为Shapely https pypi python org pypi Shapely MultiPolygon 我想找到代表例如的 多 多边形海岸线周围12海里缓冲区 使用匀称buffer方法不起作用 因为它使用欧几里德计
  • 如何有效地将纬度/经度地理编码反转为行政区

    我正在处理纽约市出租车数据集 该数据集的列包括日期时间 接送纬度 经度 下车纬度 经度等 现在我想对纬度 经度进行反向地理编码以找到行政区 社区 我碰到geopy并发现这样的事情完美地工作 from geopy geocoders impo
  • sf 对象的大小图例不会显示正确的符号

    有谁知道为什么传说size审美的BIR74不会显示点大小而是矩形 如果答案是肯定的 我该如何解决这个问题 可重现的例子 library sf devtools install github tidyverse ggplot2 library
  • 将地图标记添加到 Open Layers 6

    我的问题很简单 如何在特定的经度和纬度处添加标记 穿过开放层示例页面 https openlayers org en latest examples icon html我创建了一张带有标记的新地图 我使用添加了标记new ol Featur
  • 原则 2 的 GIS 扩展

    我想为我的 Doctrine 2 项目编写一个 GIS 地理空间数据 扩展 我知道如何编写简单的自定义函数和类型 为了适应MySQL特殊的存储格式 我在检索 存储数据时需要使用一些SQL函数 GeomFromWKB 和AsBinary 我找
  • 地理数据网络服务

    我正在考虑编写一个程序来检查英国议会议员最近提出的一些里程声明 实际上大约有 45 000 个里程 我所掌握的数据相当准确 旅行的出发地和目的地通常仅 在城镇级别提供 我想做的基本上是查看他们提交的里程数据 查看从网络服务获得的 计算 里程
  • 如何从 NoSQL DBMS(如 DynamoDB)存储 GPS 坐标并搜索半径范围内的地点

    我的团队需要像 DynamoDB 这样的 DBMS 来存储大量数据 主要是位置和坐标 我考虑过使用一些基于 GIS 的 DBMS 例如 PostGIS 并在 POINT 上建立索引 但 DynamoDB 似乎非常适合我们的使用 存储坐标并快
  • Leaflet R 大地图的性能问题

    我想知道是否有其他人在使用 R 中的传单包绘制大量标记和多边形时遇到类似的问题 这通常应该是这样的 但是 当我放大 缩小地图时 多边形和标记显然不合适 或者您可以说底图没有正确调整 下面包含一个示例 当我绘制较小的区域或几个标记时 我不会遇
  • openlayers 地图未在 vuejs 中显示

    以下代码片段是一个 vue 文件 它不会生成任何错误 但 openlayers 地图不会显示 我尝试了 openlayers 的两个 vue 插件 但似乎没有按照我的需要工作 在 vue 之外 代码可以工作 我使用 npm install
  • 将 R data.frame 转换为 Javascript 数组

    我想将数据框的某些列保存为特定格式 JavaScript 格式 我尝试过使用toJSON from rjson包但这不起作用 我的结果应该是这样的 http leaflet github io Leaflet markercluster e
  • 在 Debian 上安装 PostGis 时出现错误“找不到 PGXS Makefile”

    我正在 Debian 机器上通过 psql 安装 PostGis 实际上是 crunchbang 我已完成以下步骤 wget http download osgeo org postgis source postgis 2 0 3 tar
  • 在 R 中从一条线偏移绘制一条平行线

    我有代表沿着一些街道行驶的线串 但我实际上想代表骑自行车者的旅程 它偏离线路 即他们在路边附近行驶 我正在努力思考如何去做 我制作了一段可重现的 R 代码来进行说明 Let s say I have a route along some s
  • 自定义 OpenLayers 控件

    如何轻松自定义 OpenLayers 地图控件 或者至少 如何最小化控件的高度 谢谢 附言 有 CSS 覆盖吗 您可以对任何 openLayers 控件进行子类化 我刚刚通过对 PanZoomBar panZoomBar js 进行子类化
  • 使用 OpenLayers 动态添加自定义标记到地图

    我想让用户在地图上添加自定义标记以及每个标记的描述 任何提示 任何教程的链接都会非常有用 您可以注册一个函数来在地图上 点击 事件 当用户单击它时 会自动添加该标记 尝试这样的事情 map is your map created using
  • 使用 SP 包中的 SpatialPoints() 转换坐标参考系 (CRS) 以创建空间数据框

    Issue 我有一个形状文件我已将其导入到 R 中 并为正在进行的分析选择了感兴趣的变量 我的最终目标是插值点数据 海豚 ID 获取海面温度 SST 堆栈中每个单独的光栅文件的值70 栅格来自名为 ncin SST 的对象 该对象是使用函数
  • 检索 geodjango 多边形对象的边界框

    如何在 geodjango 中获取 MultiPolygon 对象的边界框 在 API 中找不到任何内容http geodjango org docs geos html http geodjango org docs geos html
  • 地图路由,像谷歌地图一样吗?

    我一直对地图路由很感兴趣 但我从未找到任何好的入门 甚至高级 级别的教程 有人有任何指示 提示等吗 Update 我主要寻找有关如何实现地图系统 数据结构 算法等 的指导 看看开放街道地图项目 http www openstreetmap

随机推荐

  • git 001--建本地仓库和远程仓库和拉代码

    要使用Git对我们的代码进行管理 首先需要获得Git仓库 获取Git仓库通常有两种方式 在本地初始化Git仓库 不常用 从远程仓库克隆 常用 一 建本地仓库 方法一 在自己电脑的任意目录下创建一个空目录 例如桌面的aaa 作为我们的本地Gi
  • 新手入门必看MyBatis-Plus&Druid数据源

    MyBatis Plus Druid数据源 我们就一起来了解下Mybatis Plus吧 什么是MyBatis Plus MyBatis Plus的优势 MyBatis Plus简单来说就是在原本的MyBatis的基础上加了Buff或者说是
  • [系统安全] 四十四.恶意代码同源分析及BinDiff软件基础用法

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • 外盘期货的几个级别 你到达几级了?

    01 小白 如果开始赔了钱 就收手不做或者学会敬畏市场还好 但如果开始的福利期太顺或者太容易 就及其容易造成信心爆棚 对行情存在 赌 的思想 反而不利于以后的成长 这种情况基本出现在刚刚入市 实盘交易时间短的小白身上 02 筑基期 处在这一
  • 二叉树的扩展——主要方法和基本算法等

    1 求树的高度 思路 二叉树的高度等于左右子树里面的最大高度 int high BtNode ptr if ptr NULL return 0 int L high ptr gt lchild int R high ptr gt rchil
  • java.lang.IllegalStateException

    Caused by java lang IllegalStateException The specified child already has a parent You must call removeView on the child
  • 【SQL】保姆级教程:MySQL配置全过程 & 编辑器DBeaver的安装配置

    MySQL 是最流行的关系型数据库管理系统 在 WEB 应用方面 MySQL 是最好的 RDBMS Relational Database Management System 关系数据库管理系统 应用软件之一 文章目录 一 什么是数据库 二
  • 数字水印技术的原理、实现及其应用

    概述 数字水印 是指将特定的信息嵌入数字信号中 数字信号可能是音频 图片或是视频等 数字水印可分为浮现式和隐藏式两种 明水印 visible watermarking 其所包含的信息可在观看图片或视频时同时被看见 盲水印 blind wat
  • 计蒜客T1461——校验信用卡号码

    如题 本题需要解决的本质就是多个字符串转换为整型数据的过程 主要的考点在于如下3个 1 循环输入多个字符串并不间断 2 将字符串处理为整型数据 3 完成对整形数据的检验 上述三个要求通过STL可以很轻松地解决 具体做法写在了代码注释之中 i
  • Unity3D 4.0新功能:Mecanim动画系统基础教程

    作为Unity4 0的主要更新功能 Mecanim动画被寄予了很多的期望 系统有先进的地方 也有不足的地方 这些我们留到最后再来总结 阿赵粗略的学习了一下 写下以下的教程 这篇教程简单的说明了Mecanim系统的用法和控制方式 里面用到的资
  • electron-vue中报错 Cannot use import statement outside a module解决方案(亲测有效!!!)

    错误 Cannot use import statement outside a module 不能在模块之外使用导入语句 原因 安装的某个依赖包里使用了import语法 因为我们打包输出的是commonjs规范 所以不识别import语法
  • 学习笔记 React(一)Hello React例子及创建虚拟DOM的两种方式

    React官网地址 React库 最基础的例子 官网 1 英文官网 https reactjs org 2 中文官网 https react docschina org React库 babel min js ES6 gt ES5 JSX
  • C++中函数原型和函数定义

    C 中函数原型和函数定义 C 函数原型指的是函数声明的语法形式 它告诉编译器函数的名称 返回类型和参数列表 函数原型的语法形式如下 return type function name parameter list 其中 return typ
  • 什么是强制缓存?什么是协商缓存?cache

    强制缓存和协商缓存是用于在Web浏览器和服务器之间进行缓存控制的两种机制 强制缓存 强缓存 强制缓存 强制缓存是通过设置HTTP响应头来实现的 它告诉浏览器在一定时间内直接使用缓存的副本 而不需要再向服务器发起请求 常见的强制缓存相关的响应
  • PHP Filter伪协议Trick总结

    PHP Filter伪协议Trick总结 前言 最近在学习的过程中碰到了很多的filter协议的小trick 在此做一个总结以及对filter协议的一些探索 PHP Filter协议介绍 php filter是php中独有的一种协议 它是一
  • 题目0010-数据分类

    数据分类 题目描述 对一个数据a进行分类 分类方法是 此数据a 4个字节大小 的4个字节相加对一个给定值b取模 如果得到的结果小于一个给定的值c则数据a为有效类型 其类型为取模的值 如果得到的结果大于或者等于c则数据a为无效类型 比如一个数
  • SpringBoot配置文件

    1 springboot提供两种配置文件类型 properties和yml yaml 2 默认配置文件名称 properties 3 在同一级目录下优先级为 peoperties gt yml gt yaml YAML定义 三种配置文件写法
  • java基于HuTool工具类ExcelWriter合并单元格

    HuTool工具类ExcelWriter合并单元格 基于HuTool工具类ExcelWriter合并单元格并且使用 jdk1 8 lambda表达式 效果如下 创建注解 import java lang annotation Element
  • 内核篇加载内核模块(Android10)

    一 开发前期准备 本文中使用的是linageOs源码中下载的oneplus3 安卓10内核源码进行研究测试 交叉编译链使用的是linageOs源码中的交叉编译链 lineageOs源码中oneplus3内核源码位置路径 home qiang
  • WebGIS开发入门

    目录 一 WebGIS 二 GIS背景 三 如何入门webgis开发 1 gis数据处理 2 gis数据服务发布 3 gis数据服务调用 4 gis数据渲染 四 WebGIS核心价值 五 webgis发展方向 六 gis开发就业方向 1 数