# measurement

# along

npm install @turf/along

接收入参的线段上指定距离的点。

值得注意的是,距离是从起点开始计算的,如果距离超过线段的长度,会返回终点的 GeoJSON

参数

入参 类型 描述
line Feature<Point> 线段
distance Number 沿线距离
options Object 可配置项

options

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

返回

Feature<Point>

范例

var line = turf.lineString([
  [-83, 30],
  [-84, 36],
  [-78, 41]
]);
var options = { units: "miles" };

var along = turf.along(line, 200, options);
/*
{
  type: "Feature",
  geometry: {
    coordinates: [-83.4608648621918, 32.8678095806294],
    type: "Point"
  },
  properties: {}
}
*/

# area

npm install @turf/area

接收入参的要素(Feature)或要素集(FeatureCollection),计算并返回它们的面积

值得注意的是,该方法应该是传入 polygon 类型的 GeoJSON,即 Point 点类型和 LineString 线段类型均为 0

参数

入参 类型 描述
geojson GeoJSON 一个或多个

返回

Number - 面积大小

范例

var polygon = turf.polygon([
  [
    [125, -15],
    [113, -22],
    [154, -27],
    [144, -15],
    [125, -15]
  ]
]);

var area = turf.area(polygon); // 3339946239196.927

// 多要素
var area = turf.area({
  type: "FeatureCollection",
  features: [
    turf.polygon([
      [
        [125, -15],
        [113, -22],
        [154, -27],
        [144, -15],
        [125, -15]
      ]
    ]),
    turf.polygon([
      [
        [225, -15],
        [213, -22],
        [254, -27],
        [244, -15],
        [225, -15]
      ]
    ])
  ]
}); // 6679892478393.854

# bbox

npm install @turf/bbox

接收入参要素,返回它的边界框(bbox)

边界框是由右上角的坐标和左下角的坐标组成的一位数组

参数

入参 类型 描述
geojson GeoJSON 一个任意类型的 GeoJSON

返回

BBox - 以 minX、minY、maxX、maxY 的顺序排列

范例

var line = turf.lineString([
  [-74, 40],
  [-78, 42],
  [-82, 35]
]);
var bbox = turf.bbox(line); // [-82, 35, -74, 42]
var bboxPolygon = turf.bboxPolygon(bbox);

# bboxPolygon

npm install @turf/bbox-polygon

接收一个入参 bbox(边界框),返回它的的等效 GeoJSON

参数

入参 类型 描述
bbox BBox 以 minX、minY、maxX、maxY 的顺序排列
options Object 可配置项

options

属性 类型 默认值 描述
properties Properties {} 出参 GeoJSON 的 properties 属性对象
id String | Number {} 出参 GeoJSON 的 id

返回

Feature<Polygon>

范例

var bbox = [0, 0, 10, 10];

var poly = turf.bboxPolygon(bbox);
/*
{
  type: "Feature",
  geometry: {
    type: "Polygon",
    coordinates: [
      [0, 0], [10, 0], [10, 10], [0, 10], [0, 0]
    ]
  },
  properties: {}
}
*/

# bearing

npm install @turf/bearing

接收两个点类型的 GeoJSON,计算获取二者之间的地理方位,并与正北方向所形成的角度

即以起始点为参照物,终止点的偏移角度

参数

入参 类型 描述
start Coord | GeoJSON 起始点,即作为参照物的点
end Coord | GeoJSON 终止点,即要对比计算的点
options Object 可配置项

options

属性 类型 默认值 描述
final Boolean false 为 true 只计算最终轴承,即返回的数值介于 0 至 360 之间

返回

Number - 返回的数值介于 -180 至 180 之间,顺时针为正值

范例

var point1 = turf.point([-75.343, 39.984]);
var point2 = turf.point([-75.534, 39.123]);

var bearing = turf.bearing(point1, point2); // -170.2330491349224
var bearing = turf.bearing(point1, point2, { final: true }); // 189.6453188611693

// 也可以用经纬度坐标
var bearing = turf.bearing([-75.343, 39.984], [-75.534, 39.123]); // -170.2330491349224

# center

npm install @turf/center

接收入参要素(Feature)或要素集(FeatureCollection),计算并返回它们的绝对中心点

参数

