GIS可视化——热点图
一、简介
SuperMap iClient for JavaScript提供了热点图(HeatMapLayer),用于渲染数据衰减趋势、颜色渐变的效果。
- 原理:在客户端直接渲染的栅格图,热点图的渲染需要三大要素:1、热点数据,热点数据需要点数据,每一个热点数据需要有地理位置以及权重值 (能够明显的表现某位置某事件发生频率或事物分布密度等,如可以为温度的高低、人口密集度等等);2、热点衰减渐变填充色集合, 用于渲染每一个热点从中心向外衰减时的渐变色;3、热点半径,也就是衰减半径。每一个热点需要从中心点外四周根据半径计算衰减度, 对在热点衰减区内的每一个像素计算需要渲染的颜色值,然后进行客户端渲染。
- 特点:可以通过颜色用图示化方法来表达二维离散数据的分布,并且可以呈现每一个离散点的权重值的衰减趋势和离散点之间的衰减叠加。
- 应用场景:由于热点图的衰减是像素级别的,视觉效果方面极佳,但不能与具体数据进行一一对应,只能表示权重之间的差别,所以可以用于一些对精度要求不高 而需要重点突出权重渐变的行业,如可以制作气象温度对比动态效果图、地震区域的震点强弱图等。
二、使用
1、创建热点图图层
首先创建一个热点图对象。由于热点图是对矢量点数据的渲染,不能作为底图,初始化只需要设置一个图层的名称即可。
//创建一个名为“heatMap”的热点图层。
heatMapLayer = new SuperMap.Layer.HeatMapLayer("heatMap");
2、添加到地图
然后将此图层添加到map里面。
//向map中添加图层
map.addLayers([heatMapLayer]);
3、添加数据
首先需要获取一个点数组(SuperMap.Feature.Vector数组), 数据可以从服务器查询,也可以使用本地数据,不过都只能是点数据。 如下的形式:
var heatFeatures = [feature1,feature2,......,featureN];
这些features首先必须是点数据,每一个 feature 必须满足在attributes属性中存在记录权重的值。 如我们可以这样初始化feature:
var heatFeature = new SuperMap.Feature.Vector(
new SuperMap.Geometry.Point(
Math.random()*360 - 180,
Math.random()*180 - 90
),
{
"value":Math.random()*9
}
);
这里的value就是记录权重的字段,当每一个feature数据带上权重数据后, 我们还需要让layer知道如何读取这些数据,所以需要告诉layer读哪一个字段:
heatMapLayer.featureWeight = "value";
再把所有的features添加进layer
heatMapLayer.addFeatures(heatFeatures);
然后我们就可以获得如下热点图的效果了:

4、自定义颜色
虽然上面的效果很好,但是颜色渐变是固定的,下面我们就试着自己来设置颜色的渐变
我们可以给属性items赋值一个分段颜色数组以此来设置颜色渐变。如下:
var items = [
{
start:0,
end:1,
startColor:new SuperMap.REST.ServerColor(170,240,233),
endColor:new SuperMap.REST.ServerColor(180,245,185)
},
{
start:1,
end:2,
startColor:new SuperMap.REST.ServerColor(180,245,185),
endColor:new SuperMap.REST.ServerColor(223,250,177)
},
{
start:2,
end:3,
startColor:new SuperMap.REST.ServerColor(223,250,177),
endColor:new SuperMap.REST.ServerColor(224,239,152)
},
{
start:3,
end:4,
startColor:new SuperMap.REST.ServerColor(224,239,152),
endColor:new SuperMap.REST.ServerColor(160,213,103)
},
{
start:4,
end:5,
startColor:new SuperMap.REST.ServerColor(160,213,103),
endColor:new SuperMap.REST.ServerColor(44,104,50)
},
{
start:5,
end:6,
startColor:new SuperMap.REST.ServerColor(44,104,50),
endColor:new SuperMap.REST.ServerColor(29,135,59)
},
{
start:6,
end:7,
startColor:new SuperMap.REST.ServerColor(29,135,59),
endColor:new SuperMap.REST.ServerColor(118,154,49)
},
{
start:7,
end:8,
startColor:new SuperMap.REST.ServerColor(118,154,49),
endColor:new SuperMap.REST.ServerColor(204,175,27)
},
{
start:8,
end:9,
startColor:new SuperMap.REST.ServerColor(204,175,27),
endColor:new SuperMap.REST.ServerColor(198,63,2)
} ];
heatMapLayer.items = items;
这样我们就实现了自己的颜色渐变:

