Skip to content

空间分析

Turf.js 中的空间分析提供用于聚类、统计分析和模式检测的高级地理空间操作。本节涵盖从地理数据分布和关系中提取洞察的专门分析函数。有关基本几何操作,请参阅 Geometric Operations

空间分析函数概述

Turf.js 提供三类主要的空间分析能力:

SVG
100%

空间分析函数基于 Turf.js 核心基础设施构建,提供高级分析能力。每个类别通过专门的算法和数据结构解决特定的空间分析需求。

有关特定分析类型的详细信息,请参阅:

与核心模块集成

空间分析函数与 Turf.js 核心基础设施广泛集成:

空间分析数据流

SVG
100%

核心模块依赖

|| 模块 | 依赖 | 用途 | || --- | --- | --- | || @turf/clusters-kmeans | @turf/clone, @turf/helpers, @turf/invariant, @turf/meta, skmeans | 带点克隆和迭代的 K-means 聚类 | || @turf/clusters-dbscan | @turf/clone, @turf/distance, @turf/helpers, @turf/meta, rbush | 带空间索引的 DBSCAN 聚类 | || @turf/standard-deviational-ellipse | @turf/center-mean, @turf/ellipse, @turf/helpers, @turf/invariant, @turf/meta, @turf/points-within-polygon | 统计椭圆生成 | || @turf/center-median | @turf/center-mean, @turf/centroid, @turf/distance, @turf/helpers, @turf/meta | 迭代中位数中心计算 |

形状分析

形状分析生成表示点集模式或边界的几何体。

凹包

凹包通过允许边界中的"凹陷"来创建比凸包更紧密的点边界。

SVG
100%

凹包实现:

  • 使用不规则三角网(TIN)作为基础
  • 基于边长过滤三角形
  • 合并剩余三角形形成包
  • 如果无法计算有效包则返回 null

使用示例:

const hull = turf.concave(points, {
  maxEdge: 2, // 最大边长
  units: 'kilometers' // maxEdge 的单位
});

椭圆生成

从中心点创建椭圆多边形,给定两个半轴和可选参数。

SVG
100%

椭圆函数:

  • 创建椭圆形状的多边形
  • 支持旋转角度指定
  • 通过 steps 参数可自定义分辨率
  • 支持轴长度的不同单位

使用示例:

const ellipse = turf.ellipse(center, 5, 3, {
  units: 'kilometers', // 轴长度的单位
  steps: 64, // 顶点数
  angle: 45 // 旋转角度(度)
});

布尔空间分析

布尔空间操作测试几何之间的拓扑关系,返回 true 或 false。

SVG
100%

关键布尔操作:

|| 函数 | 描述 | 反向操作 | || --- | --- | --- | || booleanContains | 测试第二个几何是否完全在第一个几何内 | N/A | || booleanWithin | 测试第一个几何是否完全在第二个几何内 | booleanContains | || booleanOverlap | 测试几何是否有部分重叠(不完全包含) | N/A | || booleanDisjoint | 测试几何是否没有重叠 | 所有其他布尔函数 |

使用示例:

// 如果 B 完全在 A 内,则 A 包含 B
const contains = turf.booleanContains(polygonA, polygonB);

// A 在 B 内与 B 包含 A 相同
const within = turf.booleanWithin(polygonA, polygonB);

// 重叠意味着部分交集而不完全包含
const overlaps = turf.booleanOverlap(polygonA, polygonB);

// 不相交意味着完全没有重叠
const isDisjoint = turf.booleanDisjoint(polygonA, polygonB);

与其他 Turf 组件集成

空间分析函数通常基于核心模块构建,并与其他 Turf.js 组件集成:

SVG
100%

有关涉及网格和插值的相关空间分析技术的信息,请参阅 Grids and Interpolation