之前后台有粉丝留言,问怎么做热力图。方法很多,首当其冲大杀器 ArcMap,用 ArcToolBox 里的「插值工具」、「核密度分析」就能实现。
毕竟是专业工具,功能确实强大,但用户体验有时候就差点意思。比如要设置参数,像元大小和搜索半径之类的,像元设置大了,出来的结果可能就是满屏马赛克,像元设置小了,计算时间太长,你等了老半天,最后还提醒失败了。总之体验太差!
于是我又到网上找了找热力图制作的相关工具,不乏好东西,但不是要注册,就是要付费,太麻烦了,我只是想用完就走,不留下一片云彩。
头脑一热,是时候展现开发能力的时候了,自己怼一个!!!白天要上班没时间,于是花了几个晚上加上周末,撸了个网页版热力图制作工具,目前他长这样。
「阅读原文」可访问,但强烈建议在 PC 浏览器上使用该工具。链接为 https://www.gisclouder.com/heat/#。
01
功能说明
1.底图切换
为了迎合不同人的口味,或者不同场景下的应用需求,工具里提供了三种风格的地图,如果还觉得不够~~~嗯?w(゚Д゚)w
2.添加数据
我想对于很多非专业人士来说,兴趣点的坐标获取是个头疼的事。所以在“添加数据”操作面板里,我加了一个区域选择的功能,你只要选择你的研究区域,输入对应位置的值,坐标问题就交给程序吧。
当你选择全国时,列表里会展示全国所有省份;如果你选择单个省份,列表里会显示该省下所有城市,当然你还可以选择多个省份,这样列表里就会显示你选择的所有省份的下属城市。
最后在城市后面的文本框里输入对应的值,完成所有值的输入后,点下「生成热力图」按钮就可以制作热力图了。
3.导入数据
在线添加数据的办法,适合少量数据录入,如果数据量较大,你可以在“导入数据”操作面板里,上传 excel 表格。当然表格的格式程序要和你约定好,所以你需要点击“下载模板”按钮,查看一下 excel 的字段要求。
其中「x, y, weight」三个字段是必须的,且名称不能修改,分别是兴趣点的「经度、纬度、属性值」,description 字段对于程序来说没有实际用处,主要是帮你记录一些标记信息。
特别的,你可以在“添加数据”操作里选择一个或多个兴趣区域,这样当你下载模板时,程序会将你选择区域的经纬度坐标,以及区域名称添加到模板中,方便你在本地编辑 weight 字段。
模板文件编辑完成后,点击“上传文件”就可以将数据导入,点击“生成热力图”按钮即可完成制作。
4.热力图样式调整
数据编辑完成,点击“生成热力图”按钮后,你就能看到叠加在地图上的热力图了,这时你可以拖动「半径」和「模糊」两个滑条,感受一下热力图的变化吧。
至于「半径」和「模糊」这两个参数的含义,不太能说的清楚,你们看看下面的动图,体会一下吧。
5.试试样例数据
手里没有数据也想体验一下,热力图效果?没问题,我贴心准备了样例数据,有两种类型,即城市最新的温度、湿度。效果如下:
体验步骤就是,先选择兴趣区域,然后在“试试样例数据”下拉菜单中选择一种数据类型,数据获取完成后,点击生成按钮即可。
2019-07-25-全国湿度
2019-07-25-全国温度
02
其它一些说明
1.关于技术栈
前端「vue + openlayers」,没有后端服务,准确来说没有后台服务接口,所有操作都是通过前端实现的,包括文件下载和上传功能,所以不必担心数据安全问题,网页是通过 Nginx 发布的,行政区划数据和样例数据是通过第三方开放接口获取的。
2.移动端适配
此时你多半是用手机看这篇文章。这个工具我也在移动端上努力适配了一下,勉强能看,我自己是不太满意的,目前长这样:
我毕竟是个半路出家的「野鸡前端」,能力有限,从体验上来说远没有 PC 浏览器上好,所以强烈建议你在 PC 浏览器上使用该工具(还有能不用 IE浏览器么!)。
3.关于性能
考虑到热力图数据的特殊性,数据量一般来说都不会小,于是我整了一个有 14681 条记录的数据表,传到工具中,实话实话确实有点卡顿,一是数据在列表显示时,另外就是在点击“生成热力图”按钮后,热力图生成过程有点慢。好在不长的等待后,也出了结果,效果如下:
我用的是自己的笔记本,使用 Chrome 浏览器,物理内存 8g,使用工具时之前内存占用已经有 88% 了。以上数据供参考,性能还在不断优化中。
4.最后申明
该工具仅供于技术交流和学习使用,请不要滥用资源,一旦发现恶意访问,对应 IP 地址会上黑名单哦。
如果发现工具 bug 或者有好的建议,欢迎与作者联系,一起燥起来。