Cesium创建地形与自定义地形

下载数据

在这里插入图片描述在这里插入图片描述

转换数据

下载cesiumlab
在这里插入图片描述

加载目录数据

<template>
    <div id="cesiumContainer"></div>
</template>

<script setup>
import * as Cesium from 'cesium';
import { onMounted } from 'vue';

// 设置cesium的访问令牌
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzNzMyNjU0OS03MDZkLTQ5ODctYjRkOS1jNzk3ODM2NDMxZTMiLCJpZCI6MzAwMjIxLCJpYXQiOjE3NDY2MDE3NzV9._6lygN0D3PdivFfxC2KbZTcNAA63EU6IMHD0eFh10lg';

// 设置cesium默认视角(默认是美国)
Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(
    // 西边经度
    89.5,
    // 南边纬度
    20.4,
    // 东边经度
    110.4,
    // 北边维度
    61.2
);

// 如果要加载自定义地形,可以通过 “地理空间数据云” 获取数据
const addTerrain = async(viewer) => {
    const terrain = await Cesium.createWorldTerrainAsync({
        requestVertexNormals: true, // 法线
        requestWaterMask: true, // 水纹
    })
    viewer.terrainProvider = terrain
}

onMounted(() => {
    const viewer = new Cesium.Viewer('cesiumContainer', {
        infoBox: false, // 信息框
        terrainProvider: new Cesium.CesiumTerrainProvider({ // 地形
            url: './terrains/gz' // 地形目录
        })
    })

    // 设置地形
    // addTerrain(viewer)

    // 隐藏logo
    viewer.cesiumWidget.creditContainer.style.display = 'none';
});
</script>

<style scoped>
#cesiumContainer {
    width: 100vw;
    height: 100vh;
}
</style>

### Cesium 离线地形加载 使用教程 或 解决方案 在 Cesium加载离线地形数据是一项常见的需求,尤其是在没有网络连接或需要快速访问本地地形数据的场景中。以下是关于 Cesium 离线地形加载的详细教程和解决方案。 #### 1. 地形文件制作 地形文件的制作是加载离线地形的第一步。可以通过以下几种工具来完成地形文件的生成: - **Cesiumlab**:这是一个开箱即用的工具,能够方便地处理地形数据[^2]。下载并安装 Cesiumlab 后,注册账户即可使用其功能。 - **gdal2srtmtiles.py**:此脚本依赖 GDAL 工具库,适合熟悉命令行操作的用户。通过该脚本可以将 SRTM 数据转换为适用于 Cesium 的格式[^2]。 - **Cesium Terrain Builder**:这是一款开源工具,但需要编译安装相关软件。它提供了更高的灵活性和定制化选项[^2]。 #### 2. 下载地形数据 地形数据可以从公开的地理信息资源中获取,例如: - **NASA SRTM 数据**:提供全球范围内的高程数据,分辨率较高。 - **USGS 数据**:美国地质调查局提供的地形数据,适合北美地区的应用。 下载后,确保数据 Cesium 的版本兼容,并按照所需格式进行处理。 #### 3. 数据处理 下载的数据通常需要经过处理才能被 Cesium 正确加载。以下是常见的处理步骤: - 将原始地形数据(如 GeoTIFF 格式)转换为 Cesium 支持的地形瓦片格式。 - 使用上述提到的工具(Cesiumlab、gdal2srtmtiles.py 或 Cesium Terrain Builder)对数据进行切片和压缩。 #### 4. 数据发布 处理后的地形数据可以通过 HTTP 服务器发布。推荐使用 Nginx 作为静态文件服务器[^1]。配置 Nginx 时需要注意以下几点: - 确保 Nginx 的配置文件正确设置路径和 MIME 类型。 - 测试发布后的数据是否可以通过浏览器正常访问。 #### 5. 加载离线地形Cesium加载离线地形的具体代码示例如下: ```javascript // 创建地形提供者 const terrainProvider = new Cesium.CesiumTerrainProvider({ url: 'http://localhost/terrain', // 替换为实际发布的地形数据路径 }); // 设置地形提供者 viewer.terrainProvider = terrainProvider; ``` 如果在加载过程中遇到问题,可以参考以下常见解决方案: - 确保发布的地形数据路径正确且可访问。 - 检查 Cesium 版本是否地形数据格式兼容。 - 如果使用了第三方库(如 Mock.js),可能会影响地图加载过程,需排查冲突[^4]。 #### 注意事项 - 在加载离线地形时,注意数据的投影类型。例如,Web 墨卡托投影的数据可能会导致南北极区域缺失影像[^3]。 - 如果需要覆盖默认影像层,可以使用 `viewer.imageryLayers.removeAll()` 方法删除默认层,并添加自定义的本地影像切片数据。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值