Skip to content

测量和变换

本文档涵盖对 GeoJSON 要素执行空间测量和几何变换的 Turf.js 模块。这些函数计算距离、方位、面积,并在不同表示之间转换坐标。有关缓冲区、并集和交集等几何操作,请参阅 Geometric Operations。有关聚类和插值等空间分析函数,请参阅 Spatial Analysis

概述

测量和变换系统由两类主要函数组成:

测量函数在不修改输入几何体的情况下计算空间属性:

  • 距离计算(@turf/distance@turf/rhumb-distance
  • 面积计算(@turf/area
  • 方位计算(@turf/bearing@turf/rhumb-bearing
  • 边界框生成(@turf/bbox

变换函数从现有几何体创建新几何体:

  • 从坐标生成点(@turf/destination@turf/along
  • 形状创建(@turf/circle@turf/bbox-polygon
  • 坐标处理(@turf/truncate@turf/midpoint
  • 镶嵌(@turf/tesselate@turf/tin
SVG
100%

测地线与恒向线计算

该系统为距离和方位计算提供两种方法:

测地线计算遵循地球表面上的最短路径(大圆航线):

  • distance() - 大圆距离
  • bearing() - 沿大圆的初始方位
  • destination() - 沿大圆距离/方位处的点
  • along() - 线上特定距离处的点

恒向线计算遵循恒定方位线(等角航线):

  • rhumbDistance() - 沿恒向线的距离
  • rhumbBearing() - 点之间的恒定方位
  • rhumbDestination() - 沿恒向线距离/方位处的点
SVG
100%

核心依赖和架构

所有测量和变换函数依赖 Core Modules 的基础模块:

|| 函数类别 | 依赖 | || --- | --- | || 距离/方位 | @turf/helpers, @turf/invariant | || 面积计算 | @turf/helpers, @turf/meta | || 点生成 | @turf/helpers, @turf/invariant | || 形状创建 | @turf/helpers, 外部库 |

SVG
100%

坐标处理和边界情况

系统处理几种坐标边界情况,特别是在 180 度经线周围:

180 度经线穿越rhumbDistance()rhumbDestination() 等函数实现经线补偿:

// 来自 rhumb-destination 实现
destination[0] += destination[0] - coords[0] > 180 ? -360 
  : coords[0] - destination[0] > 180 ? 360 : 0;

坐标验证:所有函数使用 @turf/invariant 中的 getCoord() 从各种输入类型(Point 要素、坐标数组等)提取和验证坐标。

单位转换:距离和方位函数通过 @turf/helpers 中的 convertLength() 接受多个单位:

|| 支持的单位 | || --- | || kilometers, miles, meters | || feet, inches, yards | || nauticalMiles, degrees, radians |

专业几何变换

除了基本测量,该系统还包括专业变换函数:

镶嵌函数

  • tesselate() - 使用 earcut 算法将多边形转换为三角形
  • tin() - 从点创建不规则三角网
  • kinks() - 查找几何体中的自交点

形状生成函数

  • circle() - 从中心点和半径创建圆形多边形
  • bboxPolygon() - 将边界框转换为多边形几何体
  • square() - 计算最小正方形边界框
SVG
100%