MISC

kinks

npm install @turf/kinks

接收一个 type 为 LineStringMultiLineStringPolygonMultiPolygon 的要素,计算并返回所有自相交的点要素

参数

入参 类型 描述
featureIn Feature<LineString\ MultiLineString\ MultiPolygon\ Polygon> 计算自相交的要素

返回

FeatureCollection<Point>

范例

  1. var poly = turf.polygon([
  2. [
  3. [-12.034835, 8.901183],
  4. [-12.060413, 8.899826],
  5. [-12.03638, 8.873199],
  6. [-12.059383, 8.871418],
  7. [-12.034835, 8.901183]
  8. ]
  9. ]);
  10. var kinks = turf.kinks(poly); // 返回要素集

lineArc

npm install @turf/line-arc

接收一个中心和半径,两个角度,计算出由 bearing1 为起点、bearing2 为终点的指定的圆弧并返回。

值得注意的是,角度是与正北方向所形成的角度,顺时针为正值,且两个角度有先后顺序

参数

入参 类型 描述
center Coord 中心点
radius Number 圆的半径
bearing1 Number 介于 -180 至 180 之间
bearing2 Number 介于 -180 至 180 之间
options Object 可配置项

options

属性 类型 默认值 描述
steps Number 64 圆弧的平滑度,数值越高越平滑
units String “kilometers” 单位,可选的有 degrees、radians、miles、kilometers

返回

Feature<LineString>

范例

  1. var center = turf.point([-75, 40]);
  2. var radius = 5;
  3. var bearing1 = 25;
  4. var bearing2 = 47;
  5. var arc = turf.lineArc(center, radius, bearing1, bearing2);
  6. /*
  7. {
  8. type: "Feature",
  9. geometry: {
  10. type: "LineString",
  11. coordinates: [
  12. [-74.97517792609881, 40.04075040571227],
  13. [-74.97008079359495, 40.038690305118934],
  14. [-74.96527228827969, 40.03625742190849],
  15. [-74.96079876149496, 40.03347522459089],
  16. [-74.95705100267124, 40.03065882615696]
  17. ]
  18. },
  19. properties: {}
  20. }
  21. */

lineChunk

npm install @turf/link-chunk

接收一个 type 为 LineString 的线要素,切分成指定长度的线段并返回要素集

值得注意的是,如果入参的线段小于要切分的长度,则返回入参的线段

参数

入参 类型 描述
geojson FeatureCollection<LineString\ MultiLineString> 要切分的线要素
segmentLength Number 每段线段的长度
options Object 可配置项

options

属性 类型 默认值 描述
units String “kilometers” 单位,可选的有 degrees、radians、miles、kilometers
reverse Boolean false 反转切分要素的顺序

返回

FeatureCollection<LineString>

范例

  1. var line = turf.lineString([
  2. [-95, 40],
  3. [-93, 45],
  4. [-85, 50]
  5. ]);
  6. var chunk = turf.lineChunk(line, 15, { units: "miles" }); // 间隔15英里切分一段线段

lineIntersect

npm install @turf/line-intersect

接收两个任意的 type 为 LineStringPolygonGeoJSON,并返回所有的相交点

参数

入参 类型 描述
line1 Geometry\ FeatureCollection\ Feature<LineString\ MultiLineString\ Polygon\ MultiPolygon> 任意线要素或面要素
line2 Geometry\ FeatureCollection\ Feature<LineString\ MultiLineString\ Polygon\ MultiPolygon> 任意线要素或面要素

返回

FeatureCollection<Point>

范例

  1. var line1 = turf.lineString([
  2. [126, -11],
  3. [129, -21]
  4. ]);
  5. var line2 = turf.lineString([
  6. [123, -18],
  7. [131, -14]
  8. ]);
  9. var intersects = turf.lineIntersect(line1, line2);
  10. /*
  11. {
  12. type: "FeatureCollection",
  13. features: [
  14. {
  15. type: "Feature",
  16. geometry: {
  17. type: "Point",
  18. coordinates: [127.43478260869566, -15.782608695652174]
  19. },
  20. properties: {}
  21. }
  22. ]
  23. }
  24. */

lineOverlap

npm install @turf/line-overlap

接收两个任意的 type 为 LineStringPolygonGeoJSON,并返回它们的重叠线

值得注意的是,重叠线可能有多条

参数

入参 类型 描述
line1 Geometry\ FeatureCollection\ Feature<LineString\ MultiLineString\ Polygon\ MultiPolygon> 任意线要素或面要素
line2 Geometry\ FeatureCollection\ Feature<LineString\ MultiLineString\ Polygon\ MultiPolygon> 任意线要素或面要素
options Object 可配置项

