新西兰8m DEM地形瓦片数据

一、数据背景

新西兰国土面积27万平方千米,包含两个主要岛屿南岛和北岛,两岛之间的海峡为库克海峡;首都惠灵顿则位于北岛的南端。山地约占总面积的一半,其余为平原丘陵和高原;南岛西部最高峰库克山,海拔3764米,北岛东部地势较高,中、西部有广大的火山区。新西兰所在世界位置看下图:
新西兰8m DEM地形瓦片数据_第1张图片
最近从新西兰官网获取8m DEM数据,生成了Cesium能够接入的高程瓦片,于是便有了这份数据的由来。

二、数据介绍

先看看原始数据的晕渲图:
新西兰8m DEM地形瓦片数据_第2张图片
数据覆盖新西兰全国,原始数据并非WGS84投影,通过投影变换、拼接后,生成了一整张tif,再使用切片工具进行切片,生成了能够加载到Cesium上的地形瓦片数据。这份数据虽然分辨率为8m,但是和全球12.5m一样,最高只能切到15级,下图为地形瓦片数据layer.json的基本信息:
新西兰8m DEM地形瓦片数据_第3张图片
生成的数据大小在9.72GB,主要是新西兰陆地面积不大,海部地区为无效值,所以生成的地形瓦片数据大小也不太大。
新西兰8m DEM地形瓦片数据_第4张图片

三、数据效果

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

  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/DEM-8M-WGS84-NZ-MESH/;
            #index  index.html index.htm;
        }

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

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

 //创建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.terrainProvider = new Cesium.CesiumTerrainProvider({
    url:"http://192.168.1.77:8802/",
    tilingScheme: new Cesium.GeographicTilingScheme(),
    requestVertexNormals:true
   });

通过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数据时,也生成了每个点的法向量,这样开启光照,地形会有光照明暗阴影,效果更加自然。
看一下数据加载到Cesium上的效果:





从上面的效果图可以看到地形细节比较丰富,同时开启了Cesium的光照效果,整个地形数据表达更加自然。

四、结语

总体而言,新西兰8m地形瓦片数据在可视化表达上效果很自然,在地形细节上显示丰富,同时开启光照、阴影、大气雾等特效,效果更佳。有需要这份数据的读者可以后台私信,或者在评论区留言,我将及时回复大家的问题

你可能感兴趣的:(高程地形瓦片数据,新西兰,3D,Cesium,前端,GIS,地形瓦片,Nginx)