Cesium 实战 - 加载水经微图下载资源问题 - 地球南北极有蓝圈,南北极空洞

本文主要是介绍Cesium 实战 - 加载水经微图下载资源问题 - 地球南北极有蓝圈,南北极空洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Cesium 实战 - 加载水经微图下载资源问题 - 地球南北极有蓝圈

    • 错误展示
    • 排错过程
    • 解决问题
    • 完整代码
    • 在线示例

在某个项目中,客户提到一个问题,即地球南北极会有一个蓝色的洞,经复现,确实有这个问题。见下图。

经过排查,最终解决问题,这里记录一下。

本文包括错误展示、排错过程、解决问题、完整代码以及在线示例。


错误展示

以下是正常三维地球的南极:

在这里插入图片描述

以下是有问题的三维地球南极:

在这里插入图片描述


排错过程

1. 开始以为是代码问题

项目中使用的是某个 Cesium 二次开发平台,后来经过测试,使用原生的 Cesium 代码加载,也是有这个问题!

viewer.imageryLayers.addImageryProvider(new Cesium.TileMapServiceImageryProvider({ // 默认图层url: 图层地址,fileExtension: "png",
}));

2. 后来发现是底图问题

经过对比发现,加载官方底图和天地图底图没问题,基本确定是影像资源问题。

3. 更换底图资源

项目中一直使用水经注下载底图数据,后来尝试使用太乐地图下载资源测试。

经过测试,发现没问题,因此确定为资源问题

以下是太乐地图下载步骤:

(1) . 选择地图

在这里插入图片描述

(2). 设置地图范围

在这里插入图片描述

(3). 地图数据切图

这里默认没有勾选裁剪边界,因此测试数据没问题。

在这里插入图片描述

4. 确认问题原因

经过测试,水经注下载资源正常,但是切图的时候参数设置错误,因此出现此问题。

错误原因:设置裁剪边界(水经注默认勾选),南北极会生成一圈没有数据的空洞。


解决问题

1. 首先下载世界范围底图

在这里插入图片描述

在这里插入图片描述

2. 确认范围和级别,这里只下载几级测试

在这里插入图片描述

3. 导出瓦片,选择标准 TMS

注意:取消勾选边界范围裁剪。

在这里插入图片描述

完整代码


<!DOCTYPE html>
<html lang="en">
<head><!-- Use correct character set. --><meta charset="utf-8"/><!-- Tell IE to use the latest, best version. --><meta http-equiv="X-UA-Compatible" content="IE=edge"/><!-- Make the application on mobile take up the full browser screen and disable user scaling. --><metaname="viewport"content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/><title>Cesium World hole</title><script src="./Cesium.js"></script><script src="http://www.openlayers.vip/examples/resources/jquery-3.5.1.min.js"></script><style>@import url(./Widgets/widgets.css);html,body,#cesiumContainer {width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden;}</style><script>var _hmt = _hmt || [];(function () {var hm = document.createElement("script");hm.src = "https://hm.baidu.com/hm.js?f80a36f14f8a73bb0f82e0fdbcee3058";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();</script>
</head>
<body>
<h3>请切换资源查看结果</h3>
<button id="worldFunc" onClick="worldFunc()">切换标准世界底图</button>
<button id="worldHoleFunc" onClick="worldFunc(true)">切换空洞世界底图</button>
<div id="cesiumContainer"></div>
<script>var viewer = new Cesium.Viewer('cesiumContainer', {shouldAnimate: true,selectionIndicator: true,animation: false,       //动画homeButton: false,       //home键geocoder: false,         //地址编码baseLayerPicker: false, //图层选择控件timeline: false,        //时间轴fullscreenButton: false, //全屏显示infoBox: false,         //点击要素之后浮窗sceneModePicker: false,  //投影方式  三维/二维navigationInstructionsInitiallyVisible: false, //导航指令navigationHelpButton: false,     //帮助信息selectionIndicator: false, // 选择imageryProvider: new window.Cesium.TileMapServiceImageryProvider({url: 'http://www.openlayers.vip/examples/resources/img/world/',fileExtension: "png",})});const world = viewer.imageryLayers._layers[0];const worldHole = viewer.imageryLayers.addImageryProvider(new window.Cesium.TileMapServiceImageryProvider({url: 'http://www.openlayers.vip/examples/resources/img/world_hole/',fileExtension: "png",}));function worldFunc(flag) {flag ? worldHole.show = true : worldHole.show = false;flag ? world.show = false : world.show = true;viewer.camera.flyTo({destination : Cesium.Cartesian3.fromDegrees(-180, -90, 1500000.0)});}</script>
</body>
</html>

在线示例

Cesium 在线示例:Cesium 实战 - 加载水经微图下载资源问题

这篇关于Cesium 实战 - 加载水经微图下载资源问题 - 地球南北极有蓝圈,南北极空洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/440042

相关文章

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas