mcpField
C
carto-spatial-autocorrelation

carto-spatial-autocorrelation

github.com/cartodb数据与数据库653 次安装1 周前更新
代码仓库

关于 carto-spatial-autocorrelation

carto-spatial-autocorrelation 指导使用 CARTO 工作流计算 Moran's I,判断数值的空间聚集、离散或随机分布,并为位置分类。适用于空间数据分析人员,可按邻域和距离衰减设置分析参数。

主要功能

  1. 01计算局部 Moran's I 与显著性
  2. 02按 HH、HL、LH、LL 分类
  3. 03使用 H3 或 Quadbin 空间索引
  4. 04配置邻域半径与距离衰减
  5. 05筛选显著区域并保存结果

适用场景

  1. 01识别相似数值的空间聚集
  2. 02发现高低值空间异常点
  3. 03分析兴趣点的空间分布
  4. 04比较不同邻域参数下的结果

MCP 相关

该技能指导构建 CARTO 工作流;连接 MCP 服务时,可使用 `create_workflow`、`validate_workflow` 和 `run_workflow` 等工具,也可使用 CLI。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cartodb/agent-skills --skill carto-spatial-autocorrelation

安装后在 Claude Code 中输入/carto-spatial-autocorrelation确认已加载。

详细介绍

使用 Moran's I 进行空间自相关分析

构建 CARTO 工作流,使用 Moran's I 衡量空间自相关,判断变量是否呈现聚类、离散或随机分布,并将每个位置划分到 HH/HL/LH/LL 象限。

前提条件:加载 carto-create-workflow,了解开发流程、JSON 结构和验证命令——它涵盖两种访问路径(已连接时使用 MCP 服务的工作流工具,例如 create_workflow、validate_workflow 和 run_workflow;否则使用 carto workflows CLI;路由信号见 carto-basics/references/access-paths.md)。

何时使用 Moran's I,何时使用 Getis-Ord Gi*:

  • Moran's I:“是否存在聚类?”+ 将聚类划分为不同类型(HH、HL、LH、LL)+ 识别空间离群值(HL、LH)
  • Getis-Ord Gi*:“热点/冷点在哪里?”+ 聚类程度(z 分数)

说明

Moran's I 工作流遵循以下流程:

Source Data -> (Filter) -> Spatial Indexing (H3) -> Aggregation -> Moran's I -> (Filter Significant) -> Save
步骤 1:加载源数据

使用 native.gettablebyname。输入表通常包含点几何或预先建立索引的网格数据。

成功条件:节点输出一个包含几何列(例如 geom)或现有空间索引列的表。

步骤 2:筛选(如有需要)

使用 native.wheresimplified 或 native.where 缩小数据集范围(例如按类别、日期范围或非空值筛选)。

成功条件:输出仅包含与分析相关的子集。

步骤 3:建立空间索引

使用 native.h3frompoint 将点几何转换为 H3 单元格。

分辨率指南——分辨率越高 = 单元格越小 = 模式越局部:

分辨率单元格大小使用场景
H3 res 7边长约 5 km区域/城市级模式
H3 res 8边长约 2 km街区级
H3 res 9边长约 500 m街道级(柏林 POI 教程中使用)

成功条件:每一行都包含空间索引列(例如 h3)。

步骤 4:按单元格聚合

使用 native.groupby,为每个单元格生成一行,并包含一个数值:

  • 分组依据:空间索引列(h3)
  • 聚合:geoid,count(或 value_col,sum / value_col,avg)

成功条件:输出中每个唯一单元格恰好有一行,并包含一个数值列(例如 geoid_count)。

步骤 5:运行 Moran's I

使用 native.moransi,并设置以下参数:

输入说明默认值
indexcol包含 H3/Quadbin 索引的列h3
valuecol用于检测自相关的数值列geoid_count
sizeK 环邻域半径(跳数)3
decay空间权重的距离衰减函数uniform

衰减选项:uniform、inverse、inverse_square、exponential。

  • uniform:K 环内所有邻居的权重相同
  • exponential:权重随距离呈指数递减(柏林 POI 教程中使用)

K 环大小:越大 = 邻域范围越广 = 全局模式越平滑。越小 = 评估越局部。邻域大小的选择会显著影响结果。

成功条件:输出包含每个单元格对应的 index、morans_i、p_value 和 quadrant 列。(请参阅“注意事项”中的提供方大小写说明——Snowflake 会以大写形式显示这些列名。)

步骤 6:筛选显著结果(建议)

使用 native.where,仅保留具有统计显著性的单元格。象限分类仅对显著单元格有意义。

常见筛选条件:

  • p_value < 0.05——所有显著单元格(95% 置信度)
  • p_value < 0.05 AND quadrant = 'HH'——仅保留高值聚类
  • p_value < 0.05 AND (quadrant = 'HL' OR quadrant = 'LH')——仅保留空间离群值

成功条件:仅保留具有统计意义的空间模式单元格。

步骤 7:保存

使用 native.saveastable 持久化结果。无需转换几何,H3/Quadbin 列即可直接在 CARTO Builder 中可视化。

成功条件:工作流通过验证后,可通过 create_workflow(MCP)或 carto workflows create(CLI)上传。


输出列

列含义
index空间索引单元 ID(H3 或 Quadbin)
morans_i局部 Moran's I 值——正值表示邻近单元相似,负值表示邻近单元不同
p_value统计显著性——值越低,置信度越高
quadrant聚类分类:HH、HL、LH 或 LL
解读结果

全局 Moran's I(整体模式):

  • > 0 = 空间聚类(相似值彼此相邻)
  • < 0 = 空间离散(不同值彼此相邻)
  • 接近 0 = 空间随机分布

局部象限(逐单元分类):

象限含义解读
HH高值被高值包围聚类核心
LL低值被低值包围低值聚类
HL高值被低值包围空间异常值(高异常)
LH低值被高值包围空间异常值(低异常)

注意事项

  • 提供商大小写规则和 SQL 方言。 此技能中的列名采用小写(BigQuery / Databricks / Postgres / Redshift 惯例)。在 Snowflake 上,未加引号的标识符会以大写形式显示——在表达式中请使用 H3、INDEX、MORANS_I、P_VALUE、QUADRANT、GEOID_COUNT。有关大小写规则和 SQL 方言对应关系,请参阅 carto-create-workflow/references/providers/<provider>.md。
  • Moran's I 组件需要 Analytics Toolbox。离线验证无法解析 AT 位置——运行前请通过远程验证确认:通过 MCP 使用 validate_workflow 的 method: verify,或在 CLI 上运行 carto workflows verify-remote --connection <conn>。
  • 输出列名为 index,而不是 h3 或 quadbin。如果需要与原始数据联接,请重命名该列(例如使用 native.renamecolumn)。
  • valuecol 必须是数值型。如果要统计要素数量,分组步骤必须生成计数列——不要将原始索引列作为值传入。
  • 分辨率过高且区域过大 = 单元数量极多,可能导致运行缓慢或超出内存限制。请从中等分辨率开始,再逐步细化。
  • Moran's I 对邻域定义很敏感。k 环大小和衰减函数的选择都会实质性地影响结果。请记录所选参数,并考虑测试其他选项。
  • 象限分类只有对统计显著的单元才有意义。解读象限前,请务必按 p_value 筛选——不显著的单元可能会因偶然而显示任意象限标签。
  • 衰减输入参数名为 decay(不是 kernel)。如有疑问,请检查组件架构。

参考模板

资源描述
BQ 教程计算柏林 POI 位置的空间自相关(BigQuery)
SF 教程Snowflake 版同一教程
工作流模板“计算兴趣点位置的空间自相关”(可在 CARTO Workspace 中使用)

常见变体

变体方法
预索引数据如果数据已有 H3/Quadbin 列,则跳过步骤 3
使用多边形而非点作为输入使用 native.h3polyfill 而不是 native.h3frompoint
完整网格(无空缺)先对研究区域边界进行 Polyfill,再用数据丰富网格(与热点分析采用相同方法)
与 Getis-Ord 结合对同一聚合网格运行两种分析,然后联接结果,以获得更全面的分析
仅筛选异常值保留 HL 和 LH 象限,以查找异常位置

评论

支持 Markdown