当前位置: 首页 > article >正文

Cesium 离线加载瓦片图

在一些特定的应用场景中,如军事、科研、野外勘探等,网络环境可能受限,这就需要 Cesium 能够离线加载瓦片图来实现地理信息的可视化展示。本文将详细介绍 Cesium 离线加载瓦片图的原理、步骤以及一个可直接运行的案例。

原理

Cesium 离线加载瓦片图主要是通过将预先下载好的地图瓦片数据存储在本地,然后在 Cesium 中配置相应的瓦片加载器,使其能够从本地读取并显示这些瓦片数据。这些瓦片数据通常按照一定的规则进行组织和存储,例如根据不同的层级、行号和列号来命名和存放,以便 Cesium 能够按照一定的顺序和逻辑进行加载和显示。

步骤

  1. 准备瓦片数据 :可以通过各种工具和方法来下载所需的瓦片数据,如使用水经注软件的全球地图下载器下载天地图、谷歌地图等的瓦片数据,也可以从合法渠道购买商业卫星图像或利用公开的数据源获取适合离线使用的地图切片。下载完成后,将瓦片数据按照 Cesium 所支持的格式进行组织和存储,一般需要按照层级、行号和列号来命名和存放。

  2. 配置 Cesium 环境 :在项目中引入 Cesium 库和相关资源文件,包括 Cesium.js、Widgets/widgets.css 等。可以通过下载 Cesium 的源码包或使用 npm 安装 Cesium 来获取这些文件。

  3. 编写代码加载瓦片图 :在初始化 Cesium.Viewer 对象时,通过配置参数指定要使用的离线资源路径。可以使用 Cesium 提供的 WebMapTileServiceImageryProvider 或 UrlTemplateImageryProvider 等类来加载本地瓦片数据。例如,使用 WebMapTileServiceImageryProvider 的代码如下:

let viewer = new Cesium.Viewer('cesiumContainer', {
imageryProvider : new Cesium.WebMapTileServiceImageryProvider({
    url : 'http://localhost/path/to/offline/tiles/{z}/{x}/{y}.png',
    layer : '',
    style : '',
    format : 'image/png',
    tileMatrixSetID : 'GoogleMapsCompatible',
    maximumLevel : 18,
    credit : ''
})
});

其中,`url` 参数需要设置为本地瓦片数据的路径模板,`{z}`、`{x}`、`{y}` 分别表示瓦片的层级、列号和行号,`format` 参数指定瓦片的格式,`tileMatrixSetID` 参数设置为 'GoogleMapsCompatible' 表示使用谷歌地图的瓦片矩阵方案。 

案例

以下是一个可直接运行的案例,该案例使用了 Cesium 离线加载瓦片图的功能来显示本地存储的天地图瓦片数据:

  1. 准备瓦片数据 :使用水经注软件的全球地图下载器下载天地图的瓦片数据,并将其存储在本地的 'tiles' 文件夹中。
  2. 创建 HTML 文件 :在项目中创建一个名为 'index.html' 的文件,代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cesium 离线加载瓦片图</title>
    <script src="https://cesium.com/downloads/cesiumjs/1.105/Build/Cesium/Cesium.js"></script>
    <link href="https://cesium.com/downloads/cesiumjs/1.105/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
    <style>
        html, body {
            margin: 0;
            padding: 0;
            height: 100%;
            overflow: hidden;
        }
        #cesiumContainer {
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <div id="cesiumContainer"></div>
    <script>
        // 初始化 Cesium.Viewer 对象
        var viewer = new Cesium.Viewer('cesiumContainer', {
            imageryProvider : new Cesium.WebMapTileServiceImageryProvider({
                url : 'tiles/{z}/{x}/{y}.png',
                layer : '',
                style : '',
                format : 'image/png',
                tileMatrixSetID : 'GoogleMapsCompatible',
                maximumLevel : 18,
                credit : '天地图'
            }),
            terrainProvider: Cesium.TerrainProvider.fromURL('tiles/terrain'),
            baseLayerPicker: false,
            geocoder: false,
            navigationHelpButton: false,
            animation: false,
            timeline: false,
            fullscreenButton: false
        });
    </script>
</body>
</html>

 其中,`url` 参数设置为本地瓦片数据的路径模板,`terrainProvider` 参数用于加载本地的地形数据(如果有的话),其他参数可以根据实际需求进行设置。

3. 运行项目 :将上述 HTML 文件和瓦片数据文件夹放在同一个目录下,然后使用本地服务器(如 Apache、Nginx 等)运行该项目,即可在浏览器中查看 Cesium 离线加载瓦片图的效果。

通过以上步骤,就可以实现 Cesium 离线加载瓦片图的功能,并在实际项目中应用。在使用过程中,需要注意瓦片数据的格式、路径和组织方式等,以确保 Cesium 能够正确加载和显示瓦片图。


http://www.kler.cn/a/540047.html

相关文章:

  • 数据仓库和商务智能:洞察数据,驱动决策
  • 第三节 docker基础之---Commit+Dockerfile制作
  • C语言学习笔记:子函数的调用实现各个位的累加和
  • 996引擎-问题处理:三职业改单职业
  • 计算机视觉的研究方向、发展历程、发展前景介绍
  • ZooKeeper 的典型应用场景:从概念到实践
  • pytest+request+yaml+allure 接口自动化测试全解析[手动写的跟AI的对比]
  • collabora online+nextcloud+mariadb在线文档协助
  • HTTP/3与QUIC的关系是什么?
  • 如何排查主板硬件问题的常见方法?
  • ESP32S3读取数字麦克风INMP441的音频数据
  • LeetCode 3444.使数组包含目标值倍数的最小增量
  • 安装mariadb+galera搭建数据库集群
  • 安全研究员职业提升路径
  • 运维_Mac环境单体服务Docker部署实战手册
  • 《手札·开源篇》数字化转型助力永磁电机企业降本增效:快速设计软件如何让研发效率提升40%?
  • ElementUI的常用组件及使用技巧
  • 微服务..
  • HTML与CSS常见问题总结
  • MAC国内安装Homebrew的方法
  • 【LeetCode 刷题】动态规划(2)-背包问题
  • 【自开发工具】SQLSERVER的ImpDp和ExpDp工具汇总
  • DeepSeek时代:百度们亟需“深度求索”
  • 信息科技伦理与道德3-3:智能决策
  • SickOs 1.2靶机(超详细教学)
  • UnoCSS 自定义规则