Skip to content

模块分类

目的和范围

本文档解释了 Turf.js 模块根据其操作目的进行的七种不同功能组分类。Turf.js monorepo 中的 100+ 个包按其执行的地理空间操作类型组织,从基本测量到复杂几何算法。这种分类有助于用户发现适合其用例的模块并了解库的操作能力。

有关支持所有分类的基础工具的信息,请参阅 基础模块。有关模块如何跨层级相互依赖的详细信息,请参阅 依赖层次

分类概述

Turf.js 模块被组织成七个功能类别,每个类别服务于不同的操作领域。所有类别都依赖基础层(@turf/helpers@turf/meta@turf/invariant),在 基础模块 中描述。

SVG
100%

测量模块

测量模块计算地理特征的定量属性,包括距离、方位角、面积和长度。这些模块通常使用 WGS84 椭球体实现测地线计算。

核心测量操作

SVG
100%

模块列表

模块描述关键依赖
@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/lengthLineString 的总长度@turf/helpers, @turf/meta
@turf/bbox计算边界框@turf/helpers, @turf/meta
@turf/midpoint两点之间的中点@turf/bearing, @turf/destination, @turf/distance

布尔谓词模块

布尔谓词模块在几何体之间执行空间关系测试,返回 truefalse。这些模块实现 DE-9IM 空间模型中的标准拓扑谓词。

布尔操作映射

SVG
100%

谓词类别

类别模块典型用例
包含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测试线性特征关系

变换模块

变换模块修改特征的几何体或坐标,而不改变其基本结构。这些操作包括坐标操作、形状修改和精度控制。

变换操作

SVG
100%

模块特征

模块输入类型输出类型外部依赖
@turf/bufferPoint/Line/PolygonPolygon@turf/jsts, d3-geo
@turf/simplifyLine/PolygonLine/Polygon@turf/clean-coords
@turf/truncate任意 Feature相同 Feature
@turf/flip任意 Feature相同 Feature@turf/clone, @turf/meta
@turf/clean-coordsLine/PolygonLine/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

几何操作

几何操作对特征执行复杂的算法变换,包括布尔操作、包络计算和线处理。这些模块通常依赖外部计算几何库。

布尔集合操作

SVG
100%

包络和包围盒操作

SVG
100%

线处理模块

模块操作依赖
@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/voronoiVoronoi 图d3-delaunay

网格生成模块

网格生成模块创建边界框区域的规则镶嵌。这些模块产生按几何模式排列的多边形或点的 FeatureCollections。

网格类型和实现

SVG
100%

网格模块规格

模块单元格形状参数特殊依赖
@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() 处理。

聚类和分析模块

聚类和分析模块对地理空间特征执行统计操作、数据插值和模式分析。这些模块通常使用空间索引来提高性能。

聚类算法

SVG
100%

中心计算

SVG
100%

插值和等高线生成

模块目的算法/库输出
@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 数据。这些操作转换特征集合、聚合属性或修改特征类型。

结构转换

SVG
100%

属性聚合

SVG
100%

数据操作

模块操作输入输出用例
@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-polygonLineString → Polygon验证闭合
@turf/polygon-to-linePolygon → LineString提取环
@turf/bezier-splineLineString → 平滑曲线三次 Bézier 插值
@turf/polygon-smoothPolygon → 平滑多边形Chaikin 算法

分类使用模式

典型模块组合模式

以下模式代表组合多个类别中模块的常见工作流:

模式 1:空间连接分析

  1. @turf/hex-grid(网格生成)→ 创建分析网格
  2. @turf/collect(数据操作)→ 将点数据聚合到六边形中
  3. @turf/center-mean(聚类)→ 查找每个六边形的中心
  4. @turf/buffer(变换)→ 在中心周围创建区域

模式 2:路线分析

  1. @turf/length(测量)→ 计算总路线长度
  2. @turf/line-chunk(几何操作)→ 分成等长段
  3. @turf/along(测量)→ 在规则间隔处查找点
  4. @turf/buffer(变换)→ 在路线周围创建走廊

模式 3:等高线映射

  1. @turf/point-grid(网格生成)→ 创建采样网格
  2. @turf/interpolate(聚类)→ 估计网格点处的值
  3. @turf/isolines(聚类)→ 生成等高线
  4. @turf/simplify(变换)→ 降低等高线复杂性