Cesium 定位到图层(ImageryLayer)报错 DeveloperError: normalized result is not a number

news2024/11/15 22:34:27

Cesium 定位到图层(ImageryLayer)报错 DeveloperError: normalized result is not a number

    • 错误原因
    • 调试定位问题过程
    • 问题解决
    • 总结

在使用 Cesium 封装代码的时候,遇到个奇怪的问题。

使用 viewer.flyTo(ImageryLayer) 报错:DeveloperError: normalized result is not a number。

经过不断尝试发现,定位到某些 ImageryLayer 是没问题的,但是有的 ImageryLayer 就会报错。

但是使用 camera.flyTo 定位的话却能正常定位。

经过进一步确认发现,跟加载的 Terrain 有关系,后来终于解决问题,这里记录一下。

错误原因

现已确认,错误需要以下几个条件:

1. 开启地形,但是地形数据不完整。

拼接的地形数据,比如:Terrain 地形文件夹中,0-5 级是全国地形数据,6-8 级是北京市数据,而 layer.json 参数是 0-8 级。
在这里插入图片描述

2. 定位到 ImageryLayer 的 Rectangle

给 ImageryLayer 设置 Rectangle 参数,用于 viewer.flyTo 定位。

3. 定位到某些区域的时候会报错。

完整错误:

DeveloperError: normalized result is not a number

