【简单的Cesium界面搭建】(二)图层和地形的添加

在【简单的Cesium界面搭建】——(一)如何在html文件中使用Cesium中已经了解到如何初始化一个Cesium地球,但是对于正常的使用来说还远远不够。在这一篇中,将记录一下,如何添加图层和地形。

1 添加图层

Cesium添加的是图层是以png的形式添加的,而我们常接触的图层包括矢量图层和栅格图层,有了解过OpenLayers的应该知道,OpenLayers可以直接添加矢量图层(这里不加赘述),而Cesium只能添加png等图片格式的图层,所以关于矢量图层的添加也是以png的形式添加的。
这里主要是通过WMTS服务进行访问的。
添加图层:

/**
 * 添加图层
 * @param viewer 初始化地球时返回的viewer
 * @param layerName 添加的图层的名称(工作区:名字 的形式)*/
function addLayer(viewer, layerName = "", url = "") {
    let layerRect = {
        west: '-90',
        south: '-180',
        east: '180',
        north: '90',
    }   // 图层的边界
    let rectangle = Cesium.Rectangle.fromDegrees(layerRect.west, layerRect.south, layerRect.east, layerRect.north, undefined);
    let wmtsImageryProvider = constructWMTSImageryProvider(layerName, url);  //图层使用的是WMTS服务
    let layer = new Cesium.ImageryLayer(wmtsImageryProvider, {
        rectangle: rectangle    // 根据这个边界进行请求,避免请求图层外的范围而引起400错误
    });
    viewer.imageryLayers.add(layer);
    return layer
}

代码中的 layerRect 是在geoserver上对应的图层的边界(打开图层,在数据选项中,下拉至边框即可查看):
其中,最小X对应south;最小Y对应west;最大X对应north;最大Y对应east。
在这里插入图片描述

构造WMTS请求:

/**
 * 构造一个WMTSImageryProvider
 * @param layerName 图层的名称(工作区:名字 的形式)
 * @param ip 图层发布的地址*/
function constructWMTSImageryProvider(layerName, url) {
    return new Cesium.WebMapTileServiceImageryProvider({
        url: new Cesium.Resource({
            url: url,
            header:{}
        }),
        layer: layerName,
        style: '',
        format: 'image/png',
        tileMatrixSetID: 'EPSG:4326',
        tileMatrixLabels: defaultParams.matrixIds,
        tilingScheme: new Cesium.GeographicTilingScheme(),
        maximumLevel: 21
    })
}

在html界面中调用添加图层的函数。

let layer = addLayer(viewer, "test:world", "http://ip:port/geoserver/gwc/service/wmts")

这里加入了一个世界范围的遥感影像图,实现效果如下:
在这里插入图片描述

2 添加地形

添加地形是构造了一个Cesium的CesiumTerrainProvider

function addTerrain(viewer, url) {
    let terrainProvider = new Cesium.CesiumTerrainProvider({
        url: new Cesium.Resource({
            url: url,
            headers: {}
        }),
        waterMask: false
    })
    viewer.terrainProvider = terrainProvider
    return terrainProvider
}

在html界面中调用添加地形的函数。

    let terrain = addTerrain(viewer, "http://ip:port//geoserver/rest/resource/terrain")

实现效果如下:
在这里插入图片描述

3 注意点

3.1 请求的构造

在构造图层请求和构造地形请求时使用的url是Cesium的 Resource,使用这个可以在其中添加请求头等额外的参数,若后端进行了加密或者需要一些特定的请求参数,可以这样实现。

let url = new Cesium.Resource({
            url: url,
            headers: {}
        })

3.2 图层和地形的发布

本文使用的图层和地形均发布在Geoserver上,具体发布步骤可查看以下链接。

Cesium1.108是一个开源的JavaScript库,用于创建地球和其他3D地理空间可视化应用程序。地形Cesium中的一个重要组成部分,它可以帮助我们更加真实地模拟地球表面的形状和地貌。 根据引用中的代码,可以看出如何在Cesium添加地形。通过调用addTerrain函数,传入一个Cesium地形提供者的URL地址,即可向Cesium地球中添加地形。这个URL地址指向一个地形数据资源,可以是一个服务端地址,比如geoserver提供的地形数据服务。 引用中提到了添加图层地形的步骤,其中第2点是添加地形。在这个步骤中,可以使用上述的addTerrain函数来添加地形。需要注意的是,请求地形数据的构造可能会有一些要求,如请求头headers等。 最后,引用中给出了在HTML界面中调用添加地形函数的示例代码。通过调用addTerrain函数,传入一个Cesium Viewer对象和地形数据的URL地址,即可将地形添加Cesium地球中。 综上所述,要在Cesium添加地形,可以使用addTerrain函数,并传入地形数据的URL地址。这样可以帮助我们更好地模拟地球表面的形状和地貌。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【简单Cesium界面搭建】——(图层地形添加](https://blog.csdn.net/qq_41085087/article/details/128461591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值