捷克国土面积有78866平方千米,位于欧洲核心地带的捷克为一中欧内陆国,其四个邻国分别为北方的波兰,西北方的德国,南方的奥地利,与东南方的斯洛伐克。今日的捷克主要包含了过去奥匈帝国时代波希米亚与摩拉维亚这两个传统省份,与一小部分的西里西亚之土地范围。首都与最大城市为布拉格,跨伏尔塔瓦河两岸,风景秀丽。捷克为一个三面隆起的四边形盆地,西部是波希米亚高地,东部是喀尔巴阡山地。河网稠密,主要河流是伏尔塔瓦河和摩拉瓦河。捷克所在世界位置看下图:
最近获取了捷克5m DEM数据,处理后生成了Cesium能够接入的高程地形瓦片,转成wgs84投影的tif数据后的地形晕渲图:
5m分辨率和12.5m分辨率数据相比,数据质量和数据质量上更高。最高可以切到16级,下图是layer.json配置文件的信息:
瓦片数据目录如下图:
将数据使用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-5M-WGS84-CZECH-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.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数据时,也生成了每个点的法向量,这样开启光照,地形会有光照明暗阴影,效果更加自然。加载到Cesium上的效果截图如下:
捷克受地形限制,所有山脉都不高,以丘陵为主,整体地形效果表现比较平坦。
这份5m精度高程瓦片数据相对于12.5m,30m等数据在数据质量更好,和显示效果更佳。目前这份数据免费分享,有需要的读者可以后台私信,或者在评论区留言,我将及时回复大家的问题。