关于三维GIS开发成长路线的一些思考

news2025/1/19 11:02:00

三维GIS是将GIS三维化表达,从一个三维GIS开发门外汉的角度来看,三维GIS开发成长路线分几个层面:

第一层面

做三维开发,最基本的Cesium、ThreeJS、MapBox这些要能做到接口级熟悉,熟悉接口是用来干嘛的,接口参数的意思,比如启用光照,设置光照强度,虽然你不知道原理,但是你知道设置了光照,系统就能显示光照,光照强度越大,场景越亮。通过这些接口设置参数,系统就能立马给你效果反馈,让你有获得感。
在这里插入图片描述
上面台北倾斜摄影数据加载到cesium,只需要两句话就能搞定,简单不?

 let tileset = await Cesium.Cesium3DTileset.fromUrl("http://localhost:8802/3DTILES_SAMPLE/tileset.json");
 viewer.scene.primitives.add(tileset);

绝大部分三维开发这都停留在这一层级,这一层级能够满足绝大部分项目需要,有些不懂的问题,通过搜索也能找到具体调用接口。

第二层面

调用Cesium这些SDK能满足大部分需求,对于一些高级需求,比如绘制贴地形发光折线,使用API调用就无法解决问题,需要从两方面研究,1.Cesium源码,2.别人使用Cesium写的shader.等你真正去研究时,你会发现自己知识很匮乏,矩阵转换看不懂,shader语法有如天书,不懂意思,片段着色器是啥,gl_postion代表啥意思……各种困难纷至沓来,很懵。咋办呢,在第二层面需要系统学习WebGL理论,并进行大量的编程试验,使用WebGL直接去绘制三角形、绘制模型、添加鼠标操作。这时候你就像打开了一个新的世界,原来Cesium、ThreeJS、MapBox这些框架都是基于WebGL来封装的,掌握了WebGL,就拥有了一把青龙偃月刀,别人写的WebGL代码,能够改造改造集成到自己的代码当中来,别人的shader效果做的很炫,很好,copy过来;shadertoy上面的炫酷代码,很好,copy过来……掌握了WebGL后你会发现能解决大部分显示问题了,很多个性化需求都能得到解决,这时候是最有动力和激情的,因为求知欲特别强,啥好看的东西都想往Cesium上面加,当你解决了别人只调用Cesium API无法解决的显示效果的时候,领导也特别信任你,你也特别有成就感。
在这里插入图片描述

第三层面

熟悉了WebGL后,你会发现领导提的需求越来越偏向幻化,对你的要求越来越高了,因为他觉得你啥显示问题都能搞定。比如领导在某个游戏或电影视频中看到某个场景,灵光一现,让你实现一个一模一样的场景,比如在Cesium上叠加地形,并把土地覆盖数据中植被区域披上草地。
在这里插入图片描述
你刚开始听会感觉很懵,会说我先预研看看。自己搞过草地渲染,搞过地形渲染,如何在指定区域种草,通过几天的搜索,找开源代码,没有现成可以copy的,咋办?咋办?咋办?这时候考验的就是你对GIS可视化与三维的融合能力了,你需要去翻阅地形草地渲染的paper,再深刻理解数字地球中Cesium对瓦片的生成与渲染的原理和过程,两者进行结合,再不停地进行效果调试,优化。给领导交差的时候,领导会对你竖起大拇指,虽然你心里很高兴,但是会觉得成就感并没有很强,反而挫败感只增不减。
在这一阶段,考验的是你对GIS+图形学的融合贯通能力,到这一阶段的人已经是凤毛麟角了。

第四层面

真正的大神级,这时候很少参与一线开发,往往把写代码作为自己想法的验证,很多时候把任务交代给底下的同事,和他商讨好技术路线和实现方式即可。这时候做的事情一般分为两个方面,一方面对最新技术与当前产品的结合mapbox能否用Vulkan渲染,真的比WebGL能成倍提高渲染效率?Cesium是否能用上DLSS3等。另一方面,架构设计与性能优化,从整体框架去设计一个数字地球,能针对当前产品问题,准备分析,并指导同事去定位性能问题。在这一阶段,是你的架构设计能力和经验的体现。
在这里插入图片描述

结语

我从一个外行的角度分析了三维GIS开发的几个层面,实际上也是一个三维GIS开发者的技术成长路线,希望能够大家带来一丝启发和思考。

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

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

相关文章

HarmonyOS4.0系列——08、整合UI常用组件

HarmonyOS4.0 系列——08、UI 组件 Blank Blank 组件在横竖屏占满空余空间效果 // xxx.ets Entry Component struct BlankExample {build() {Column() {Row() {Text(Button).fontSize(18)Blank()Toggle({type: ToggleType.Switch}).margin({top: 14,bottom: 14,left: 6,righ…

Camtasia 2023 v23.4.2.51146 Win功能强大的屏幕录制和视频编辑软件

Camtasia 2023.3.4.2是一款适用于各类用户的屏幕录制和视频编辑软件,特别适合需要制作教育、培训和营销视频的专业人士。它结合了易用性和多样的功能,使视频制作变得更加高效和专业。 软件安装 适用于 Win10.win11系统 1.直接安装软件,安装…

自定义异常处理演示

​ 为了防止黑客从前台异常信息,对系统进行攻击。同时,为了提高用户体验,我们都会都抛出的异常进行拦截处理。 一、全局异常处理 编写一个异常拦截类,如下:ControllerAdvice,很多初学者可能都没有听说过…

【Go语言】Go语言中的变量和常量

Go语言中的变量和常量 1 变量 变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。 Go 语言是强类型静态语言,所以变量的声明与赋值方式与 PHP/Python 等动…

