Cesium实现热力图功能

效果图如下:

<!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>Cesium热力图</title>
    <!-- 在这里引入Cesium -->
    <script src="./lib/Cesium/Cesium.js"></script>
    <script src="./js/CesiumHeatmap.js"></script>
    <link rel="stylesheet" href="./lib/Cesium/Widgets/widgets.css" rel="stylesheet">
    <style>
        html,
        body {
            margin: 0;
            padding: 0;
        }
    </style>
</head>

<body>
    <!-- https://blog.csdn.net/weixin_45782925/article/details/123054390 -->
    <!-- 放置地球的容器 -->
    <div id="cesiumContainer"></div>
    <!-- 设置token -->
    <script>
        Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlMDczMzQ0NC1lZmRkLTQ0ODEtOGZhMy01MDU3NzAzM2E5YmIiLCJpZCI6MTg2MDgsInNjb3BlcyI6WyJhc3IiLCJnYyJdLCJpYXQiOjE1NzQxNDMwNTB9.LJcpHG4SJ8DI1mCHd1aabofkvS-9WrxeWVul7Axw_Kw';
    </script>
    <script>
        var viewer = new Cesium.Viewer('cesiumContainer', {
            // 关闭一些UI
            baseLayerPicker: false, //右上角的图层选择按钮
            animation: true,        //左下角的动画仪表盘
            infoBox: false,         //点击要素之后显示的信息
            geocoder: false,        //搜索框
            homeButton: false,      //home按钮
            sceneModePicker: true,  //模式切换按钮
            timeline: true,         //底部的时间轴
            fullscreenButton: false,//右下角的全屏按钮
            shouldAnimate: true,
            navigationHelpButton: false, //右上角的帮助按钮
        });


        function testLoc() {
            // 设定热力图的四至范围
            let bounds = {
                west: 116.13833844,
                east: 116.13956899,
                south: 37.43582929,
                north: 37.43706916
            };

            // 初始化热力图
            let heatMap = CesiumHeatmap.create(
                viewer, // your cesium viewer
                bounds, // bounds for heatmap layer
                {
                    // heatmap.js options go here
                    maxOpacity: 0.75
                }
            );

            // 设置一些随机的效果,这个可根据实际数据进行开发
            let data = [{
                "x": 116.1383442264,
                "y": 37.4360048372,
                "value": 76
            }, {
                "x": 116.1384363011,
                "y": 37.4360298848,
                "value": 63
            }, {
                "x": 116.138368102,
                "y": 37.4358360603,
                "value": 1
            }, {
                "x": 116.1385627739,
                "y": 37.4358799123,
                "value": 21
            }, {
                "x": 116.1385138501,
                "y": 37.4359327669,
                "value": 28
            }, {
                "x": 116.1385031219,
                "y": 37.4359730105,
                "value": 41
            }, {
                "x": 116.1384127393,
                "y": 37.435928255,
                "value": 75

            }, {
                "x": 116.1384551116,
                "y": 37.4359450132,
                "value": 3
            }, {
                "x": 116.1384927196,
                "y": 37.4359158649,
                "value": 45
            }, {
                "x": 116.1384938639,
                "y": 37.4358498311,
                "value": 45
            }, {
                "x": 116.1385183299,
                "y": 37.4360213794,
                "value": 93
            }, {
                "x": 116.1384007925,
                "y": 37.4359860133,
                "value": 46
            }, {
                "x": 116.1383604844,
                "y": 37.4358298672,
                "value": 54
            }, {
                "x": 116.13851025,
                "y": 37.4359098303,
                "value": 39
            }, {
                "x": 116.1383874733,
                "y": 37.4358511035,
                "value": 34
            }, {
                "x": 116.1384981796,
                "y": 37.4359355403,
                "value": 81
            }, {
                "x": 116.1384504107,
                "y": 37.4360332348,
                "value": 39
            }, {
                "x": 116.1385582664,
                "y": 37.4359788335,
                "value": 20
            }, {
                "x": 116.1383967364,
                "y": 37.4360581999,
                "value": 35
            }, {
                "x": 116.1383839615,
                "y": 37.436016316,
                "value": 47
            }, {
                "x": 116.1384082712,
                "y": 37.4358423338,
                "value": 36
            }, {
                "x": 116.1385092651,
                "y": 37.4358577623,
                "value": 69
            }, {
                "x": 116.138360356,
                "y": 37.436046789,
                "value": 90
            }, {
                "x": 116.138471893,
                "y": 37.4359184292,
                "value": 88
            }, {
                "x": 116.1385605689,
                "y": 37.4360271359,
                "value": 81
            }, {
                "x": 116.1383585714,
                "y": 37.4359362476,
                "value": 32
            }, {
                "x": 116.1384939114,
                "y": 37.4358844253,
                "value": 67
            }, {
                "x": 116.138466724,
                "y": 37.436019121,
                "value": 17
            }, {
                "x": 116.1385504355,
                "y": 37.4360614056,
                "value": 49
            }, {
                "x": 116.1383883832,
                "y": 37.4358733544,
                "value": 82
            }, {
                "x": 116.1385670669,
                "y": 37.4359650236,
                "value": 25
            }, {
                "x": 116.1383416534,
                "y": 37.4359310876,
                "value": 82
            }, {
                "x": 116.138525285,
                "y": 37.4359394661,
                "value": 66
            }, {
                "x": 116.1385487719,
                "y": 37.4360137656,
                "value": 73
            }, {
                "x": 116.1385496029,
                "y": 37.4359187277,
                "value": 73
            }, {
                "x": 116.1383989222,
                "y": 37.4358556562,
                "value": 61
            }, {
                "x": 116.1385499424,
                "y": 37.4359149305,
                "value": 67
            }, {
                "x": 116.138404523,
                "y": 37.4359563326,
                "value": 90
            }, {
                "x": 116.1383883675,
                "y": 37.4359794855,
                "value": 78
            }, {
                "x": 116.1383967187,
                "y": 37.435891185,
                "value": 15
            }, {
                "x": 116.1384610005,
                "y": 37.4359044797,
                "value": 15
            }, {
                "x": 116.1384688489,
                "y": 37.4360396127,
                "value": 91
            }, {
                "x": 116.1384431875,
                "y": 37.4360684409,
                "value": 8
            }, {
                "x": 116.1385411067,
                "y": 37.4360645847,
                "value": 42
            }, {
                "x": 116.1385237178,
                "y": 37.4358843181,
                "value": 31
            }, {
                "x": 116.1384406464,
                "y": 37.4360003831,
                "value": 51
            }, {
                "x": 116.1384679169,
                "y": 37.4359950456,
                "value": 96
            }, {
                "x": 116.1384194314,
                "y": 37.4358419739,
                "value": 22
            }, {
                "x": 116.1385049792,
                "y": 37.4359574813,
                "value": 44
            }, {
                "x": 116.1384097378,
                "y": 37.4358598672,
                "value": 82
            }, {
                "x": 116.1384993219,
                "y": 37.4360352975,
                "value": 84
            }, {
                "x": 116.1383640499,
                "y": 37.4359839518,
                "value": 81
            }];

            //设置最大最小值
            let valueMin = 0;
            let valueMax = 100;
            // 将数据添加到热力图
            heatMap.setWGS84Data(valueMin, valueMax, data);
            //定位到热力图的位置
            viewer.zoomTo(viewer.entities);
        }

        // 方式一
        // testLoc()

        // 请求本地数据
        var hdata = null
        async function addHeatmap() {
            // 请求本地数据
            var data = null
            await fetch(
                "./data/heatmap.json")
                .then(res =>
                    res.json()).then(d => {
                        data = d
                    })
            // random example data 添加数据 最小值,最大值,数据集 
            let valueMin = data[0].value;
            let valueMax = data[0].value;;
            let bounds = {
                west: data[0].x, south: data[0].y, east: data[0].x, north: data[0].y
            };

            // 初始化数据点范围		
            for (var i in data) {
                let _x = data[i].x;
                let _y = data[i].y;
                let _value = data[i].value;
                if (valueMin > _value) {
                    valueMin = _value;
                }
                if (valueMax < _value) {
                    valueMax = _value;
                }
                if (bounds.west > _x) {
                    bounds.west = _x;
                }
                if (bounds.east < _x) {
                    bounds.east = _x;
                }
                if (bounds.south > _y) {
                    bounds.south = _y;
                }
                if (bounds.north < _y) {
                    bounds.north = _y;
                }
            }

            // 初始化cesiumheatmap对象,传入相应的参数
            let heatMap = CesiumHeatmap.create(
                viewer, // 视图层
                bounds, // 矩形坐标
                { // heatmap相应参数
                    backgroundColor: "rgba(0,0,0,0)",
                    radius: 25,
                    maxOpacity: .5,
                    minOpacity: 0,
                    blur: .75
                }
            );
            // add data to heatmap
            heatMap.setWGS84Data(valueMin, valueMax, data);
            //定位到热力图的位置
            viewer.zoomTo(viewer.entities);
        }

        addHeatmap(hdata)

    </script>
