数据寻龙点穴(空间聚集分析) - 阿里云RDS PostgreSQL最佳实践

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介:

标签

PostgreSQL , Greenplum , PostGIS , K-Mean , 热力图


背景

最近鬼吹灯热播,胡八一的《十六字阴阳风水秘术》到底是什么武功秘籍?寻龙点穴又是什么?别问我,不知道。

pic

PS:截取自互联网。- 寻龙点穴是风水学术语。古人说:三年寻龙,十年点穴。意思就是说,学会寻龙脉要很长的时间,但要懂得点穴,并且点得准则难上加难,甚至须要用“十年”时间。 但是,若没正确方法,就是用百年时间,也不能够点中风水穴心聚气的真点,这样一来,寻龙的功夫也白费了。 准确地点正穴心,并不是一件容易的事,对初学者来说如此,就是久年经验老手,也常常点错点偏。

pic

但是,我们要相信科学的力量,如今大数据、AI这么发达,实际上我们可以在海量数据的情况下总结经验,和前人通过古老的夜观星象总结的经验可能会出现惊人的相似。

我们有海量的人物活动数据、汽车活动数据、传感器数据等等。完全可以分析出来什么样的地方适合居住,什么样的地方适合做生意,等等。

扯远了,我们回到主题 - 空间数据寻龙点穴。实际上就是PostGIS 2.3的两个新特性,空间数据的聚集分析。

例如我们有人物活动的点数据组成的海量数据,通过空间聚集分析,可以汇聚出指定时间段,数据聚集的热力图。是不是和寻龙点穴有点相似呢?

pic

pic

pic

空间聚集窗口分析函数

鬼吹灯中有一段关于“龟眠之地”的描述:

我掏出《十六字阴阳风水秘术》翻了翻,找到一段“龟眠之地”的传说,书中记载,当年有人在海边,见到海中突然浮出一座黑山,再细观之,原来是数十只老龟,驮负着一头死去的巨龟自海中而出,这些老龟把死龟驮至一处山崖下地洞穴里藏好,这才陆续离去游回大海,偷偷看到这一切的那个人,擅长相地择穴之术,知道此穴乃是四灵所钟。洞中“龙气冲天”,其时正好他家中有先人故去,于是他探明洞中龟尸的特形后,把自己的先人不用棺椁裸身葬入其中。此后这个人飞黄腾达、平步青云,成就了一方霸业。那处龟眠洞日后就成了他家宗室的专用慕穴,数百年后龙气已尽,地崩,露出尸体无数,当地人争相围观,所有尸身皆生鸟羽龙鳞,被海风吹了一天一夜之后,全部尸体同时化为乌有。

鬼吹灯和数据分析有什么关联呢?必须有啊,你想想,古人为了找到一块“龟眠之地”得费劲多少心思了。而现在我们有了数据,是不是很好找了呢。

假设我们的数据包含这些维度:

1、时间

2、人物位置

3、人物属性(收入、行业、年龄、等等)

好了,想象一下,你是不是可以按人物属性、时间,对数据进行空间聚集分析。生成不同分析维度的人群热力图。颇有寻龙点穴范。

那么怎么做空间数据的聚集分析呢?

PostGIS 2.3 新增了两个窗口函数,就是用于

1、基于Density-based spatial clustering of applications with noise (DBSCAN) 算法的空间数据聚集分析函数ST_ClusterDBSCAN

pic

2、基于 k-means 算法的空间数据聚集分析函数ST_ClusterKMeans

pic

有意思吧。

pic

例子

1、

 -- Partitioning parcel clusters by type  
SELECT ST_ClusterKMeans(geom,3) over (PARTITION BY type) AS cid, parcel_id, type  
FROM parcels;  
-- result  
 cid | parcel_id |    type  
-----+-----------+-------------  
   1 | 005       | commercial  
   1 | 003       | commercial  
   2 | 007       | commercial  
   0 | 001       | commercial  
   1 | 004       | residential  
   0 | 002       | residential  
   2 | 006       | residential  
(7 rows)  

2、