入参 类型 描述
geojson GeoJSON 一个或多个
center Object 可配置项

options

属性 类型 默认值 描述
properties Object {} 出参 type 为 Point 的 GeoJSON 的 properties 属性

返回

Feature<Point> - 绝对中心

范例

var features = turf.featureCollection([
  turf.point([-97.522259, 35.4691]),
  turf.point([-97.502754, 35.463455]),
  turf.point([-97.508269, 35.463245])
]);

var center = turf.center(features);
/*
{
  type: "Feature",
  geometry: {
    coordinates: [-97.5125065, 35.4661725],
    type: "point"
  },
  properties: {}
}
*/

// 单一要素
var center = turf.center(
  turf.polygon([
    [
      [-97.522259, 35.4691],
      [-97.502754, 35.463455],
      [-97.508269, 35.463245],
      [-97.522259, 35.4691]
    ]
  ]),
  {
    properties: {
      desc: "center point"
    }
  }
);
/*
{
  type: "Feature",
  geometry: {
    coordinates: [-97.5125065, 35.4661725],
    type: "point"
  },
  properties: {
    desc: "center point"
  }
}
*/

# centerOfMass

npm install @turf/center-of-mass

接收入参要素(Feature)或要素集(FeatureCollection),计算并返回它们的质心

参数

入参 类型 描述
geojson GeoJSON 一个或多个
properties Object 出参 GeoJSON 的 properties 属性

返回

Feature<Point> - 质心

范例

var polygon = turf.polygon([
  [
    [-81, 41],
    [-88, 36],
    [-84, 31],
    [-80, 33],
    [-77, 39],
    [-81, 41]
  ]
]);

var center = turf.centerOfMass(polygon, {
  desc: "center of mass"
});
/*
{
  type: "Feature",
  geometry: {
    type: "Point",
    coordinates: [-82.3109243697479, 36.134453781512605]
  },
  properties: {
    desc: "center of mass"
  }
}
*/

# centroid

npm install @turf/centroid

接收入参要素(Feature)或要素集(FeatureCollection),计算并返回它们的矩心

参数

入参 类型 描述
geojson GeoJSON 一个或多个
properties Object 出参 GeoJSON 的 properties 属性

返回

Feature<Point> - 矩心

范例

var polygon = turf.polygon([
  [
    [-81, 41],
    [-88, 36],
    [-84, 31],
    [-80, 33],
    [-77, 39],
    [-81, 41]
  ]
]);

var centroid = turf.centroid(polygon, {
  desc: "centroid"
});
/*
{
  type: "Feature",
  geometry: {
    type: "Point",
    coordinates: [-82, 36]
  },
  properties: {
    desc: "centroid"
  }
}
*/

# destination

npm install @turf/destination

接收入参的点作为参照物,通过指定单位的距离计算出目标点的位置

若以 degress 为单位,将使用 Haversine 公式说明整体曲率

参数

入参 类型 描述
origin Coord | GeoJSON 起始点,即参照物
distance Number 和起始点的距离
bearing Number 介于 -180 至 180 之间
options Object 可配置项

options

属性 类型 默认值 描述
units String "kilometers" 单位,可选的有 degrees、radians、miles、kilometers
properties Object {} 出参 type 为 Point 的 GeoJSON 的 properties 属性

返回

Feature<Point> - 目标点

范例

var point = turf.point([-75.343, 39.984]);
var distance = 50;
var bearing = 90;
var options = { units: "miles" };

var destination = turf.destination(point, distance, bearing, options);
/*
{
  type: "Feature",
  geometry: {
    type: "Point",
    coordinates: [-74.39858826442095, 39.98016766669771]
  },
  properties: {}
}
*/

# distance

npm install @turf/distance

计算两点之间的距离

若以 degress 为单位,将使用 Haversine 公式说明整体曲率

参数

入参 类型 描述
from Coord 起始点
to Coord 目标点
options Object 可配置项

options

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

返回

Number - 两点的距离

范例

var from = turf.point([-75.343, 39.984]);
var to = turf.point([-75.534, 39.123]);
var options = { units: "miles" };

var distance = turf.distance(from, to, options); // 60.35329997171415

# envelope

npm install @turf/envelope

接收任意要素(Feature)或要素集(FeatureCollection),返回包含所有顶点的 type 为 Polygon 的矩形 GeoJSON

