空间分析
Turf.js 中的空间分析提供用于聚类、统计分析和模式检测的高级地理空间操作。本节涵盖从地理数据分布和关系中提取洞察的专门分析函数。有关基本几何操作,请参阅 Geometric Operations。
空间分析函数概述
Turf.js 提供三类主要的空间分析能力:
- packages/turf-clusters-kmeans/package.json
- packages/turf-clusters-dbscan/package.json
- packages/turf-clusters/package.json
- packages/turf-standard-deviational-ellipse/package.json
- packages/turf-center-median/package.json
空间分析函数基于 Turf.js 核心基础设施构建,提供高级分析能力。每个类别通过专门的算法和数据结构解决特定的空间分析需求。
有关特定分析类型的详细信息,请参阅:
- Clustering - 包括 K-means 和 DBSCAN 的点聚类算法
- Grid Generation - 创建用于分析的结构化空间网格
- Statistical Analysis - 分布分析、中心计算和空间统计
与核心模块集成
空间分析函数与 Turf.js 核心基础设施广泛集成:
空间分析数据流
- packages/turf-clusters-kmeans/package.json79-87
- packages/turf-clusters-dbscan/package.json79-87
- packages/turf-standard-deviational-ellipse/package.json71-80
- packages/turf-center-median/package.json70-78
核心模块依赖
|| 模块 | 依赖 | 用途 | || --- | --- | --- | || @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 | 迭代中位数中心计算 |
- packages/turf-clusters-kmeans/package.json79-87
- packages/turf-clusters-dbscan/package.json79-87
- packages/turf-standard-deviational-ellipse/package.json71-80
- packages/turf-center-median/package.json70-78
形状分析
形状分析生成表示点集模式或边界的几何体。
凹包
凹包通过允许边界中的"凹陷"来创建比凸包更紧密的点边界。
- packages/turf-concave/package.json
- packages/turf-concave/index.ts42-76
- packages/turf-concave/README.md
凹包实现:
- 使用不规则三角网(TIN)作为基础
- 基于边长过滤三角形
- 合并剩余三角形形成包
- 如果无法计算有效包则返回 null
使用示例:
const hull = turf.concave(points, {
maxEdge: 2, // 最大边长
units: 'kilometers' // maxEdge 的单位
});椭圆生成
从中心点创建椭圆多边形,给定两个半轴和可选参数。
椭圆函数:
- 创建椭圆形状的多边形
- 支持旋转角度指定
- 通过 steps 参数可自定义分辨率
- 支持轴长度的不同单位
使用示例:
const ellipse = turf.ellipse(center, 5, 3, {
units: 'kilometers', // 轴长度的单位
steps: 64, // 顶点数
angle: 45 // 旋转角度(度)
});布尔空间分析
布尔空间操作测试几何之间的拓扑关系,返回 true 或 false。
- packages/turf-boolean-contains/package.json
- packages/turf-boolean-within/package.json
- packages/turf-boolean-overlap/package.json
- packages/turf-boolean-disjoint/package.json
关键布尔操作:
|| 函数 | 描述 | 反向操作 | || --- | --- | --- | || 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 组件集成:
- packages/turf-nearest-point-to-line/package.json
- packages/turf-point-to-line-distance/package.json
- packages/turf-clone/package.json
- packages/turf-projection/package.json
有关涉及网格和插值的相关空间分析技术的信息,请参阅 Grids and Interpolation。