全球首发,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等一众数据,质量和时效性更高。对于这份数据,有问题咨询的读者,可以在评论区留言,或者私信联系,我将及时回复大家的问题。

相关推荐
一袋米扛几楼987 分钟前
【Git】规范化协作:详解 GitHub 工作流中的 Issue、Branch 与 Pull Request 最佳实践
前端·git·github·issue
网络点点滴20 分钟前
前端与后端的区别与联系
前端
EnCi Zheng1 小时前
M5-markconv自定义CSS样式指南 [特殊字符]
前端·css·python
kyriewen1 小时前
你的网页慢,用户不说直接走——前端性能监控教你“读心术”
前端·性能优化·监控
广州华水科技1 小时前
北斗GNSS变形监测在大坝安全监测中的应用与优势分析
前端
前端老石人1 小时前
前端开发中的 URL 完全指南
开发语言·前端·javascript·css·html
CAE虚拟与现实1 小时前
五一假期闲来无事,来个前段、后端的说明吧
前端·后端·vtk·three.js·前后端
Sarvartha1 小时前
三目运算符
linux·服务器·前端
晓晨的博客1 小时前
ROS1录制的bag包转换为ROS2格式
前端·chrome
Wect1 小时前
LeetCode 72. 编辑距离:动态规划经典题解
前端·算法·typescript