options

属性 类型 默认值 描述
tolerance Number 0 匹配重叠线段的公差距离,以公里为单位

返回

FeatureCollection<LineString>

范例

  1. var line1 = turf.lineString([
  2. [115, -35],
  3. [125, -30],
  4. [135, -30],
  5. [145, -35]
  6. ]);
  7. var line2 = turf.lineString([
  8. [115, -25],
  9. [125, -30],
  10. [135, -30],
  11. [145, -25]
  12. ]);
  13. var overlapping = turf.lineOverlap(line1, line2); // [125, -30], [135, -30] 线段重叠

lineSegment

npm install @turf/line-segment

接收一个线要素(LineString)或面要素(Polygon),创建 2-vertex 的线段要素集合

参数

入参 类型 描述
geojson Geometry\ FeatureCollection\ Feature<LineString\ MultiLineString\ Polygon\ MultiPolygon&gt 传入的要素

返回

FeatureCollection<LineString>

范例

  1. var polygon = turf.polygon([
  2. [
  3. [-50, 5],
  4. [-40, -10],
  5. [-50, -10],
  6. [-40, 5],
  7. [-50, 5]
  8. ]
  9. ]);
  10. var segments = turf.lineSegment(polygon);

lineSlice

npm install @turf/line-slice

接收一条线要素(LineString)、起点、终点,裁切起终点之间的在该线的线段并返回

值得注意的是,起点终点不需要在线上,会计算出点到线最近的点

参数

入参 类型 描述
startPt Coord 起点
stopPt Coord 终点
line Feature<LineString> 要裁切的线段

返回

Feature<LineString>

范例

  1. var line = turf.lineString([
  2. [-77.031669, 38.878605],
  3. [-77.029609, 38.881946],
  4. [-77.020339, 38.884084],
  5. [-77.025661, 38.885821],
  6. [-77.021884, 38.889563],
  7. [-77.019824, 38.892368]
  8. ]);
  9. var start = turf.point([-77.029609, 38.881946]);
  10. var stop = turf.point([-77.021884, 38.889563]);
  11. var sliced = turf.lineSlice(start, stop, line); // 返回裁切的线段GeoJSON

lineSliceAlong

npm install @turf/line-slice-along

接收一条线要素(LineString)、起点距离、终点距离,计算出沿起点在线上的指定距离、沿终点在线上的指定距离,裁切这两点之间的该线的线段并返回

值得注意的是,起点距离的点超过终点距离的点也没关系,只是坐标顺序相反而已

参数

入参 类型 描述
line Feature<LineString> 要裁切的线段
startDist Number 沿起点在线上的指定距离
stopDist Number 沿终点在线上的指定距离
options Object 可配置项

options

属性 类型 默认值 描述
units String “kilometers” 沿线距离的单位,可选的有 degrees、radians、miles、kilometers

返回

Feature<LineString>

范例

  1. var line = turf.lineString([
  2. [7, 45],
  3. [9, 45],
  4. [14, 40],
  5. [14, 41]
  6. ]);
  7. var start = 12.5;
  8. var stop = 25;
  9. var sliced = turf.lineSliceAlong(line, start, stop, { units: "miles" });
  10. /*
  11. {
  12. type: "Feature",
  13. geometry: {
  14. type: "LineString",
  15. coordinates: [
  16. [7.25584134370955, 45.00194719009643],
  17. [7.511697527558178, 45.003323144337116]
  18. ]
  19. }
  20. }
  21. */

lineSplit

npm install @turf/line-split

接收一个线要素(LineString),一个用于裁切的任意要素(Feature),计算并返回裁切后的线要素集

参数

入参 类型 描述
line Feature<LineString> 需要裁切的线要素
splitter Feature 充当切分工具的要素

返回

FeatureCollection<LineString>

范例

  1. var line = turf.lineString([
  2. [120, -25],
  3. [145, -25]
  4. ]);
  5. var splitter = turf.lineString([
  6. [130, -15],
  7. [130, -35]
  8. ]);
  9. var split = turf.lineSplit(line, splitter); // 两个线要素的要素集

mask

npm install @turf/mask

接收一个 type 为 polygon 或 MultiPolygon 的面要素,作为内圈。返回一个挖孔的面要素作为遮罩

参数

入参 类型 描述
polygon FeatureCollection\ Feature<Polygon\ MultiPolygon> 面要素,作为遮罩内圈
mask Feature<Polygon> 可选项,作为遮罩外圈,不传则以世界范围作为外圈