SELECT name, ST_ClusterDBSCAN(geom, eps := 50, minpoints := 2) over () AS cid  
FROM boston_polys  
WHERE name > '' AND building > ''  
	AND ST_DWithin(geom,  
        ST_Transform(  
            ST_GeomFromText('POINT(-71.04054 42.35141)', 4326), 26986),  
           500);  

st_union 空间对象聚合

前面提到的两个窗口函数只是生产每条记录所属的聚集ID,按这个聚集ID在聚合,就可以聚合成一个个的几何对象(例如点集),通过点集再可以生成sufface。

http://postgis.net/docs/manual-dev/ST_MemUnion.html

http://postgis.net/docs/manual-dev/ST_Union.html

空间聚集分析业务场景

空间聚集分析窗口函数,非常有助于基于人物、被检测对象在时间、空间、对象属性等多种维度层面的空间聚集透视。

关于多维数据透视,也可以参考我以前写的文章。

《时间、空间、对象多维属性 海量数据任意多维 高效检索 - 阿里云RDS PostgreSQL最佳实践》

实际上除了这两个窗口分析函数,PostgreSQL还提供了MADlib机器学习库,通过SQL接口、R接口(pitovalR)、Python接口可以进行调用,利用数据库的分析能力完成数据透视和编程的易用性(海量数据有MPP,中等体量有PG的多核并行计算、向量计算、JIT等大幅度提升计算能力的特性)。

阿里云相关数据库产品

阿里云 RDS PostgreSQL

阿里云 HybridDB for PostgreSQL

参考

http://planet.postgis.net/index.html

http://postgis.net/docs/manual-dev/ST_ClusterKMeans.html

https://en.wikipedia.org/wiki/K-means_clustering

http://postgis.net/docs/manual-dev/ST_ClusterDBSCAN.html

http://planet.qgis.org/planet/tag/postgis/

http://2012.ogrs-community.org/2012_papers/d3_10_bonin_presentation.pdf

http://www.waurisa.org/conferences/2009/presentations/Tues/OpenSourceWebModelingAndVisualization_Tues_Vennemann_TerraGIS.pdf

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
4月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
922 152
|
4月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
764 156
|
4月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
4月前
|
SQL 关系型数据库 MySQL
阿里云的云数据库RDS简介
阿里云关系型数据库RDS(Relational Database Service)是一种安全稳定、高性价比、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供容灾、备份、恢复、监控、迁移等全套解决方案,帮助用户轻松应对数据库运维挑战。RDS具备高可用性、高安全性、轻量运维和弹性伸缩等优势,适用于各类业务场景,助力企业降低成本、提升效率。
|
消息中间件 关系型数据库 Kafka
一种小资源情况下RDS数据实时同步StarRocks方案
使用一台4C8 G服务器轻松实现2个MySQL实例中通过负责分库分表规则之后的5000多张表的数据实时同步到StarRocks
596 67
|
11月前
|
关系型数据库 数据库 数据安全/隐私保护
云数据库实战:基于阿里云RDS的Python应用开发与优化
在互联网时代,数据驱动的应用已成为企业竞争力的核心。阿里云RDS为开发者提供稳定高效的数据库托管服务,支持多种数据库引擎,具备自动化管理、高可用性和弹性扩展等优势。本文通过Python应用案例,从零开始搭建基于阿里云RDS的数据库应用,详细演示连接、CRUD操作及性能优化与安全管理实践,帮助读者快速上手并提升应用性能。
|
12月前
|
SQL 人工智能 关系型数据库
【PG锦囊】阿里云 RDS PostgreSQL 版插件—AI 插件(rds_ai)
本文介绍了AI 插件(rds_ai)的核心优势、适用场景等,帮助您更好地了解 rds_ai 插件。想了解更多 RDS 插件信息和讨论交流,欢迎加入 RDS PG 插件用户专项服务群(103525002795)

相关产品

  • 云数据库 RDS
  • 云数据库 RDS PostgreSQL 版
  • 云数据库 RDS MySQL 版
  • 推荐镜像

    更多