Error
    at new DeveloperError (http://localhost:8009/lssec.js:83514:11)
    at Cartesian3.normalize (http://localhost:8009/lssec.js:69756:11)
    at Ellipsoid.geodeticSurfaceNormal (http://localhost:8009/lssec.js:87921:65)
    at Ellipsoid.cartesianToCartographic (http://localhost:8009/lssec.js:88014:18)
    at Array.createUpdate3D (http://localhost:8009/lssec.js:237640:30)
    at CameraFlightPath.createTween (http://localhost:8009/lssec.js:237932:39)
    at Camera.flyTo (http://localhost:8009/lssec.js:236172:86)
    at updateZoomTarget (http://localhost:8009/lssec.js:427653:14)
    at Viewer._postRender (http://localhost:8009/lssec.js:427539:3)
    at Event.raiseEvent (http://localhost:8009/lssec.js:92422:20)

调试定位问题过程

1. 首先通过错误定位到报错位置。
在这里插入图片描述
2. 找到 viewer.flyTo 方法,调试查看,这里发现定位其实是计算 Rectangle,然后在进行定位。

初步有了解决思路,继续调试。
在这里插入图片描述
3. 这里可以发现,viewer.flyTo 跟 terrainProvider 是有关系的,因此确定是 Terrain 地形数据资源的问题。
在这里插入图片描述

问题解决

解决问题的方式有两种,一是使用完整的 Terrain 地形数据,不会报错;二是修改定位的方式,可以避免错误。

1. 使用完整 terrain 地形数据

很简单,不要拼接即可,也就是使用工具切割的 Terrain 地形数据目录是什么样就直接使用,不能对 Terrain 目录做任何修改

2. 使用其他方式定位

在查看 API 的时候,发现 ImageryLayer 有这样一个方式,大概意思是获取 Rectangle 之后,使用 camera 进行定位

经过尝试,没问题,不会报错。
在这里插入图片描述

总结

广大 GISer 除了关注这个问题,以及解决方法,还可以关注一下笔者的调试过程。

另外,经过确认,这个问题是 Cesium 的 bug,笔者已经在 githup 上提交了,感兴趣的可以看看。

这里是 Cesium 的错误调试:viewer.flyTo 问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2022年度悲报】-回望2022,展望2023

文章目录一、前言-想对大家说的话二、有感而谈2022年-新年开端(同销万古愁)2022年-前中期(再进再困,再熬再奋)2022年-年后半段(玉骨那愁瘴雾,冰姿自有仙风)2022年-年末尾声&#xff…

简单总结:Flink和Kafka是如何做到精准一致性的

Flink CheckPoint机制 CheckPoint本质上就是检查点,类似于玩游戏的时候,需要偶尔存档,怕家里断电导致自己白玩。 Flink也是一样的,机器也是可能宕机,那么Flink如何保证自身不受宕机影响呢? 一般来说&am…

python小案例——采集财经数据

前言 大家早好、午好、晚好吖 ❤ ~ 另我给大家准备了一些资料,包括: 2022最新Python视频教程、Python电子书10个G (涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题)、Python学习路线图等等 全部可在文末名片获取哦&…

MATLAB算法实战应用案例精讲-【人工智能】语义分割(补充篇)(附实战应用案例及代码)

前言 语义分割作为计算机视觉领域的关键任务,是实现完整场景理解的必经之路。为了让机器拥有视觉,要经过图像分类、物体检测再到图像分割的过程。其中,图像分割的技术难度最高。 越来越多的应用得益于图像分类分割技术,全场景理解在计算机视觉领域也至关重要。其中一些应…

强大的ANTLR4(3)--算术表达式

下面要构建一个简单的计算器,规则如下: 1)可以由一系列语句构成,每条语句由换行符终止 2)一条语句可以是表达式、赋值语句或空行 3)可以有加减乘除、小括号以及变量出现 例如,文件名t.expr的内…

【Java】PriorityQueue梳理

【Java】PriorityQueue梳理 简介 PriorityQueue是优先队列的意思。优先队列的作用是能保证每次取出的元素都是队列中权值最小的。这里牵涉到了大小关系,元素大小的评判可以通过元素本身的自然顺序(natural ordering),也可以通过…

linux的例行性工作

一,单一执行的例行性工作 定时任务,将来的某个时间点执行 使用单一理性工作的命令:at -> atd 命令 服务名 查看atd状态,看有没有这个服务,查看结果为有 我们使用 at 命令来生成所要运行的工作,并将…

Taro+nutui h5使用nut-signature 签名组件的采坑记录

近期在使用Taro(“tarojs/taro”: “3.4.0-beta.0”) Nutui (3.1.16)开发H5时,需要一个签名功能结果在小程序上运行正常的 nut-signature组件,在h5上出问题了 首先问题是 : Nutui的 签名组件(nut-signature&#xff…

加解密与HTTPS(3)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~ 除了对称加密算法和非对称加密算法,再就是最后的一种加密算法了:不可逆加密算法。 对称加密算法和非对称加密算法在处理明文的过程中需要…

线程池ThreadPoolExecutor的源码中是如何解决并发问题的?

ThreadPoolExecutor面临哪些线程安全问题 ThreadPoolExecutor俗称线程池,作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务。 然而为高效并发而生ThreadPoolExe…

C++项目实战:职工管理系统

1.管理系统的要求 系统可以管理公司内部所有员工的信息 主要使用c实现一个基于多态的职工管理系统 公司中的职工分为三类:普通员工、经理、老板,显示信息时需要显示职工编号、职工姓名、职工岗位以及职责 普通员工职责:完成经理安排的各项任…

oh my 毕设-人体姿态估计综述

文章目录What is Human Pose Estimation?Classical vs. Deep Learning-based approachesClassical approaches to 2D Human Pose EstimationDeep Learning-based approaches to 2D Human Pose EstimationHuman Pose Estimation using Deep Neural NetworksOpenPoseAlphaPose (…

想要努力赚钱,培养四种基础能力

这四种基础能力分别是:认知力、学习力、执行力、复盘力。我们的认知和思维,很大程度上,都是由所处的环境和圈子决定的。在同一个环境和圈子里面呆久了,你的认知就会被固化了。穷人最根本的枷锁,不是缺乏资金&#xff0…

excel图表技巧:看看,这个饼图象不象罗盘?

说到制作柱形图、条形图、饼图,相信大家都没有问题,直接选中数据,再插入对应的图表就行了,可如果要制作一张双层饼图你还会吗?“啥?还有双层饼图?”嘿嘿,不知道了吧,双层…

PVE+NUT+群晖等配置

文章目录配置文件说明默认配置(翻译的)ups.conf(设置ups通信相关)upsd.conf(设置ups客户访问的相关信息)upsd.users(设置upsd用户)nut.conf(nut的配置,主要是模式,决定使用哪些文件)upsmon.confupssched.confupssched-cmd官方手册写的可以的文章只需要实现&#xff…

excel数据查找:内容查找统计的函数公式

判断单元格是否包含特定内容是平时工作中经常会遇到的一类问题,常见于包含备注信息的表格中。例如下面这个考勤汇总表,需要根据备注中的内容判断该员工是否存在加班的情况,就属于这类问题。 遇到这类问题该如何处理,常用的公式做法…

klee2.3 教程1-2

1. klee2.3 安装 system:unbuntu 20.04 note: llvm-13klee2.3z3-4.10 1.1 install dependencies KLEE 需要 LLVM 的所有依赖项(请参阅此处),以及更多。特别是,您应该安装下面列出的程序和库。graphviz/doxygen是可…

初级C语言之【操作符】

🦖作者:学写代码的恐龙 🦖博客主页:学写代码的恐龙博客主页 🦖专栏:【初级c语言】 🦖语录:❀未来的你,一定会感谢现在努力奋斗的自己❀ 初级C语言之【操作符详解】一&am…

综合能源系统分析的统一能路理论(三):《稳态与动态潮流计算》(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

spring6笔记3(bean的循环依赖,手写spring框架,ioc注解开发,JdbcTemplate)

第九章、Bean的循环依赖问题 9.1 什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。 比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 public class Husband…