《使用 Cesium 加载静态热力图显示的实现步骤》
Cesium——使用cesium 加载静态热力图显示
实现思路
要在 Cesium 中加载静态热力图,我们需要完成以下几个主要步骤:
1、计算热力图数据的四至范围和中心点。
2、初始化热力图并设置相关参数。
3、将数据添加到热力图中。
4、定位到热力图的位置并刷新场景。
代码实现
加载热力图的核心代码
以下是实现加载静态热力图的核心代码:
//调用
let data = [{x:112.11,y:34.11,value:11},{x:112.22,y:34.11,value:188}]
testLoc(data)
//-----------------加载热力图start------------------//function testLoc(newHeatList) {// 设定热力图的四至范围// 初始化边界值let bounds = {west: Infinity,east: -Infinity,south: Infinity,north: -Infinity,};// 检查数据是否为空if (newHeatList.length === 0) {console.error("数据为空,无法计算四至范围");bounds = null;} else {// 遍历数据,动态计算四至范围newHeatList.forEach((point) => {if (point.x < bounds.west) bounds.west = point.x;if (point.x > bounds.east) bounds.east = point.x;if (point.y < bounds.south) bounds.south = point.y;if (point.y > bounds.north) bounds.north = point.y;});// 格式化边界值,保留 6 位小数bounds.west = parseFloat(bounds.west.toFixed(6));bounds.east = parseFloat(bounds.east.toFixed(6));bounds.south = parseFloat(bounds.south.toFixed(6));bounds.north = parseFloat(bounds.north.toFixed(6));}// 调用函数计算中心点const centerPoint = calculateCenterPoint(newHeatList);// 初始化热力图let heatMap = CesiumHeatmap.create(viewer, // your cesium viewerbounds, // bounds for heatmap layer{// heatmap相应参数backgroundColor: "rgba(0,0,0,0)",radius: 25,maxOpacity: 0.5,minOpacity: 0,blur: 0.75,});let data = newHeatList;//设置最大最小值let valueMin = Math.min(...data.map((d) => d.value));let valueMax = Math.max(...data.map((d) => d.value));// 将数据添加到热力图heatMap.setWGS84Data(valueMin, valueMax, data);//定位到热力图的位置// viewer.zoomTo(viewer.entities);CameraFlyTo1(centerPoint.x, centerPoint.y, 20000); //改变默认初始地图高度// 强制刷新viewer.scene.requestRender();
}// 计算中心点
function calculateCenterPoint(points) {if (points.length === 0) {console.error("数据为空,无法计算中心点");return null;}// 初始化经度和纬度的总和let sumX = 0;let sumY = 0;// 遍历所有点,累加经度和纬度points.forEach((point) => {sumX += point.x;sumY += point.y;});// 计算平均值并保留 6 位小数const centerX = parseFloat((sumX / points.length).toFixed(6));const centerY = parseFloat((sumY / points.length).toFixed(6));return { x: centerX, y: centerY };
}
//----------------------------end热力图end----------------------//
代码解释
testLoc
** 函数**:
首先,初始化热力图的四至范围(bounds
),并检查输入数据是否为空。
如果数据不为空,遍历数据,动态计算四至范围,并将边界值保留 6 位小数。
调用 calculateCenterPoint
函数计算数据的中心点。
使用 CesiumHeatmap.create
方法初始化热力图,并设置相关参数,如背景颜色、半径、透明度等。
计算数据的最小值和最大值,并将数据添加到热力图中。
调用 CameraFlyTo1
函数定位到热力图的位置,并强制刷新场景。
calculateCenterPoint
** 函数**:
检查输入数据是否为空,如果为空则输出错误信息并返回 null
。
初始化经度和纬度的总和,遍历所有点,累加经度和纬度。
计算平均值并保留 6 位小数,返回中心点的坐标。
效果图
总结
通过以上步骤,我们可以在 Cesium 中加载静态热力图并进行显示。核心在于计算热力图数据的四至范围和中心点,初始化热力图并设置参数,将数据添加到热力图中,最后定位到热力图的位置并刷新场景。希望本文对你有所帮助,你可以根据自己的需求对代码进行修改和扩展。
请注意,上述代码中 viewer
和 CameraFlyTo1
函数需要根据实际情况进行定义和实现。在实际应用中,你可能还需要处理更多的错误情况和优化代码性能。
以上就是使用 Cesium 加载静态热力图显示的详细介绍,希望能帮助你在开发地理信息系统应用时更好地利用 Cesium 的功能。
最后感谢阅读,如有不足指出,请指正,谢谢。
相关文章:

《使用 Cesium 加载静态热力图显示的实现步骤》
Cesium——使用cesium 加载静态热力图显示 实现思路 要在 Cesium 中加载静态热力图,我们需要完成以下几个主要步骤: 1、计算热力图数据的四至范围和中心点。 2、初始化热力图并设置相关参数。 3、将数据添加到热力图中。 4、定位到热力图的位置并刷…...
Spring 事务传播行为
事务传播行为(Transaction Propagation Behavior)是指多个拥有事务的方法在嵌套调用时的事务控制方式。以下是常见的事务传播行为及其应用场景: 1. PROPAGATION_REQUIRED(默认) 定义:如果当前存在事务&…...

mfc学习(一)
mfc为微软创建的一个类qt框架的客户端程序,只不过因为微软目前有自己 的亲身儿子C#(.net),所以到2010没有进行维护。然后一些的工业企业还在继续进行维护相关的内容。我目前就接手一个现在这样的项目,其实本质与qt的思路是差不多的…...

ThreadLocal详解与实战指南
目录 1. ThreadLocal基本概念 1.1 核心原理 1.2 主要特性 2. ThreadLocal API详解 2.1 核心方法 2.2 基本使用方式 3. ThreadLocal使用场景与实战 3.1 场景一:用户身份信息传递 实现步骤 1.创建用户上下文类 2.创建过滤器或拦截器来设置和清理用户信息 …...
[FPGA基础] RAM篇
Xilinx FPGA RAM 使用指南 1. 引言 随机存取存储器(RAM)是 Xilinx FPGA 设计中用于存储和快速访问数据的重要资源。Xilinx FPGA 提供多种 RAM 类型,包括块 RAM(Block RAM)和分布式 RAM(Distributed RAM&a…...

【含文档+PPT+源码】基于微信小程序的校园快递平台
项目介绍 本课程演示的是一款基于微信小程序的校园快递平台,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带…...

【CODEMATE】进制转换(transform) 粤港澳青少年信息学创新大赛 C/C++/Python 解题思路
目录 问题描述做题思路,解决过程思路:踩过的坑:核心代码C 语言 / C 切片:C 语言 / C 判断 ‘A’ 数量:Python 切片:Python 判断 ‘A’ 数量: 完整代码C 语言 完整代码C 完整代码Python 完整代码…...
统计文件中单词出现的次数并累计
# 统计单词出现次数 fileopen("E:\Dasktape/python_test.txt","r",encoding"UTF-8") f1file.read() # 读取文件 countf1.count("is") # 统计文件中is 单词出现的次数 print(f"此文件中单词is出现了{count}次")# 2.判断单词出…...
DbCreateHelper数据库创建指南
DbCreateHelper 是一个用于简化数据库创建和初始化过程的工具类,它封装了常见的数据库操作,使开发者能够更便捷地创建、配置和管理数据库。 1.主要功能 数据库创建与初始化 表结构创建与管理 数据库版本控制 数据迁移支持 数据库连接管理 基本用法…...

2025 Java 开发避坑指南:如何避免踩依赖管理的坑?
在 Java 开发的世界里,依赖管理就像是一座看不见的桥梁,连接着项目所需的各种第三方库和框架。然而,这座桥梁并非总是稳固,稍有不慎就可能掉入 “依赖地狱”,导致项目编译失败、运行异常。2025 年,随着开源…...

ARM服务器与X86服务器核心区别分析
ARM服务器与X86服务器核心区别分析 一、架构设计与指令集差异 指令集本质 ARM:基于RISC(精简指令集),指令定长且简单,单周期执行效率高,硬件设计复杂度低,适合低功耗场景。 X86…...

人口老龄化丨AI健康小屋如何实现防病于未然
随着全球老龄化加剧,“银发浪潮” 对医疗资源、养老护理和健康管理提出了严峻挑战。 由此智绅科技应运而生,七彩喜智慧养老系统构筑居家养老安全网。 AI 健康小屋作为银发科技的创新载体,通过智能化健康监测、精准化风险预警、便捷化医疗衔…...

记录搭建自己应用中心
记录搭建自己应用中心 应用架构主应用-管理中心系统文件系统子应用 日志系统日志系统前端日志系统后端 用户系统接入使用暂未完成 研发管理需求面板消息推送任务分配应用发布 应用架构 一直想做个试试,这是一个简易版的,主要是整合下知识的,…...

git版本回退 | 远程仓库的回退 (附实战Demo)
目录 前言1. 基本知识2. Demo3. 彩蛋 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 本身暂存区有多个文件,但手快了&…...

STM32 的 GPIO和中断
GPIO的简单介绍 内部结构 施密特触发器(TTL肖特基触发器) 的工作原理: 施密特触发电路(简称)是一种波形整形电路,当任何波形的信号进入电路时,输出在正、负饱和之间跳动,产生方波或…...
【Python数据库编程实战】从SQL到ORM的完整指南
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:SQLite基础操作案例2:MySQL连接池案例3:SQLAlchemy ORM …...

【因果推断】(二)CV中的应用
文章目录 因果表征学习因果图 (Causal Diagram)“后门准则”(backdoor criterion)和“前门准则”(frontdoor criterion)后门调整Visual Commonsense R-CNNCausal Intervention for Weakly-Supervised Semantic SegmentationCausal…...

分享Matlab成功安装Support Package硬件支持包的方法
分享Matlab成功安装Support Package硬件支持包的方法 文章目录 分享Matlab成功安装Support Package硬件支持包的方法一、 引言二、 操作步骤三、 附件资料四、总结 一、 引言 最近,我想学习基于Matlab simscape & Arduino实现硬件在环仿真,其中物理…...

电子级甲基氯硅烷
电子级甲基氯硅烷是一类高纯度有机硅化合物,主要用于半导体制造、光伏产业及高端电子材料领域。以下从技术特性、应用场景、生产工艺、市场动态及安全规范等方面展开分析: 一、核心特性与技术标准 高纯度要求 电子级甲基氯硅烷的纯度通常需达到99.99% 以…...
C语言面试高频题——define 和typedef 的区别?
1. 基本概念 (1) #define 定义:#define 是预处理指令,用于定义宏。作用:在编译之前进行文本替换。语法:#define 宏名 替换内容示例:#define PI 3.14159 #define SQUARE(x) ((x) * (x))(2) typedef 定义:…...
[FPGA基础] 原语简介篇
Xilinx FPGA 原语介绍指南 1. 引言 在 Xilinx FPGA 设计中,原语 (Primitives) 是 FPGA 硬件资源的最基本构建块,直接映射到 FPGA 的底层硬件结构。原语允许设计者以低级别方式控制硬件行为,优化性能、功耗和资源利用率。本文档基于 Xilinx …...

【金仓数据库征文】- 深耕国产数据库优化,筑牢用户体验新高度
目录 引言 一、性能优化:突破数据处理极限,提升运行效率 1.1 智能查询优化器:精准优化数据检索路径 1.2 并行处理技术:充分释放多核计算潜力 1.3 智能缓存机制:加速数据访问速度 二、稳定性提升:筑牢…...

热度大幅度下降,25西电经济与管理学院(考研录取情况)
1、经济与管理学院各个方向 2、经济与管理学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、应用经济及学25年相较于24年下降25分,为325分 2、管理科学与工程25年相较于24年保持不变,为375分 3、工商管理学25年相较于24年下降5分…...
安卓四大组件之ContentProvider
目录 实现步骤 代码分析 onCreate insert query ContextHolder Cursor 作用与用法 基本步骤: 可能的面试题:为什么使用Cursor? 为什么使用Cursor 使用Cursor的好处 静态内部类实现单例模式 AnndroidManifest.xml配置信息 注释的…...

DeepSeek+Mermaid:轻松实现可视化图表自动化生成(附实战演练)
目录 一、引言:AI 与图表的梦幻联动二、DeepSeek:大语言模型新星崛起2.1 DeepSeek 全面剖析2.2 多场景应用示例2.2.1 文本生成2.2.2 代码编写 三、Mermaid:代码式图表绘制专家3.1 Mermaid 基础探秘3.2 语法与图表类型详解3.2.1 流程图&#x…...
redis客户端库redis++在嵌入式Linux下的交叉编译及使用
在开发过程中,我们经常会遇到需要在嵌入式Linux系统上与Redis进行交互的需求。因此选择一个适合的Redis客户端库就显得尤为重要。下面介绍下c中有名的redis-plus-plus(redis)三方库在嵌入式linux下的交叉编译及使用。该库底层是基于hiredis的…...
gitlab-ce容器镜像源(国内)
下载命令 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/gitlab-ce:17.10.4-ce.0 更多参考: https://docker.aityp.com/image/docker.io/gitlab/gitlab-ce:17.10.4-ce.0...
小白自学python第二天
学习python的第二天 一、判断语句 1、布尔类型和比较运算符 1、布尔类型 表示现实生活中的逻辑,真(True,用数字1表示)和假(False,用数字0表示) 2、布尔类型变量的定义 变量的名称 布尔类…...
嵌入式面试高频考点深度解析:内存管理、指针操作与结构体实战指南
试题一:大小端系统中数据的内存表现形式 题目 short tmp 0xaabb; 请分别写出大小端系统中,tmp 在内存中的表现形式。 分析 1. 什么是高位与低位? 对于一个数据而言,以十六进制数 0xaabb 为例,从左至右࿰…...
ApplicationRunner的run方法与@PostConstruct注解
ApplicationRunner 的 run 方法与 PostConstruct 注解在 Spring Boot 中均用于初始化逻辑,但二者的 执行时机、作用范围 和 功能特性 存在显著差异。以下是详细对比分析: 一、核心差异对比 维度PostConstructApplicationRunner.run()触发时机Bean 实例化…...