极狐GitLab 如何配置多个 LDAP?

本文仅适用于极狐GitLab私有化部署场景。 场景化痛点 极狐GitLab 的多 LDAP 接入功能解决了企业在以下场景中可能遇到的痛点: 多个组织/部门的整合:在大型企业或跨国公司中,往往存在多个组织或部门,它们可能拥有独立的 LDAP 服务…

kuka示教器嵌套UR界面操作ros中rviz的UR机器人

摘要 本例展示了用QT增加一个网页视图,背景是kuka示教器界面,中间增加UR的VNC网页界面显示。本人博客中一起有写过ros2运行UR的操作。 ros2 UR10仿真包运行_基于ros的ur仿真-CSDN博客 效果如下: 1.打开UR机器人的ros2仿真文件 sudo su ros2…

【Python数据分析系列】实现dataframe逐行遍历和逐列遍历(案例+源码)

一、引言 在处理和分析表格数据时,我们经常需要对数据进行遍历,然后做进一步后续处理,这里涉及到表格数据的逐行遍历或者逐列遍历的操作,本文将通过一个案例教你实现这个操作。 二、实现过程 准备数据 代码: # 准备…

【plt.hist绘制直方图】:从入门到精通,只需一篇文章!【Matplotlib可视化】

【📊plt.pie绘制直方图】:从入门到精通,只需一篇文章!【Matplotlib可视化】! 利用Matplotlib进行数据可视化示例 🌵文章目录🌵 📈 一、引言🔍 二、plt.hist()函数基础&am…

【Linux 内核源码分析】虚拟内存地址空间

在现代操作系统中,每个进程被分配了独享的虚拟内存地址空间。这个地址空间可以视为一维线性空间,由多个连续的内存页组成。初始时,操作系统会将整个虚拟地址空间分成几个不同的区域,每个区域用于特定的目的。以下是一个常见的布局…

如何理解景深

直观理解 先看两幅图片: 图片虽然是二维的,但描述的是三维的场景。 近处的场景较为清晰,而远处的却逐渐模糊。但是景深大的排出的图片前后清晰的范围越大! 所以,初步理解景深就是图片清晰的前后范围,景深…

机器人十大前沿技术(2023-2024年)

2023-2024年机器人十大前沿技术 1. 具身智能与垂直大模型 具身智能是指拥有自主感知、交互和行动能力的智能体,能够与环境进行实时互动,从而实现对环境的理解和适应。 “大模型”是指在深度学习和人工智能领域中,使用大量参数和数据进行训…

阿里云ECS服务器如何选择操作系统?

阿里云服务器镜像怎么选择?云服务器操作系统镜像分为Linux和Windows两大类,Linux可以选择Alibaba Cloud Linux,Windows可以选择Windows Server 2022数据中心版64位中文版,阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

Nginx解决单页应用刷新报错404的问题

一、问题 1.1 问题概述 将React应用打包后,部署到服务器上,在非首页的地方使用浏览器自带的刷新功能,页面刷新失败,显示404; 如果你的问题和我类似,可以往下看~ 1.2 问题详细描述 在项目开发完成后&am…

Python爬虫之图形验证码的识别

爬虫专栏:http://t.csdnimg.cn/WfCSx 前言 目前,许多网站采取各种各样的措施来反爬虫,其中一个措施便是使用验证码。随着技术的发展,验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码,后来加入了英…

单片机01天---stm32基本信息了解

下载数据手册 以STM32F407ZG为例 网站:www.st.com,搜索芯片型号,下载“数据手册”使用 数据手册使用 查看芯片型号信息 芯片资源信息 时钟框图 芯片资源表格下方 GPIO口表格 一般位于下图后面的位置 ①工作电压:1.8V – 3.6V…

看小姐姐的效果棒极了,写了一个工具,逐帧解析视频转成图片,有没有带上商业思维的小伙伴一起研究下

一个突然的想法,促成了这个项目雏形。 原理是: 上传一个视频,自动将视频每一帧保存成图片 然后前端访问 就能实现如图效果 后端是python/flask 数据库mysql 前端uniapp 项目演示: xt.iiar.cn 后端代码如下: #学习…

从零开始学习Netty - 学习笔记 - NIO基础 - ByteBuffer: 简介和基本操作

NIO基础 1.三大组件 1.1. Channel & Buffer Channel 在Java NIO(New I/O)中,“Channel”(通道)是一个重要的概念,用于在非阻塞I/O操作中进行数据的传输。Java NIO提供了一种更为灵活和高效的I/O处理方…

原创java开源项目发布maven全球中央仓库详细过程示范和遇到的问题解决办法

文章目录 java项目上传到maven全球中央仓库(原创个人开源项目发布maven中央仓库详细过程示范)需求背景第一步 注册sonatype账号第二步 登录sonatype账号并申请新建项目第三步 准备个人GPG数字签名并发布到ubuntu第四步 准备maven配置第五步 修改项目配置…

【软考高级信息系统项目管理师--第二十四章:法律法规与标准规范】

🚀 作者 :“码上有前” 🚀 文章简介 :软考高级–信息系统项目管理师 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 第二十四章:法律法规与标准规范 商标专利法网络安全法 商标专利法 授…

【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)

阅读导航 引言一、生产者消费者模型二、环形队列简介三、基于环形队列的生产者消费者模型(C 代码模拟实现)⭕Makefile文件⭕ . h 头文件✅sem.hpp✅ringQueue.hpp ⭕ . cpp 文件✅testMain.cpp 温馨提示 引言 在上一篇文章中,我们深入探讨了…