值得注意的是,矩形是正四边形,所以会去包含更靠外的要素顶点,从而保证所有的要素都在矩形内

参数

入参 类型 描述
geojson GeoJSON 一个或多个

返回

Feature<Polygon> - 包含所有入参要素顶点的 GeoJSON

范例

var features = turf.featureCollection([
  turf.point([-75.343, 39.984], { name: "Location A" }),
  turf.point([-75.833, 39.284], { name: "Location B" }),
  turf.point([-75.534, 39.123], { name: "Location C" })
]);

var enveloped = turf.envelope(features);
/*
{
  type: "Feature",
  geometry: {
    type: "Polygon",
    coordinates: [
      [
        [-75.833, 39.123],
        [-75.343, 39.123],
        [-75.343, 39.984],
        [-75.833, 39.984],
        [-75.833, 39.123]
      ]
    ]
  },
  properties: {}
}
*/

// 包含更靠外的要素,第四个点[-75.12, 38.4]比第三个点[-75.534, 39.123]有更小的维度,所以第三个点不在矩形的边上
var features = turf.featureCollection([
  turf.point([-75.343, 39.984], { name: "Location A" }),
  turf.point([-75.833, 39.284], { name: "Location B" }),
  turf.point([-75.534, 39.123], { name: "Location C" }),
  turf.point([-75.12, 38.4], { name: "Location D" })
]);
var enveloped = turf.envelope(features);

# length

npm install @turf/length

接收入参 GeoJSON 的长度,通过特定的单位计算长度

type 为(Multi)Point 的 GeoJSON 长度为 0

参数

入参 类型 描述
geojson GeoJSON 需要测量的 GeoJSON
options Object 可配置项

options

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

返回

Number - 长度

范例

var line = turf.lineString([
  [115, -32],
  [131, -22],
  [143, -25],
  [150, -34]
]);
var length = turf.length(line, { units: "miles" }); // 2738.9663893575207

# midpoint

npm install @turf/midpoint

接收两个点,通过地球的曲率计算出中点,并返回该中点

参数

入参 类型 描述
point1 Coord | GeoJSON 第一个点
point2 Coord | GeoJSON 第二个点

返回

Feature<Point>

范例

var point1 = turf.point([144.834823, -37.771257]);
var point2 = turf.point([145.14244, -37.830937]);

var midpoint = turf.midpoint(point1, point2);
/*
{
  type: "Feature",
  geometry: {
    type: "Point",
    coordinates: [144.98856936202512, -37.801196981553204]
  },
  properties: {}
}
*/

# pointOnFeature

npm install @turf/point-on-feature

接收入参的要素(Feature)或要素集(FeatureCollection),返回一个保证在要素表面的 type 为 Point 的 GeoJSON

值得注意的是,返回的点要素是固定的,并非随机

参数

入参 类型 描述
geojson GeoJSON 一个或多个

返回

Feature<Point>

范例

var polygon = turf.polygon([
  [
    [116, -36],
    [131, -32],
    [146, -43],
    [155, -25],
    [133, -9],
    [111, -22],
    [116, -36]
  ]
]);

var pointOnPolygon = turf.pointOnFeature(polygon);

/*
{
  type: "Feature",
  geometry: {
    type: "Point",
    coordinates: [133, -26]
  },
  properties: {}
}
*/

# polygonTangents

npm install @turf/polygon-tangents

接收一个点和一个(Multi)Polygon,计算二者的切线,返回切线在(Multi)Polygon 上的点

参数

入参 类型 描述
pt Coord | GeoJSON 参与计算的点
polygon Feature<Polygon|MultiPolygon> 参与计算的多边形

返回

Feature<Point> - 包含两个切点的要素集合

范例

var polygon = turf.polygon([
  [
    [11, 0],
    [22, 4],
    [31, 0],
    [31, 11],
    [21, 15],
    [11, 11],
    [11, 0]
  ]
]);
var point = turf.point([61, 5]);

var tangents = turf.polygonTangents(point, polygon);
/*
{
  type: "FeatureCollection",
  features: [
    {
      type: "Feature",
      geometry: {
        type: "point",
        coordinates: [21, 15]
      },
      properties: {}
    },
    {
      type: "Feature",
      geometry: {
        type: "point",
        coordinates: [31, 0]
      },
      properties: {}
    }
  ]
}
*/

