关于三维GIS开发的一些思考

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

第一层面

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

javascript 复制代码
 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开发者的技术成长路线,希望能够大家带来一丝启发和思考。

相关推荐
酒尘&4 小时前
JS数组不止Array!索引集合类全面解析
开发语言·前端·javascript·学习·js
学历真的很重要4 小时前
VsCode+Roo Code+Gemini 2.5 Pro+Gemini Balance AI辅助编程环境搭建(理论上通过多个Api Key负载均衡达到无限免费Gemini 2.5 Pro)
前端·人工智能·vscode·后端·语言模型·负载均衡·ai编程
用户47949283569155 小时前
"讲讲原型链" —— 面试官最爱问的 JavaScript 基础
前端·javascript·面试
用户47949283569155 小时前
2025 年 TC39 都在忙什么?Import Bytes、Iterator Chunking 来了
前端·javascript·面试
大怪v6 小时前
【Virtual World 04】我们的目标,无限宇宙!!
前端·javascript·代码规范
狂炫冰美式6 小时前
不谈技术,搞点文化 🧀 —— 从复活一句明代残诗破局产品迭代
前端·人工智能·后端
xw57 小时前
npm几个实用命令
前端·npm
!win !7 小时前
npm几个实用命令
前端·npm
代码狂想家7 小时前
使用openEuler从零构建用户管理系统Web应用平台
前端
dorisrv9 小时前
优雅的React表单状态管理
前端