</body>

</html>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字化时代的政务服务:构建便捷高效的线上政务大厅

引言&#xff1a; 随着数字化时代的来临&#xff0c;如何通过线上政务大厅搭建一个便捷高效的服务平台&#xff0c;以更好地满足公众需求值得探究。线上政务大厅是政务服务的新方式&#xff0c;但搭建线上政务大厅并不是一件容易的事情&#xff0c;需要精心的规划和设计。 一…

常量字符串(const)

数组名就是地址&#xff0c;str1与str2是两个不同的数组&#xff0c;虽然内容相同&#xff0c;但是地址不同&#xff0c;故为no const char * str是常量字符串&#xff0c;如果已有相同内容str3&#xff0c;则写入相同内容的str4是不会再开辟新的空间了&#xff0c;因为常量已…

react中模块化样式中:global的作用

在react中如果是通过import styles from ./index.less这种方式模块化引入样式的话&#xff0c;那么编译后的less文件里的样式名都会自动添加后缀。而:global的作用就是不让类名添加后缀

故障识别:CNN-BiLSTM-SelfAttention时空特征融合多头自注意力机制的故障识别程序,数据由Excel导入,直接运行!

适用平台&#xff1a;Matlab2023版及以上 本程序参考中文EI期刊《基于CNN-BiLSTM 的滚动轴承变工况故障诊断方法法》&#xff0c;程序注释清晰&#xff0c;干货满满&#xff0c;下面对文章和程序做简要介绍。 在CNN-BiLSTM-SelfAttention故障识别模型中&#xff0c;结合了卷积…

