关于三维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开发者的技术成长路线,希望能够大家带来一丝启发和思考。

相关推荐
wenzhangli712 分钟前
Ooder A2UI 核心架构深度解析:WEB 拦截层的设计与实现
前端·架构
前端百草阁36 分钟前
【前端性能优化全链路指南】从开发编写到构建运行的多维度实践
前端·性能优化
女生也可以敲代码1 小时前
AI时代下的50道前端开发面试题:从基础到大模型应用
前端·面试
ZhengEnCi1 小时前
M5-markconv自定义CSS样式指南 📝
前端·css·python
IT_陈寒1 小时前
SpringBoot自动配置的坑差点让我加班到天亮
前端·人工智能·后端
xingpanvip1 小时前
星盘接口开发文档:星相日历接口指南
android·开发语言·前端·css·php·lua
@PHARAOH2 小时前
WHAT - GitLens supercharged 插件
前端
TT模板2 小时前
苹果cms整合西瓜播放器XGplayer插件支持跳过片头尾
前端·html5
灵机一物2 小时前
灵机一物AI原生电商小程序、PC端(已上线)-【无标Anthropic 研究深度解析:AI 对就业市场的实际冲击与高危职业排行题】
人工智能·ai·程序员·职业发展·anthropic·就业市场
Wect3 小时前
React 性能优化精讲
前端·react.js·性能优化