当前位置: 首页 > article >正文

用Mapmost聚类图分析世界

聚类地图是一种数据可视化工具,能够帮助用户在地图上直观地显示大量地理数据点。当数据点过多时,单独显示每个点会使地图变得混乱,而聚类地图通过将相近的数据点聚集在一起,减少了视觉复杂性,便于分析和理解。聚类地图广泛应用于城市规划、市场分析等领域,而Mapmost提供了便捷的接口可以帮助用户快速生成一份聚类分析地图。

1. 根据分析目标获取数据集

首先根据要分析的对象,获取数据集并将其组织成GeoJson的格式,以2024年7月份的全国房价数据为例(数据来源于统计公报等网络公开信息),组织后的部分数据如下所示。

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "city": "上海",
        "price": 59992
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          121.473667,
          31.230525
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "city": "深圳",
        "price": 59855
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          114.057939,
          22.543527
        ]
      }
    },
    //......
  ]
}

2. 加载聚类图层

2.1. 加载数据

通过GeoJSON格式加载数据,并将其添加到地图中:

map.on('load', () => {
  map.addSource('clusters', {
    type: 'geojson',
    data: 'data.geojson',  	// 数据路径
    cluster: true,					// 是否聚类
    clusterMaxZoom: 14, 		//最大聚合层级,低于该层级不再聚合
    clusterRadius: 50, 			// 点聚合半径
    clusterProperties: {    // 聚类后的点的属性
      sum: ['+', ['get', 'price']],
      count: ['+', 1],
    }
  });
});

如上所示,聚类图层需要在加载数据源的时候打开聚类设置,聚类后点的属性由clusterProperties指定,其对应的值会由指定表达式累积计算。

2.2. 设置聚类图层样式

对添加的数据设置图层样式以可视化聚类结果:

map.addLayer({
  id: "clusters-single",
  type: "circle",
  source: "clusters",
  filter: ["!", ["has", "point_count"]],
  paint: {
    "circle-color": "#21984c",
    'circle-stroke-width': 6,
    'circle-stroke-color': 'rgba(33,152,76,0.4)',
    "circle-radius": 5,
  }
});
map.addLayer({
  id: 'cluster-single-text',
  type: 'symbol',
  source: 'clusters',
  filter: ['!', ['has', 'point_count']],
  layout: {
    "text-field": ['get', 'price'],
    'text-size': 12
  },
  paint: {
    "text-color": "#fff",
    "text-halo-color": "#333",
    "text-halo-width": 1,
  }
});
map.addLayer({
  id: "clusters",
  type: "circle",
  source: "clusters",
  filter: ["has", "point_count"],
  paint: {
    "circle-color": [
      "step", ["get", "point_count"],
      "#21984c", 50,
      "#e27530", 120,
      "#e61f16"
    ],
    'circle-stroke-width': 6,
    'circle-stroke-color': [
      'step', ['get', 'point_count'],
      'rgba(33,152,76,0.4)', 50,
      'rgba(226,117,84,0.4)', 120,
      'rgba(230,31,22,0.4)',
    ],
    "circle-radius": [
      "step", ["get", "point_count"],
      10, 20,
      20, 75,
      25, 150,
      30
    ],
  }
});
map.addLayer({
  id: "cluster-text",
  type: "symbol",
  source: "clusters",
  filter: ["has", "point_count"],
  layout: {
    "text-field": [
      'number-format',
      ['/', ['get', 'sum'], ['get', 'point_count']],
      { 'min-fraction-digits': 0, 'max-fraction-digits': 2 }
    ],
    "text-size": [
      'step', ['get', 'point_count'],
      10, 8,
      20, 14,
      25, 18,
      20
    ],
  },
  paint: {
    "text-color": "#fff",
    "text-halo-color": "#333",
    "text-halo-width": 1,
  }
});

如上所示,通过point_count属性可以区分当前渲染点是否是聚类点,对于聚类点和非聚类点我们可以采取不同的设置进行显示。对于非聚类点,我们直接显示出其对应价格,并设置一个默认的颜色。对于聚类点,我们可以通过point_count属性获取到当前聚类点是有多少个点聚合而成的,同时根据我们之前设定的聚类属性可以获取到其对应点簇的房价总和,进而计算出平均房价,通过这些值我们就可以很好的将一个区域附近的房价数据自动聚合计算。最终效果如下图所示:

3. 结语

聚类地图是一种有效的数据可视化工具,通过Mapmost的强大功能,我们可以轻松创建和展示聚类地图。这种地图的优势在于它能将复杂的数据以直观的方式呈现,使得用户能够快速理解数据分布情况。未来,我们可以进一步扩展聚类地图的功能,例如添加交互效果、过滤功能等,以满足更复杂的需求。


http://www.kler.cn/a/310512.html

相关文章:

  • Ai创作新风标!仅需三步,利用ai工具免费制作抖音爆款的动物融合视频(含完整的步骤)
  • windows C#-LINQ概述
  • WPF中MVVM工具包 CommunityToolkit.Mvvm
  • 基于matlab的CNN食物识别分类系统,matlab深度学习分类,训练+数据集+界面
  • [项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]
  • git status 命令卡顿的排查
  • python 实现eulers totient欧拉方程算法
  • 尤雨溪推荐的拖拽插件,支持Vue2/Vue3 VueDraggablePlus
  • 免费开源微信机器人 教程/文档/开发
  • 828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
  • WAAP解决方案:守护数字时代的安全盾牌
  • 从底层原理上解释clickhouse查询为什么快
  • istio中如何使用serviceentry引入外部服务
  • MySQL常用语句(一)
  • 【w0网页制作】Html+Css网页制作影视主题之庆余年Ⅱ含轮播表单(5页面附源码)
  • Android Room 数据库自动升级与迁移策略
  • 探索IT行业的无限潜力:技术、发展与职业前景
  • python 2024-9
  • 拓扑排序基础
  • Java项目实战II基于Java+Spring Boot+MySQL的大学城水电管理系统(源码+数据库+文档)
  • Kafka性质小结
  • 学习使用SQL Server Management Studio (SSMS)
  • 计算机毕业设计 办公用品管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 期货量化跟单系统演示
  • Leetcode Hot 100刷题记录 -Day17(搜索二维矩阵II)
  • 如何在Windows系统上使用谷歌浏览器进行远程工作