这样我们就可以使用热点图功能了,完整范例请见
http://www.supermap.com.cn:8090/iserver/iClient/forJavaScript/examples/heatmapLayer.html
http://www.supermap.com.cn:8090/iserver/iClient/forJavaScript/examples/heatmapColorSection.html
http://www.supermap.com.cn:8090/iserver/iClient/forJavaScript/examples/heatmapColorManual.html
GIS可视化——热点图的更多相关文章
- GIS可视化——麻点图
一.引言 目前在客户端绘制POI(Point of Interest,兴趣点)的方式主要是div(Marker的形式).svg.canvas.VML(后边三种就是Vector Layer)几种方式,这 ...
- GIS可视化
作为一名GIS专业的学生,一晃也毕业三年了,在supermap也呆了三年多了,做的最多的就是浏览器端的GIS展示,最近也想分享一下我们团队在浏览器端GIS可视化的一些成果,算是做个宣传吧!有用的着的可 ...
- 城市防汛应急管理智慧 Web GIS 可视化平台
前言 今年第 17 号台风"狮子山"(热带风暴级)登陆海南岛,受"狮子山"影响,海南岛北半部地区出现暴雨到大暴雨.局地特大暴雨.台风带来的强风雨导致海南岛多地树 ...
- 基于matplotlib的数据可视化 - 热图imshow
热图: Display an image on the axes. 可以用来比较两个矩阵的相似程度 mp.imshow(z, cmap=颜色映射,origin=垂直轴向) imshow( X, cma ...
- GIS可视化——属性图
一.简介 SuperMap iClient for JavaScript 提供了UTFGrid图层(属性图),用于客户端属性信息的快速交互. UTFGrid图层从UTFGrid切片数据源读取数据,其本 ...
- R实战之热点图(HeatMap)
快速实现是搜索帮助文档的首要目的,所以此处涉及实战的文章一概略去传统帮助文档的理论部分,直接上代码加注释! 本文将介绍R语言下利用ggplot2包制作heatmap的代码 -------------- ...
- GIS可视化——热点格网图
一.简介 原理:按照格网大小将区域进行划分,由一个矩形格网替代当前范围内的数据,由格网中心数字代替格网的权重(可以为格网中数据的数量,数据某权重的平均值.最大值.最小值等), 由格网之间颜色的不同表达 ...
- GIS可视化——聚散图
一.简介 随着计算机的发展,浏览器的不断进步与完善,现今大部分浏览渲染效率有了很大的改善, 但是由于浏览器厂商的不同,浏览器种类繁多,性能不一,并且很多用户还使用着不少老的浏览, 那些如IE6.7等的 ...
- Python的可视化包 – Matplotlib 2D图表(点图和线图,.柱状或饼状类型的图),3D图表(曲面图,散点图和柱状图)
Python的可视化包 – Matplotlib Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表.Matplotlib最早是为了可 ...
随机推荐
- WebService常用公共接口
Web Service 一些对外公开的网络服务接口 商业和贸易: 1.股票行情数据 WEB 服务(支持香港.深圳.上海基金.债券和股票:支持多股票同时查询) Endpoint: http://we ...
- PAT1039
小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子 ...
- Android EditText默认不弹出输入法,以及获取光标,修改输入法Enter键的方法
一.Android EditText默认不弹出输入法的办法:1. 在AndroidManifest.xml中将需要默认隐藏键盘的Activity中添加属性即可(常用此方法) android:windo ...
- Python 读取 pkl文件
使用python 的cPickle 库中的load函数,可以读取pkl文件的内容 import cPickle as pickle fr = open('mnist.pkl') #open的参数是pk ...
- Codeforces Round #241 (Div. 2) B dp
B. Art Union time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- Django使用js,css等静态文件的时候,出现mime类型问题
使用adminLTE模板, return render(request, 'AdminLTE/index.html') 的时候报如下错误且页面渲染异常,css没有效果: Resource interp ...
- 使用state改变的jsx监听不到数据变化的问题
当使用state来改变一个组件内部的虚拟dom的时候,该虚拟dom是无法监听到state数据的变化的,他只会绑定state改变dom当时的数据.
- 【09】node 之 fs流读写
前面我们已经学习了如何使用fs模块中的readFile方法.readFileSync方法读取文件中内容,及如何使用fs模块中的writeFile方法.writeFileSync方法向一个文件写入内容. ...
- Shell 环境中的输入输出重定向
Linux Shell 环境中的输入输出重定向,用符号<和>来表示.0.1和2分别表示标准输入.标准输出和标准错误. 1.重定向标准输出到文件: cat fo > foo.txt 2 ...
- hdu 1867 A+B again for you
A + B for you again Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...