# pointToLineDistance

npm install @turf/point-to-line-distance

接收一个点和一条线段,获取二者之间的最小距离

参数

入参 类型 描述
pt Coord | GeoJSON 参与计算的点
line Feature<LineString> 参与计算的线段
options Object 可配置项

options

属性 类型 默认值 描述
units String "kilometers" 单位,可选的有 degrees、radians、miles、kilometers
mercator Boolean false 是否要以墨卡托投影或 WGS84 投影计算

返回

Number - 距离

范例

var pt = turf.point([0, 0]);
var line = turf.lineString([
  [1, 1],
  [-1, 1]
]);

var distance = turf.pointToLineDistance(pt, line, { units: "miles" }); // 69.11854715938406

# rhumbBearing

npm install @turf/rhumb-bearing

接收两个点,获取二者沿 Rhumb line 与正北方向所形成的角度

什么是rhumb line

参数

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

options

属性 类型 默认值 描述
final Boolean false 为 true 只计算最终轴承,即返回的数值介于 0 至 360 之间

返回

Number - 返回的数值介于 -180 至 180 之间,顺时针为正值

范例

var point1 = turf.point([-75.343, 39.984], { "marker-color": "#F00" });
var point2 = turf.point([-75.534, 39.123], { "marker-color": "#00F" });

var bearing = turf.rhumbBearing(point1, point2); // -170.29417535572546
var bearing = turf.rhumbBearing(point1, point2, { final: true }); // 9.705824644274514

# rhumbDestination

npm install @turf/rhumb-destination

获取以入参的点为参照物,通过指定单位的距离计算出沿 rhumb line 的目标点的位置

什么是rhumb line

参数

入参 类型 描述
origin Coord | GeoJSON 参与计算的点
distance Number 参与计算的线段
bearing Number 介于 -180 至 180 之间
options Object 可配置项

options

属性 类型 默认值 描述
units String "kilometers" 单位,可选的有 degrees、radians、miles、kilometers
properties Object {} 出参 type 为 Point 的 GeoJSON 的 properties 属性

返回

Number - 目标点

范例

var pt = turf.point([-75.343, 39.984], { "marker-color": "F00" });
var distance = 50;
var bearing = 90;
var options = { units: "miles" };

var destination = turf.rhumbDestination(pt, distance, bearing, options);
/*
{
  type: "Feature",
  geometry: {
    type: "Point",
    coordinates: [-74.3985529486182, 39.984]
  },
  properties: {}
}
*/

# rhumbDistance

npm install @turf/rhumb-distance

接收两个点,计算二者沿 rhumb line 的距离

什么是rhumb line

参数

入参 类型 描述
from Coord | GeoJSON 起始点
to Coord | GeoJSON 目标点
options Object 可配置项

options

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

返回

Number - 距离

范例

var from = turf.point([-75.343, 39.984]);
var to = turf.point([-75.534, 39.123]);
var options = { units: "miles" };

var distance = turf.rhumbDistance(from, to, options); // 60.35331130430885

# square

npm install @turf/square

接收 bbox(边界框) 计算包含入参的最小正方形边界

参数

入参 类型 描述
bbox BBox 以 minX、minY、maxX、maxY 的顺序排列

返回

BBox

范例

var bbox = [-20, -20, -15, 0];
var squared = turf.square(bbox); // [-27.5, -20, -7.5, 0]

# greatCircle

npm install @turf/great-circle

接收两个点,计算二者的大圆路线,返回 type 为 LineString 的大圆线 GeoJSON

参数

入参 类型 描述
start Coord | GeoJSON 起始点
end Coord | GeoJSON 目标点
options Object 可配置项

options

属性 类型 默认值 描述
properties Object {} 出参 GeoJSON 的 properties 属性
npoints Number 100 大圆弧的点的数量
offset Number 10 控制行与日期线交叉的可能性,数值越高可能性越高

返回

Feature<LineString> - 大圆线

范例

var start = turf.point([-122, 48]);
var end = turf.point([-77, 39]);

var greatCircle = turf.greatCircle(start, end, { name: "Seattle to DC" });
Last Updated: 7/27/2020, 6:01:18 PM