模块分类
目的和范围
本文档解释了 Turf.js 模块根据其操作目的进行的七种不同功能组分类。Turf.js monorepo 中的 100+ 个包按其执行的地理空间操作类型组织,从基本测量到复杂几何算法。这种分类有助于用户发现适合其用例的模块并了解库的操作能力。
有关支持所有分类的基础工具的信息,请参阅 基础模块。有关模块如何跨层级相互依赖的详细信息,请参阅 依赖层次。
分类概述
Turf.js 模块被组织成七个功能类别,每个类别服务于不同的操作领域。所有类别都依赖基础层(@turf/helpers、@turf/meta、@turf/invariant),在 基础模块 中描述。
测量模块
测量模块计算地理特征的定量属性,包括距离、方位角、面积和长度。这些模块通常使用 WGS84 椭球体实现测地线计算。
核心测量操作
模块列表
| 模块 | 描述 | 关键依赖 |
|---|---|---|
@turf/distance | 两点之间的测地线距离 | @turf/helpers, @turf/invariant |
@turf/bearing | 点之间的地理方位角 | @turf/helpers, @turf/invariant |
@turf/destination | 从原点、距离和方位角计算目标点 | @turf/helpers, @turf/invariant |
@turf/along | 线上指定距离处的点 | @turf/bearing, @turf/destination, @turf/distance |
@turf/area | 多边形的测地线面积,单位为平方米 | @turf/helpers, @turf/meta |
@turf/length | LineString 的总长度 | @turf/helpers, @turf/meta |
@turf/bbox | 计算边界框 | @turf/helpers, @turf/meta |
@turf/midpoint | 两点之间的中点 | @turf/bearing, @turf/destination, @turf/distance |
布尔谓词模块
布尔谓词模块在几何体之间执行空间关系测试,返回 true 或 false。这些模块实现 DE-9IM 空间模型中的标准拓扑谓词。
布尔操作映射
谓词类别
| 类别 | 模块 | 典型用例 |
|---|---|---|
| 包含 | boolean-contains, boolean-within, boolean-point-in-polygon | 确定特征是否在边界内/外 |
| 相交 | boolean-intersects, boolean-crosses, boolean-overlap | 检测几何重叠或交叉 |
| 分离 | boolean-disjoint, boolean-touches | 测试空间分离或邻接 |
| 等价 | boolean-equal | 比较几何体是否相等 |
| 验证 | boolean-valid, boolean-clockwise, boolean-concave | 验证几何属性 |
| 线关系 | boolean-parallel, boolean-point-on-line | 测试线性特征关系 |
变换模块
变换模块修改特征的几何体或坐标,而不改变其基本结构。这些操作包括坐标操作、形状修改和精度控制。
变换操作
模块特征
| 模块 | 输入类型 | 输出类型 | 外部依赖 |
|---|---|---|---|
@turf/buffer | Point/Line/Polygon | Polygon | @turf/jsts, d3-geo |
@turf/simplify | Line/Polygon | Line/Polygon | @turf/clean-coords |
@turf/truncate | 任意 Feature | 相同 Feature | 无 |
@turf/flip | 任意 Feature | 相同 Feature | @turf/clone, @turf/meta |
@turf/clean-coords | Line/Polygon | Line/Polygon | 无 |
@turf/transform-rotate | 任意 Feature | 相同 Feature | @turf/clone, @turf/meta |
@turf/transform-scale | 任意 Feature | 相同 Feature | @turf/clone, @turf/meta |
@turf/transform-translate | 任意 Feature | 相同 Feature | @turf/clone, @turf/meta |
几何操作
几何操作对特征执行复杂的算法变换,包括布尔操作、包络计算和线处理。这些模块通常依赖外部计算几何库。
布尔集合操作
包络和包围盒操作
线处理模块
| 模块 | 操作 | 依赖 |
|---|---|---|
@turf/line-split | 按点或线分割线 | @turf/meta, @turf/nearest-point-on-line |
@turf/line-segment | 将线分解为段 | @turf/meta |
@turf/line-chunk | 将线分成等长块 | @turf/meta, @turf/length |
@turf/line-intersect | 查找相交点 | sweepline-intersections |
@turf/line-overlap | 查找重叠部分 | @turf/meta |
@turf/line-offset | 平行偏移线 | @turf/meta |
@turf/line-slice | 提取点之间的线段 | @turf/nearest-point-on-line |
@turf/line-slice-along | 按距离提取线段 | @turf/along, @turf/length |
复杂多边形操作
| 模块 | 描述 | 关键外部库 |
|---|---|---|
@turf/union | 组合多个多边形 | polyclip-ts |
@turf/intersect | 查找共享多边形区域 | polyclip-ts |
@turf/difference | 从另一个多边形减去一个 | polyclip-ts |
@turf/concave | 生成凹包 | topojson-server, topojson-client |
@turf/convex | 生成凸包 | concaveman |
@turf/unkink-polygon | 修复自相交 | rbush |
@turf/mask | 创建反转多边形 | polyclip-ts |
@turf/dissolve | 按属性合并多边形 | polyclip-ts |
@turf/polygonize | 从线创建多边形 | @turf/jsts |
@turf/tesselate | 多边形三角剖分 | earcut |
@turf/voronoi | Voronoi 图 | d3-delaunay |
网格生成模块
网格生成模块创建边界框区域的规则镶嵌。这些模块产生按几何模式排列的多边形或点的 FeatureCollections。
网格类型和实现
网格模块规格
| 模块 | 单元格形状 | 参数 | 特殊依赖 |
|---|---|---|---|
@turf/hex-grid | 正六边形 | cellSide, units, triangles 选项 | @turf/distance, @turf/intersect |
@turf/square-grid | 正方形 | cellSide, units, mask 选项 | @turf/rectangle-grid |
@turf/triangle-grid | 等边三角形 | cellSide, units, mask 选项 | @turf/distance, @turf/intersect |
@turf/point-grid | 不适用(点) | cellSide, units, mask 选项 | @turf/boolean-within, @turf/distance |
@turf/rectangle-grid | 自定义矩形 | cellWidth, cellHeight, units | 无(基础实现) |
单元格大小和单位
所有网格模块都接受单元格大小参数和单位选项。支持的单位包括:
'miles'- 法定英里'kilometers'- 公制公里'degrees'- 十进制度数'radians'- 角度弧度'meters'、'centimeters'、'feet'等
单位转换由 @turf/helpers 函数 convertLength() 和 convertArea() 处理。
聚类和分析模块
聚类和分析模块对地理空间特征执行统计操作、数据插值和模式分析。这些模块通常使用空间索引来提高性能。
聚类算法
中心计算
插值和等高线生成
| 模块 | 目的 | 算法/库 | 输出 |
|---|---|---|---|
@turf/interpolate | 为未采样位置估计值 | 反距离加权 | 带有插值值的点网格 |
@turf/isolines | 生成等高线 | marchingsquares 库 | 指定级别的 LineString 等高线 |
@turf/isobands | 生成填充等高线多边形 | marchingsquares 库 | 值范围之间的多边形带 |
@turf/tin | 三角化不规则网络 | Delaunay 三角剖分 | 用于表面建模的多边形三角形 |
@turf/planepoint | 从 TIN 表面插值 | 平面插值 | 点处的估计 z 值 |
统计分析模块
| 模块 | 分析类型 | 依赖 |
|---|---|---|
@turf/standard-deviational-ellipse | 方向分布 | @turf/center-mean, @turf/ellipse |
@turf/nearest-neighbor-analysis | 空间聚类测试 | @turf/distance |
@turf/moran-index | 空间自相关 | @turf/distance-weight |
@turf/quadrat-analysis | 点模式分析 | @turf/square-grid |
数据操作模块
数据操作模块在不执行几何计算的情况下重构 GeoJSON 数据。这些操作转换特征集合、聚合属性或修改特征类型。
结构转换
属性聚合
数据操作
| 模块 | 操作 | 输入 | 输出 | 用例 |
|---|---|---|---|---|
@turf/flatten | 展平 Multi* 几何体 | MultiPoint/MultiLineString/MultiPolygon | 多个单几何体 | 简化处理结构 |
@turf/explode | 提取所有坐标 | 任意特征 | 每个坐标一个 Point | 获取所有顶点 |
@turf/combine | 按几何类型合并 | 混合 FeatureCollection | 按类型的 Multi* 特征 | 分组相关特征 |
@turf/collect | 将点值聚合到多边形中 | Points + Polygons | 带有聚合属性的多边形 | 按区域汇总数据 |
@turf/tag | 将多边形属性传递给点 | Points + Polygons | 带有多边形属性的 Point | 空间连接操作 |
@turf/clone | 深度复制特征 | 任意特征 | 独立副本 | 保留原始数据 |
@turf/sample | 随机子集 | FeatureCollection | 子集 FeatureCollection | 统计采样 |
@turf/random | 生成随机特征 | 无 | 随机 Point/Line/Polygon | 测试和模拟 |
线和多边形转换
| 模块 | 转换 | 依赖 |
|---|---|---|
@turf/line-to-polygon | LineString → Polygon | 验证闭合 |
@turf/polygon-to-line | Polygon → LineString | 提取环 |
@turf/bezier-spline | LineString → 平滑曲线 | 三次 Bézier 插值 |
@turf/polygon-smooth | Polygon → 平滑多边形 | Chaikin 算法 |
分类使用模式
典型模块组合模式
以下模式代表组合多个类别中模块的常见工作流:
模式 1:空间连接分析
@turf/hex-grid(网格生成)→ 创建分析网格@turf/collect(数据操作)→ 将点数据聚合到六边形中@turf/center-mean(聚类)→ 查找每个六边形的中心@turf/buffer(变换)→ 在中心周围创建区域
模式 2:路线分析
@turf/length(测量)→ 计算总路线长度@turf/line-chunk(几何操作)→ 分成等长段@turf/along(测量)→ 在规则间隔处查找点@turf/buffer(变换)→ 在路线周围创建走廊
模式 3:等高线映射
@turf/point-grid(网格生成)→ 创建采样网格@turf/interpolate(聚类)→ 估计网格点处的值@turf/isolines(聚类)→ 生成等高线@turf/simplify(变换)→ 降低等高线复杂性