全球首发,Copernicus DEM 30m高程地形瓦片数据介绍!

一、背景

哥白尼数字高程模型(Copernicus DEM, COP-DEM)是最近才开源的,已经有遥感大牛拿GLO-30与ALOS、NASA、ASTER、SRTM等一众30m DEM数据从绝对高程精度和水平高程精度、数据现势性、地形细节表现等几个方面进行了比较。得出哥白尼数字高程模型GLO-30数据优于其他30m数据,并且"全球最佳开源DEM之一"中的之一可以去掉的结论。

去不去掉"之一"其实我并不关注,总结下来,就是数据质量很好。对于专注可视化的开发者来说,更关注的是:这么好的数据,什么时候能够把这数据接入到Cesium中?基于此,我把这份数据下载下来,经过投影变换,合成、生成瓦片等一众流程,最终生成了这份地形瓦片数据。 说这份地形瓦片数据之前,先说一下当前30m地形数据的状况。AW3D30、NASADEM、ASTER、SRTM这几个公开的30m数据,我已经全部下载下来,并且转成了WGS84投影,经过对比及调研,觉得ALOS的30m数据AW3D30是这四个中间数据质量最好的,因此就把AW3D30数据切成了能接入Cesium的地形瓦片数据,数据详细介绍参考我之前发布的文章(全球30m地形瓦片数据介绍),这次既然有号称最佳开源DEM数据的哥白尼DEM数据公开了,更想看看,这份数据在三维地球上的表现如何。因此才有了这份地形瓦片数据。

二、数据

COP-DEM的数据获取可以通过官方网站免费获取,数据量比ALOS还大,处理起来相当费时。下载下来的原始数据有548GB,原始文件是按经纬度各1度进行切割的,总共有26540个文件

转成WGS84投影后,大小有1.24TB!

加载到GIS软件可以查看地形晕渲图: 可以看出,对地球地表的覆盖率是相当高的。 生成的地形瓦片数据,和ALOS 30m高程数据一样,最高只能生成第14级,12.5m能生成到第15级,1m高程数据生成到第19级。

下面看一下生成的layer.json的配置信息

三、显示效果

将数据使用Nginx进行发布,具体发布方法可以参考我之前的地形瓦片发布文章,这里给出nginx中nginx.conf的配置server方法

xml 复制代码
  server
  {
    listen       8802;
    server_name  localhost;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    add_header Access-Control-Allow-Origin "$http_origin";
    add_header Access-Control-Allow-Credentials true;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    if ($request_method = 'OPTIONS')
    {
      return 204;
    }

    location / {
      autoindex on;
            root   D:/Data/DEM/Data/DEM-30M-WGS84-GLOBAL-GLO-MESH/;
            #index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

前端使用Cesium进行接入,具体接入关键代码如下

javascript 复制代码
 //创建viewer
 const viewer = new Cesium.Viewer('cesium-app', {
   selectionIndicator: false,
   baseLayerPicker: false,
   homeButton: false,
   infoBox: false,
   timeline: false,
   navigationHelpButton: false,
   navigationInstructionsInitiallyVisible: false,
   vrButton: false,
   fullscreenButton: false,
   geocoder: false,
   animation: false,
   sceneModePicker: false,
   shadows:true,
   imageryProvider: new Cesium.ArcGisMapServerImageryProvider({
     url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'
   })
 });

 viewer.cesiumWidget.creditContainer.style.display = "none";
 viewer.scene.globe.enableLighting = false;
 viewer.scene.highDynamicRange = true;
 viewer.scene.msaaSamples = 16;
 viewer.scene.fog.enabled = true;
 viewer.scene.fog.enableLighting = true;
 //加载地形
 viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
    url:"http://192.168.1.77:8802/",
    tilingScheme: new Cesium.GeographicTilingScheme(),
    requestVertexNormals:true
   });

首先创建viewer对象,设置大气、光照、抗锯齿等参数增强地形表达效果;再通过CesiumTerrainProvider创建viewer的terrainProvider对象,这样数据就加载到场景当中了。在这里说明一下,我的后端nginx和前端cesium不是一台机器,后端机器ip是192.168.1.77,开放的端口号是8802,因此我们接入的url全称是"http:\192.168.1.77::8802",也需要设置tilingScheme,我们的数据都是wgs84投影,所以设置的是GeographicTilingScheme对象;同时设置requestVertexNormals为true,因为地形瓦片是Mesh格式,在生成Mesh格式terrain数据时,也生成了每个点的法向量,这样开启光照,地形会有光照明暗阴影,效果更加自然。 下面放几张加载截图 上面是三峡大坝和西安南麓秦岭的效果截图,能够满足开发和演示应用的需要。

四、结语

总体而言,Copernicus DEM 30m高程地形瓦片数据在质量和时效性方面是相当不错的,相对于ALOS,质量不相上下,但时效性更好,是最近几年拍摄生产出来的数据;相对于NASA,SRTM,ASTER等一众数据,质量和时效性更高。对于这份数据,有问题咨询的读者,可以在评论区留言,或者私信联系,我将及时回复大家的问题。

相关推荐
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
ew452182 小时前
ElementUI表格表头自定义添加checkbox,点击选中样式不生效
前端·javascript·elementui
suibian52352 小时前
AI时代:前端开发的职业发展路径拓宽
前端·人工智能
Moon.92 小时前
el-table的hasChildren不生效?子级没数据还显示箭头号?树形数据无法展开和收缩
前端·vue.js·html
垚垚 Securify 前沿站2 小时前
深入了解 AppScan 工具的使用:筑牢 Web 应用安全防线
运维·前端·网络·安全·web安全·系统安全
工业甲酰苯胺5 小时前
Vue3 基础概念与环境搭建
前端·javascript·vue.js
mosquito_lover16 小时前
怎么把pyqt界面做的像web一样漂亮
前端·python·pyqt
柴柴的小记9 小时前
前端vue引入特殊字体不生效
前端·javascript·vue.js
柠檬豆腐脑9 小时前
从前端到全栈:新闻管理系统及多个应用端展示
前端·全栈
bin91539 小时前
DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)
前端·javascript·vue.js·ecmascript·deepseek