MISC
kinks
npm install @turf/kinks
接收一个 type 为 LineString、MultiLineString、Polygon、MultiPolygon 的要素,计算并返回所有自相交的点要素
参数
| 入参 | 类型 | 描述 | |||
|---|---|---|---|---|---|
| featureIn | Feature<LineString\ | MultiLineString\ | MultiPolygon\ | Polygon> | 计算自相交的要素 |
返回
范例
var poly = turf.polygon([[[-12.034835, 8.901183],[-12.060413, 8.899826],[-12.03638, 8.873199],[-12.059383, 8.871418],[-12.034835, 8.901183]]]);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 |
返回
范例
var center = turf.point([-75, 40]);var radius = 5;var bearing1 = 25;var bearing2 = 47;var arc = turf.lineArc(center, radius, bearing1, bearing2);/*{type: "Feature",geometry: {type: "LineString",coordinates: [[-74.97517792609881, 40.04075040571227],[-74.97008079359495, 40.038690305118934],[-74.96527228827969, 40.03625742190849],[-74.96079876149496, 40.03347522459089],[-74.95705100267124, 40.03065882615696]]},properties: {}}*/
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 | 反转切分要素的顺序 |
返回
范例
var line = turf.lineString([[-95, 40],[-93, 45],[-85, 50]]);var chunk = turf.lineChunk(line, 15, { units: "miles" }); // 间隔15英里切分一段线段
lineIntersect
npm install @turf/line-intersect
接收两个任意的 type 为 LineString 或 Polygon 的 GeoJSON,并返回所有的相交点
参数
| 入参 | 类型 | 描述 | |||||
|---|---|---|---|---|---|---|---|
| line1 | Geometry\ | FeatureCollection\ | Feature<LineString\ | MultiLineString\ | Polygon\ | MultiPolygon> | 任意线要素或面要素 |
| line2 | Geometry\ | FeatureCollection\ | Feature<LineString\ | MultiLineString\ | Polygon\ | MultiPolygon> | 任意线要素或面要素 |
返回
范例
var line1 = turf.lineString([[126, -11],[129, -21]]);var line2 = turf.lineString([[123, -18],[131, -14]]);var intersects = turf.lineIntersect(line1, line2);/*{type: "FeatureCollection",features: [{type: "Feature",geometry: {type: "Point",coordinates: [127.43478260869566, -15.782608695652174]},properties: {}}]}*/
lineOverlap
npm install @turf/line-overlap
接收两个任意的 type 为 LineString 或 Polygon 的 GeoJSON,并返回它们的重叠线
值得注意的是,重叠线可能有多条
参数
| 入参 | 类型 | 描述 | |||||
|---|---|---|---|---|---|---|---|
| line1 | Geometry\ | FeatureCollection\ | Feature<LineString\ | MultiLineString\ | Polygon\ | MultiPolygon> | 任意线要素或面要素 |
| line2 | Geometry\ | FeatureCollection\ | Feature<LineString\ | MultiLineString\ | Polygon\ | MultiPolygon> | 任意线要素或面要素 |
| options | Object | 可配置项 |
options
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| tolerance | Number | 0 | 匹配重叠线段的公差距离,以公里为单位 |
返回
范例
var line1 = turf.lineString([[115, -35],[125, -30],[135, -30],[145, -35]]);var line2 = turf.lineString([[115, -25],[125, -30],[135, -30],[145, -25]]);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> | 传入的要素 |
返回
范例
var polygon = turf.polygon([[[-50, 5],[-40, -10],[-50, -10],[-40, 5],[-50, 5]]]);var segments = turf.lineSegment(polygon);
lineSlice
npm install @turf/line-slice
接收一条线要素(LineString)、起点、终点,裁切起终点之间的在该线的线段并返回
值得注意的是,起点终点不需要在线上,会计算出点到线最近的点
参数
| 入参 | 类型 | 描述 |
|---|---|---|
| startPt | Coord | 起点 |
| stopPt | Coord | 终点 |
| line | Feature<LineString> | 要裁切的线段 |
返回
范例
var line = turf.lineString([[-77.031669, 38.878605],[-77.029609, 38.881946],[-77.020339, 38.884084],[-77.025661, 38.885821],[-77.021884, 38.889563],[-77.019824, 38.892368]]);var start = turf.point([-77.029609, 38.881946]);var stop = turf.point([-77.021884, 38.889563]);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 |
返回
范例
var line = turf.lineString([[7, 45],[9, 45],[14, 40],[14, 41]]);var start = 12.5;var stop = 25;var sliced = turf.lineSliceAlong(line, start, stop, { units: "miles" });/*{type: "Feature",geometry: {type: "LineString",coordinates: [[7.25584134370955, 45.00194719009643],[7.511697527558178, 45.003323144337116]]}}*/
lineSplit
npm install @turf/line-split
接收一个线要素(LineString),一个用于裁切的任意要素(Feature),计算并返回裁切后的线要素集
参数
| 入参 | 类型 | 描述 |
|---|---|---|
| line | Feature<LineString> | 需要裁切的线要素 |
| splitter | Feature | 充当切分工具的要素 |
返回
范例
var line = turf.lineString([[120, -25],[145, -25]]);var splitter = turf.lineString([[130, -15],[130, -35]]);var split = turf.lineSplit(line, splitter); // 两个线要素的要素集
mask
npm install @turf/mask
接收一个 type 为 polygon 或 MultiPolygon 的面要素,作为内圈。返回一个挖孔的面要素作为遮罩
参数
| 入参 | 类型 | 描述 | ||
|---|---|---|---|---|
| polygon | FeatureCollection\ | Feature<Polygon\ | MultiPolygon> | 面要素,作为遮罩内圈 |
| mask | Feature<Polygon> | 可选项,作为遮罩外圈,不传则以世界范围作为外圈 |
返回
范例
var polygon = turf.polygon([[[112, -21],[116, -36],[146, -39],[153, -24],[133, -10],[112, -21]]]);var mask = turf.polygon([[[90, -55],[170, -55],[170, 10],[90, 10],[90, -55]]]);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 |
返回
范例
var line = turf.lineString([[-77.031669, 38.878605],[-77.029609, 38.881946],[-77.020339, 38.884084],[-77.025661, 38.885821],[-77.021884, 38.889563],[-77.019824, 38.892368]]);var pt = turf.point([-77.037076, 38.884017]);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 属性 |
返回
范例
var center = turf.point([-75, 40]);var radius = 5;var bearing1 = 25;var bearing2 = 45;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 | 路径与障碍物之间的可以容忍的阈值距离 |
返回
范例
var start = [-5, -6];var end = [9, -6];var options = {obstacles: turf.polygon([[[0, -7],[5, -7],[5, -3],[0, -3],[0, -7]]])};var path = turf.shortestPath(start, end, options);
unkinkPolygon
npm install @turf/unkink-polygon
接收一个有自相交的面要素(Polygon),计算并返回没有自相交的面要素集合,如果入参没有自相交,则返回入参数据的要素集
参数
| 入参 | 类型 | 描述 | ||
|---|---|---|---|---|
| geojson | FeatureCollection\ | Feature<Polygon\ | MultiPolygon> | GeoJSON |
返回
范例
var poly = turf.polygon([[[0, 0],[2, 0],[0, 2],[2, 2],[0, 0]]]);var result = turf.unkinkPolygon(poly);
