Openlayers:实现简单的热力图热力图是一种通过颜色分布来直观描述地理现象的空间分布与变化趋势的地图表现手法,本文

发布时间:2025-06-24 12:26

一、什么是热力图?

热力图是一种通过颜色分布来直观描述地理现象的空间分布与变化趋势的地图表现手法,能够呈现一些原本不易理解或表达的数据,比如密度、频度、温度等。

二、Opnelayers中实现热力图

Openlayers中主要通过 Heatmap图层实现热力图。在创建热力图的过程中主要有以下的几个属性比较重要,热力图的效果主要由它们决定:

NameTypeDescriptiongradientArray. (defaults to ['#00f', '#0ff', '#0f0', '#ff0', '#f00'])热力图的颜色渐变,指定为一个由 CSS 颜色字符串组成的数组。radiusNumberExpression(defaults to 8)半径大小,单位为像素。请注意,对于线串(LineStrings)来说,线条的宽度将是半径的两倍。blurNumberExpression(defaults to 15)模糊尺寸,单位为像素。该尺寸会与上述的半径参数相加,从而确定最终模糊效果的尺寸。weightWeightExpression(defaults to 'weight')用于确定权重的要素属性。这也支持返回数值的表达式,或者支持使用一个从要素中获取权重值的函数。权重值的范围应在 0 到 1 之间(超出该范围的值将被限制在这个区间内)。sourceVectorSourceTypePoint source.

下面是我写的一个简易的热力图示例,以示参考:

<template> <activity-panel title="热力图"> <el-form class="form" label-width="auto" style="max-width: 600px"> <el-form-item label="Blur" label-position="left"> <el-slider v-model="blur" :min="0" :max="100" :step="1" @change="changeBlur"></el-slider> </el-form-item> <el-form-item label="Radius" label-position="left"> <el-slider v-model="radius" :min="0" :max="100" :step="1" @change="changeRadius"></el-slider> </el-form-item> </el-form> </activity-panel> <base-map :center="center" :zoom="zoom" @loadend="onLoadEnd" /> </template> <script setup> import { ref, onMounted, nextTick } from "vue"; import { Vector as VectorLayer, Heatmap } from "ol/layer"; import { Vector as VectorSource, Cluster } from "ol/source"; import { GeoJSON } from "ol/format"; const center = [108.89766828762245, 33.42875613964681]; const zoom = 5; function onLoadEnd() { addHeatMapLayer(); } let heatMapLayer; const blur = ref(15); const radius = ref(8); function addHeatMapLayer() { const weatherStationSource = new VectorSource({ format: new GeoJSON(), url: "src/data/气象站点/stations-wgs.geojson", }); heatMapLayer = new Heatmap({ source: weatherStationSource, blur: blur.value, radius: radius.value, }); window.map.addLayer(heatMapLayer); } function changeBlur(value) { heatMapLayer.setBlur(value); } function changeRadius(value) { heatMapLayer.setRadius(value); } </script> <style lang="less" scoped></style>

参考资料

热力图 OpenLayers v10.5.0 API - Module: ol/layer/Heatmap

本文收录于以下专栏

cover

下一篇

OpenLayers:extent与view extent 介绍

avatar

网址:Openlayers:实现简单的热力图热力图是一种通过颜色分布来直观描述地理现象的空间分布与变化趋势的地图表现手法,本文 https://m.mxgxt.com/news/view/1504450

相关内容

Openlayers:实现简单的热力图热力图是一种通过颜色分布来直观描述地理现象的空间分布与变化趋势的地图表现手法,本文
怎么用python实现粉丝地域分布热力图
4种更快更简单实现Python数据可视化的方法!
文娱行业趋势图表分析.pptx
插图在书籍中的形式与内容:通过有意味的图画加强文字的表达力
Python绘制相关性热力图的方法与技巧
会展电子地图全解析:智慧导览与区域热力分布的完美结合
歌手行业数据图表分析.pptx
观39幅古地图 看丝路走向与分布
海南旅游热力图:各地热度分布与游客偏好全景解析

随便看看