测量和变换
本文档涵盖对 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)
测地线与恒向线计算
该系统为距离和方位计算提供两种方法:
测地线计算遵循地球表面上的最短路径(大圆航线):
distance()- 大圆距离bearing()- 沿大圆的初始方位destination()- 沿大圆距离/方位处的点along()- 线上特定距离处的点
恒向线计算遵循恒定方位线(等角航线):
rhumbDistance()- 沿恒向线的距离rhumbBearing()- 点之间的恒定方位rhumbDestination()- 沿恒向线距离/方位处的点
核心依赖和架构
所有测量和变换函数依赖 Core Modules 的基础模块:
|| 函数类别 | 依赖 | || --- | --- | || 距离/方位 | @turf/helpers, @turf/invariant | || 面积计算 | @turf/helpers, @turf/meta | || 点生成 | @turf/helpers, @turf/invariant | || 形状创建 | @turf/helpers, 外部库 |
坐标处理和边界情况
系统处理几种坐标边界情况,特别是在 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()- 计算最小正方形边界框