【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、三维瓦片地球)第九期

🍺三维数字地球GIS系列相关文章(C++)如下🍺:
1【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第一期
2【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第二期
3【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第三期
4【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL)第四期
5【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL、Satellite、卫星轨道模拟)第五期
6【小沐学GIS】基于C++绘制三维数字地球Earth(OpenG、SolarSystem、太阳系模拟)第六期
7【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、OpenSceneGraph / OSG)第七期
8【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、二维瓦片地图)第八期
9【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、三维瓦片地球)第九期
10【小沐学GIS】基于C++绘制三维数字地球Earth(osgEarth、三维瓦片地球)第十期
11【小沐学GIS】基于C++绘制OpenStreetMap地图矢量数据(QT、OpenGL、OSM、Mapbox)第十一期
12【小沐学GIS】基于C++绘制地形DEM(OpenGL、Terrain、TIFF、hgt)第十二期
13【小沐学GIS】基于C++瓦片地图下载工具(高德/天地图/谷歌/必应/OSM/MapBox/ArcGIS)第十三期
🍺三维数字地球GIS系列相关文章(其他语言)如下🍺:
1【小沐学GIS】基于C#绘制三维数字地球Earth(C#、OpenGL)
2【小沐学GIS】基于Python绘制三维数字地球Earth(Python、OpenGL、地球/卫星)
3【小沐学GIS】基于Android绘制三维数字地球Earth(Android、OpenGL)
4【小沐学GIS】基于Golang绘制三维数字地球Earth(Go、OpenGL)
5【小沐学GIS】基于Rust绘制三维数字地球Earth(Rust、OpenGL)
6【小沐学GIS】基于Lua绘制三维数字地球Earth(Lua、OpenGL)
7【小沐学GIS】基于Java绘制三维数字地球Earth(Java、OpenGL)
8【小沐学GIS】基于Unity3d绘制三维数字地球Earth(Unity3d、OpenGL)
9【小沐学GIS】基于Vulkan绘制三维数字地球Earth(Vulkan)
10【小沐学GIS】基于Godot绘制三维数字地球Earth(Godot)
11【小沐学GIS】基于VTK绘制三维数字地球Earth(VTK)
🍺三维数字地球WebGIS系列相关文章如下🍺:
1【小沐学WebGIS】基于WebGL绘制三维数字地球Earth(WebGL、地球/卫星)
2【小沐学WebGIS】基于Babylon.JS绘制三维数字地球Earth(Babylon.JS、vue、react)
3【小沐学WebGIS】基于Three.JS绘制三维数字地球Earth(WebGL、vue、react)
4【小沐学WebGIS】基于Three.JS绘制三维太阳系Solar System(three.js、WebGL)第一期
5【小沐学WebGIS】基于Three.JS绘制三维太阳系Solar System(three.js、WebGL)第二期
6【小沐学WebGIS】基于Three.JS绘制卫星模拟Satellite Tracker(three.js、vue、react、卫星)
7【小沐学WebGIS】基于Three.JS绘制OpenStreetMap地图矢量数据(WebGL、OSM、2d/3d)
8【小沐学WebGIS】基于Three.JS绘制地形DEM(Three.JS、WebGL、TIFF)
9【小沐学WebGIS】基于Three.JS绘制瓦片地图(Three.JS、WebGL、Mapbox)
10【小沐学WebGIS】基于Cesium.JS绘制卫星轨迹Satellite Tracker(Cesium、vue、react、卫星)
11【小沐学WebGIS】基于Cesium.JS绘制飞行轨迹Flight Tracker(Cesium/ vue / react / czml / GPX)
🍺Three.JS系列相关文章如下🍺:
1【小沐杂货铺】基于Three.JS构建IFC模型浏览器(WebGL、CAD、Revit、IFC)
2【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow)第1期
3【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow)第2期

1、简介

1.1 球体构建

通过球面参数方程生成球面上的点,再用三角形网格拼成球体。为均匀化网格,采用细分大约二十面体方法,从低多边形球体开始细分,调整点位置使其位于球面上。

1.2 瓦片加载

将地球表面划分成瓦片,按摄像机位置和视角动态加载和卸载。采用球面瓦片索引,把球体划分为6个大瓦片,每个大瓦片细分,形成四叉树结构。根据摄像机到瓦片中心距离确定加载优先级,从服务器加载内容并映射到球体表面。

1.3 多级细节(LOD)

当用户拉近或拉远视角时,动态调整瓦片分辨率。预先生成多级分辨率瓦片,基于摄像机距离选择加载层级,应用平滑插值过渡,实现渐进式加载,消除弹跳闪烁问题。

1.4 坐标投影

将三维地球上的点投影到二维视图中。在低纬度区域使用墨卡托投影,高纬度区域采用球心投影,把三维坐标转换为经纬度后进行投影,再映射为二维屏幕坐标,解决极点附近变形问题。

5、代码测试

5.1 opengl / glfw / glew / curl / proj4 / gdal / stb_image / c++ (3d,瓦片贴图)

  • 加载卫星影像图
    在这里插入图片描述

  • 加载行政地图
    在这里插入图片描述

  • 加载shp(shapefile)文件和显示:
    在这里插入图片描述

  • 绘制自定义的图形元素(线、面等)
    在这里插入图片描述

  • 切换地球底图的瓦片图源

5.2 opengl / glfw / glad / boost::asio / proj4 / stb_image / c++ (3d,瓦片贴图)

在这里插入图片描述

5.3 opengl / qt5 / c++ / 影像地图 (3d,瓦片贴图)

  • 代码简介
    绘制地球
    绘制文字
    加载和绘制XYZ瓦片影像地图
    加载和绘制obj模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

如需源代码,请加文章末尾的QQ!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值