指标管理系统

参考 指标系统业务操作流程 阿里大数据开发治理平台

开源一个局域网文件共享工具

shigen日更文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 hello&#xff0c;夜深了&#xff0c;又是shigen深夜写博客的时间啦&#xff0c;今天分享的内容是《开源一个局…

OpenGeometry 开源社区特聘子虔科技云CAD专家 共建云几何内核

11月5日&#xff0c;由广东省工业和信息化厅、广东省科学技术厅、广东省教育厅、深圳市人民政府主办的2023工业软件生态大会在广东省深圳市召开。 开幕式上&#xff0c;备受关注的云几何内核开源平台——OpenGeometry开源社区正式发布。这意味着在几何引擎领域将通过开源这个模…

2023年亚太地区数学建模大赛 C 题

我国新能源电动汽车的发展趋势 新能源汽车是指以先进技术原理、新技术、新结构的非常规汽车燃料为动力来源&#xff08;非常规汽车燃料指汽油、柴油以外的燃料&#xff09;&#xff0c;将先进技术进行汽车动力控制和驱动相结合的汽车。新能源汽车主要包括四种类型&#xff1a;…

【追求卓越01】数据结构--数组

引导 这一章节开始&#xff0c;正式进入数据结构与算法的学习过程中。由简到难&#xff0c;先开始学习最基础的数据结构--数组。 我相信对于数组&#xff0c;大家肯定是不陌生&#xff0c;因为数组在大多数的语言中都有&#xff0c;也是大家在编程中常常会接触到的。我不会说数…

免费分享自建GPT网站,畅享无限创意!