返回

Feature<Polygon>

范例

  1. var polygon = turf.polygon([
  2. [
  3. [112, -21],
  4. [116, -36],
  5. [146, -39],
  6. [153, -24],
  7. [133, -10],
  8. [112, -21]
  9. ]
  10. ]);
  11. var mask = turf.polygon([
  12. [
  13. [90, -55],
  14. [170, -55],
  15. [170, 10],
  16. [90, 10],
  17. [90, -55]
  18. ]
  19. ]);
  20. var masked = turf.mask(polygon, mask);

nearestPointOnLine

npm install @turf/nearest-point-on-line

接收一个点要素和一个线要素,计算出该点在该线上最近的点要素并返回

值得注意的是,返回的点要素的 properties 包括三个值:index:在第 n 个直线上找到的点;dist:pt 和该点要素之间的距离;location:沿着起点到该点要素的线的距离

参数

入参 类型 描述
lines Geometry\ Feature<LineString\ MultiLineString> 参照物的线要素
pt Geometry\ Feature<Point>\ Array 需计算的点要素
options Object 可配置项

options

属性 类型 默认值 描述
units String “kilometers” 单位,可选的有 degrees、radians、miles、kilometers

返回

Feature<Point>

范例

  1. var line = turf.lineString([
  2. [-77.031669, 38.878605],
  3. [-77.029609, 38.881946],
  4. [-77.020339, 38.884084],
  5. [-77.025661, 38.885821],
  6. [-77.021884, 38.889563],
  7. [-77.019824, 38.892368]
  8. ]);
  9. var pt = turf.point([-77.037076, 38.884017]);
  10. var snapped = turf.nearestPointOnLine(line, pt, { units: "miles" }); // [-77.02996941477018, 38.881361463229524]的点要素

sector

npm install @turf/sector

接收一系列参数(具体看下述列表),计算出 type 为 polygon 的扇形区域并返回

值得注意的是,角度是与正北方向所形成的角度,顺时针为正值,且两个角度有先后顺序

参数

入参 类型 描述
center Coord 中心点
radius Number 圆的半径
bearing1 Number 介于 -180 至 180 之间
bearing2 Number 介于 -180 至 180 之间
options Object 可配置项

options

属性 类型 默认值 描述
units String “kilometers” 单位,可选的有 degrees、radians、miles、kilometers
steps Number 64 圆弧的平滑度,数值越高越平滑
properties Object {} 出参 type 为 Polygon 的 GeoJSON 的 properties 属性

返回

Feature<Polygon>

范例

  1. var center = turf.point([-75, 40]);
  2. var radius = 5;
  3. var bearing1 = 25;
  4. var bearing2 = 45;
  5. var sector = turf.sector(center, radius, bearing1, bearing2); // type 为 Polygon 的扇形面要素

shortestPath

npm install @turf/shortest-path

接收两个点,返回这两个点的最短距离路径,且不与传入的障碍物碰撞

参数

入参 类型 描述
start Coord 起点
end Coord 终点
options Object 可配置项

options

属性 类型 默认值 描述
obstacles Geometry\ Feature\ FeatureCollection<Polygon> 路径无法通过的区域
minDistance Number 路径与障碍物之间的最小距离(v5.1.6 暂不支持)
units String “kilometers” 单位,可选的有 degrees、radians、miles、kilometers
resolution Number 100 路径与障碍物之间的可以容忍的阈值距离

返回

FeatureCollection<LineString>

范例

  1. var start = [-5, -6];
  2. var end = [9, -6];
  3. var options = {
  4. obstacles: turf.polygon([
  5. [
  6. [0, -7],
  7. [5, -7],
  8. [5, -3],
  9. [0, -3],
  10. [0, -7]
  11. ]
  12. ])
  13. };
  14. var path = turf.shortestPath(start, end, options);

unkinkPolygon

npm install @turf/unkink-polygon

接收一个有自相交的面要素(Polygon),计算并返回没有自相交的面要素集合,如果入参没有自相交,则返回入参数据的要素集

参数

入参 类型 描述
geojson FeatureCollection\ Feature<Polygon\ MultiPolygon> GeoJSON

返回

FeatureCollection<Polygon>

范例

  1. var poly = turf.polygon([
  2. [
  3. [0, 0],
  4. [2, 0],
  5. [0, 2],
  6. [2, 2],
  7. [0, 0]
  8. ]
  9. ]);
  10. var result = turf.unkinkPolygon(poly);