如何建立地球上任何一个区域的地形3d模型,并添加卫星或地貌贴图

一、如何截取大范围的google地貌图片
设置相应的的范围, 并利用phantomjs截屏。需要网络能流畅访问googlemap。

google导出的图片中可以是卫星图等各种图片,可以包含各种道路、地理名称等辅助信息,都是可以配置的。

相关github项目

二、如何建立任何地球上任何一个区域的地形3d模型 (geotiff 转换 obj文件)
1. 地形dem数据的获取
http://gisgeography.com/free-global-dem-data-sources/
可以从usgs上下载到相关区域的tif文件。
2. 安装qgis
http://www.qgis.org/en/site/forusers/download.html
可以用qgis或者GDAL合并上一步下载的多个tif
https://gis.stackexchange.com/questions/192395/merging-tif-images-into-a-single-geotiff-with-qgis
3. 安装qgis2threejs插件
http://qgis2threejs.readthedocs.io/en/docs-release/Tutorial.html
载入合并后的tiff, 就可以在浏览器浏览3d模型了。浏览器查看的html文件可以导出。
4. 上一步导出的html文件为a.html, 那么和它并列的目录下会有一个a.js。下载这个github项目导出模板。将其中的index.js的内容替换为a.js的内容。
浏览器打开index.html,就会下载obj文件到本地了。同时会下载到该纹理的图片。

建议浏览器为最新版的chrome浏览器。
整个过程比较繁琐,没有基础的话至少需要2-4小时的学习和摸索。

三、如何获取相应地理obj的纹理贴图?
1. 通过之前的方法获取地形tif数据对应的obj和相关的google贴图。接下来介绍将贴图和obj准确对应上的方法。
注意相关google贴图中要做好5个标记点,对齐经纬度时要用。可以画两个长方形,就有了8个点。

    var rectangle = new google.maps.Rectangle({
      strokeColor: '#FF0000',
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: '', //'#FF0000',
      fillOpacity: 0.0,
      map: map,
      bounds: {
        north: 32.61,
        south: 32.60,
        east: 118.90,
        west: 118.80
      }
    });
  1. qgis下载georeferencer GDAL插件,将google贴图转换成为带地理坐标的tif格式。注意google图片的默认坐标为EPSG:3857, 在线projection转换https://mygeodata.cloud/cs2cs/
    http://www.qgistutorials.com/en/docs/georeferencing_basics.html
  2. 用qgis载入贴图tif和地形tif。用qgis2threejs导出到a.html。
    导出时,dem layer为地形tif,Display type 中的layer image选择贴图tif.
    https://gis.stackexchange.com/questions/175250/in-qgis2threejs-html-output-select-deselect-the-layers-not-working
  3. 用之前方法从a.js中获取obj和贴图。

至此,obj文件和纹理贴图都有了。

qgis2threejs 详细设置:
http://qgis2threejs.readthedocs.io/en/docs-release/ExportSettings.html

项目资源文件下载:
https://pan.baidu.com/s/1slwNmzj 密码:9978
项目中所有坐标系都是 EPSG:3857

猜你喜欢

转载自blog.csdn.net/jdk137/article/details/76186746
今日推荐