PS&#xff1a;该文章基本为GPT3.5 撰写 这里与大家分享一个令人兴奋的消息&#xff1a;我建立了一个全新的GPT网站&#xff0c;并且我将免费提供给大家使用&#xff01;这个网站基于最新的GPT-3.5 Turbo模型&#xff0c;能够为您带来无限的创意和惊喜。 在这个免费的GPT网站…

一条命令彻底卸载Linux自带多个版本jdk

一条命令彻底卸载Linux自带多个版本jdk 检查系统已经安装的jdk rpm -qa | grep java卸载所有已经安装的 jdk xargs 将参数逐个传递 将已安装的 java 程序逐个当做参数传递给 rpm -e --nodeps rpm -qa | grep java | xargs rpm -e --nodeps再次检查系统已经安装的jdk rpm -qa | …

python-opencv划痕检测

python-opencv划痕检测 这次实验&#xff0c;我们将对如下图片进行划痕检测&#xff0c;其实这个比较有难度&#xff0c;因为清晰度太差了。 我们做法如下&#xff1a; &#xff08;1&#xff09;读取图像为灰度图像&#xff0c;进行自适应直方图均衡化处理&#xff0c;增强图…

基于爬行动物算法优化概率神经网络PNN的分类预测 - 附代码

基于爬行动物算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于爬行动物算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于爬行动物优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

梦开始的地方——Adobe Premiere Pro

今天&#xff0c;我们来说说一款老生常谈的相信也是很多人都经常迫切需要的软件。Adobe Premiere Pro&#xff0c;简称Pr&#xff0c;是由Adobe公司开发的一款视频编辑软件。 Premiere Pro是视频编辑爱好者和专业人士必不可少的视频编辑工具。它可以提升您的创作能力和创作自由…

Leetcode—6.N字形变换【中等】

2023每日刷题&#xff08;三十七&#xff09; Leetcode—6.N字形变换 算法思想 参考k神的题解 实现代码 class Solution { public:string convert(string s, int numRows) {if(numRows < 2) {return s;}vector<string> rows(numRows);int flag -1;int i 0;for(…

使用docker命令_进入容器_登录mysql服务_并执行sql语句---Docker工作笔记005

今天就用到了,不得不说用docker用到的还是少,记录一下,常用的也就这些吧. 首先执行: docker ps [root@localhost dataease-1.18.9]# docker ps CONTAINER ID IMAGE COMMAND CREATED …

【NLP】培训LLM的不同方式

在大型语言模型&#xff08;LLM&#xff09;领域&#xff0c;存在多种具有不同手段、要求和目标的培训机制。由于它们有不同的用途&#xff0c;因此重要的是不要将它们相互混淆并了解它们适用的不同场景。 在本文中&#xff0c;我想概述一些最重要的训练机制&#xff0c;包括预…

气候变化和人类活动对中国植被固碳的贡献量化数据月度合成产品

简介&#xff1a; 气候变化和人类活动对中国植被固碳的贡献量化数据月度合成产品包括中国2001~2018年地表短波波段反照率、植被光合有效辐射吸收比、叶面积指数、森林覆盖度和非森林植被覆盖度、地表温度、地表净辐射、地表蒸散发、地上部分自养呼吸、地下部分自养呼吸、总初级…

挺扎心!好不容易有了一个offer,就因为背调出之前有仲裁记录,offer黄了,这已经是第二次了!...

仲裁记录会影响之后求职吗&#xff1f; 最近有一位程序员向我们讲述了他的遭遇&#xff1a; 大环境不好&#xff0c;好不容易有了一个offer&#xff0c;却因为背调出跟之前公司有仲裁经历&#xff0c;offer黄了&#xff0c;这已经是第二次因为这个原因黄offer了。 他说自己快抑…

redis运维(十三) hash哈希

一 哈希 ① 定义 hash&#xff1a; 散列说明&#xff1a;key对应是值是键值对[python中的字典],其中键在redis中叫field.形如&#xff1a;value[{field1,value1},...{fieldN,valueN}],值本身又是一种键值对结构 ② 优点和缺点 wzj_height 180wzj_age 18等价 -->…