首页 > 其他分享 >Cesium之影像底图加载

Cesium之影像底图加载

时间:2023-02-04 12:44:31浏览次数:54  
标签:底图 imageryLayers viewer provider Cesium new com 加载

1. 引言

Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业用途

Cesium官网:Cesium: The Platform for 3D Geospatial

Cesium GitHub站点:CesiumGS/cesium: An open-source JavaScript library for world-class 3D globes and maps (github.com)

API文档:Index - Cesium Documentation

本文描述Cesium的影像底图加载

2. 影像底图加载

2.1 Cesium的影像图层

Cesium中的影像图层位于viewer.imageryLayers下,可以对其进行添加、删除影像图层操作

image-20230204120308645

参考官方API文档:Viewer - Cesium Documentation

可以发现Viewer包含imageryLayers ImageryLayerCollection类型),imageryLayers imageryLayer 构成,可以对imageryLayers 进行添加、删除imageryLayer 的操作。imageryLayer 的构造函数为:new Cesium.ImageryLayer(imageryProvider, options),而Cesium支持的imageryProvider包含以下:

即,Cesium主要支持ArcGIS、Bing、OSM、Google、Mapbox等的地图服务和OGC标准的WMS、WMTS地图服务

2.2 添加第三方服务

这里的第三方地图服务主要是指ArcGIS、Bing、OSM、Google、Mapbox的地图服务

主要步骤为选择并构造相应的imageryProvider,然后构造为imageryLayer,最后add到viewer中(也可以直接viewer.imageryLayers.addImageryProvider(provider))

这里加载的是ESRI提供的地图,地址为:https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        html,
        body,
        #cesiumContainer {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
        }
    </style>
    <!-- Include the CesiumJS JavaScript and CSS files -->
    <script src="https://cesium.com/downloads/cesiumjs/releases/1.101/Build/Cesium/Cesium.js"></script>
    <link href="https://cesium.com/downloads/cesiumjs/releases/1.101/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
</head>

<body>
    <div id="cesiumContainer"></div>
    <script>
        Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlMTk4ZTYyNy00MjkxLTRmZWYtOTg1MS0wOThjM2YzMzIzYzEiLCJpZCI6NzEyMSwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU0ODMxNzI5OX0.rKV8Ldl_bgR3lVvNsbHhTX62j8JH8ADCIWAwk7tXpr8'
        const viewer = new Cesium.Viewer('cesiumContainer', {
            timeline: false,
            animation: false,
        })
        const provider = new Cesium.ArcGisMapServerImageryProvider({
            url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'
        })
        viewer.imageryLayers.addImageryProvider(provider)
    </script>
</body>

</html>

image-20230204122902847

2.3 添加OGC服务

OGC服务主要有WMS、WMTS等,是OGC联盟制定的标准

主要步骤和添加第三方地图服务类似,选择并构造相应的imageryProvider,然后构造为imageryLayer,最后add到viewer中(也可以直接viewer.imageryLayers.addImageryProvider(provider))

这里加载的是ahocevar.com提供的地图,地址为:https://ahocevar.com/geoserver/wms

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        html,
        body,
        #cesiumContainer {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
        }
    </style>
    <!-- Include the CesiumJS JavaScript and CSS files -->
    <script src="https://cesium.com/downloads/cesiumjs/releases/1.101/Build/Cesium/Cesium.js"></script>
    <link href="https://cesium.com/downloads/cesiumjs/releases/1.101/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
</head>

<body>
    <div id="cesiumContainer"></div>
    <script>
        Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlMTk4ZTYyNy00MjkxLTRmZWYtOTg1MS0wOThjM2YzMzIzYzEiLCJpZCI6NzEyMSwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU0ODMxNzI5OX0.rKV8Ldl_bgR3lVvNsbHhTX62j8JH8ADCIWAwk7tXpr8'
        const viewer = new Cesium.Viewer('cesiumContainer', {
            timeline: false,
            animation: false,
        })
        const provider = new Cesium.WebMapServiceImageryProvider({
            url: "https://ahocevar.com/geoserver/wms",
            layers: "topp:states",
            parameters: {
                transparent: true,
                format: "image/png"
            },
            proxy: new Cesium.DefaultProxy('/proxy/')
        })
        viewer.imageryLayers.addImageryProvider(provider)
    </script>
</body>

</html>

image-20230204122659837

3. 参考资料

[1]Index - Cesium Documentation

[2][CesiumJS]Cesium入门6 - Adding Imagery - 添加图层 - Cesium中文网 (cesiumcn.org)

[3]Cesium多源数据加载之影像图层(一) - 知乎 (zhihu.com)

[4]Cesium教程系列汇总 - fu*k - 博客园 (cnblogs.com)

标签:底图,imageryLayers,viewer,provider,Cesium,new,com,加载
From: https://www.cnblogs.com/jiujiubashiyi/p/17091274.html

相关文章

  • 2023网络爬虫 -- 获取动态加载数据
    1、爬取的网址http://www.kfc.com.cn/kfccda/storelist/index.aspx2、要爬取的内容,输入关键字,点击查询,获取餐厅名称和餐厅地址3、F12,打开开发者工具,点击查询,抓包4、点......
  • vue页面加载闪烁的问题以及解决方案
    一、原因:问题:当我们打开Vue页面的时候,如果弱网环境,会出现一个闪烁的效果下图:加载闪烁问题效果  原因:因为在浏览器中先执行html代码,先渲染Dom,然后再执行JavaScript代......
  • Cesium 在antd pro 框架下使用问题
    刚开始也是按官网的操作,报Youmayneedanappropriateloadertohandlethisfiletype,currentlynoloadersareconfiguredtoprocessthisfile错误,然后试图配置co......
  • Cesium entity 跳动点 利用CallbackProperty
    startBounce(){constimage=require('./logo.png');constheight=44;conste={lng:116.4,lat:39.14,opts:{......
  • 封装一个Vue UI组件库 ,并实现按需加载
    这篇文章会介绍如何基于VueCLI命令行工具封装一个VueUI组件库。之前有写过React版本从零开始配置做一个ReactUI组件的文件,有兴趣的可以看下。从零开始封装React......
  • ArcGIS Pro三维点云数据加载
    ArcGISPro场景类似于ArcSence,支持可视化、分析和管理的真实世界对象,可以加载3D图层、2D图层和高程表面三类数据,操作十分方便,显示效率也有较大提升。为源地理分享如何在Ar......
  • Java 反射 (完) 类加载和反射获取信息
    三.类加载1.动态加载和静态加载基本说明反射机制是java实现动态语言的关键,也就是通过反射实现类动态加载1.静态加载:编译时加载相关的类,如果没有则报错,依赖性太强2.动态加载:......
  • script加载方式
    1.正常模式<scriptsrc="index.js"></script>正常模式下js会阻塞dom渲染,浏览器必须等待js加载执行完后才能做其他事情;2.async模式<scriptasyncsrc="index.js"></......
  • 模块的加载机制
             ......
  • Spring boot 无法加载css样式,image解决办法
    Springboot无法加载css样式,image解决办法 最近在给公司做一个系统,使用了springboot框架,同时也遇到了一些大坑在网上找到了一个好看的模版的,(非前后端的分......