# meta
# coordAll
npm install @turf/meta
接收任意的 GeoJSON 对象(包括要素集),以二维数组的形式返回它们的坐标
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
返回
Array
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
var coords = turf.coordAll(features);
//= [[26, 37], [36, 53]]
var coords = turf.coordAll(turf.point([26, 37], { foo: "bar" }));
//= [[26, 37]] 虽然只有一个要素,还是以二维数组的形式返回
# coordEach
npm install @turf/meta
遍历接收的 GeoJSON 对象,功能类似 Array.forEach()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 currentCoord、coordIndex、featureIndex、multiFeatureIndex |
excludeWrapCoord | Boolean | 是否包含最后一个坐标对(针对闭环线、面要素等坐标是首位闭合的情况),默认为 false |
返回
undefined
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
turf.coordEach(features, function (
currentCoord,
coordIndex,
featureIndex,
multiFeatureIndex,
geometryIndex
) {
//=currentCoord
//=coordIndex
//=featureIndex
//=multiFeatureIndex
//=geometryIndex
});
# coordReduce
npm install @turf/meta
接收任意 GeoJSON 对象(包括要素集),遍历累加操作。功能类似 Array.reduce()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 previousValue、currentCoord、coordIndex、featureIndex、multiFeatureIndex、geometryIndex |
initial | (*) | 初始值 |
excludeWrapCoord | Boolean | 是否包含最后一个坐标对(针对闭环线、面要素等坐标是首位闭合的情况),默认为 false |
返回
*
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
turf.coordReduce(features, function (
previousValue,
currentCoord,
coordIndex,
featureIndex,
multiFeatureIndex,
geometryIndex
) {
//=previousValue
//=currentCoord
//=coordIndex
//=featureIndex
//=multiFeatureIndex
//=geometryIndex
return currentCoord;
});
# featureEach
npm install @turf/meta
遍历接收的 GeoJSON 对象,功能类似 Array.forEach()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 currentFeature、featureIndex |
返回
undefined
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
turf.featureEach(features, function (currentFeature, featureIndex) {
//=currentFeature
//=featureIndex
});
# featureReduce
npm install @turf/meta
接收任意 GeoJSON 对象(包括要素集),遍历累加操作。功能类似 Array.reduce()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 previousValue、currentFeature、featureIndex |
initialValue | (*) | 初始值 |
返回
*
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {
//=previousValue
//=currentFeature
//=featureIndex
return currentFeature;
});
# flattenEach
npm install @turf/meta
遍历接收的任意 GeoJSON 对象(包括要素集)。功能类似 Array.forEach()
值得注意的是,如果是多要素集,做扁平处理再遍历,功能类似 Array.flat()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 currentFeature、featureIndex、multiFeatureIndex |
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.multiPoint(
[
[40, 30],
[36, 53]
],
{ hello: "world" }
)
]);
turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {
//=currentFeature
//=featureIndex
//=multiFeatureIndex
console.log(currentFeature);
});
/* 输出三个点要素
{
type: "Feature",
geometry: {
coordinates: [26, 37],
type: "Point"
},
properties: { foo: "bar" }
}
{
type: "Feature",
geometry: {
coordinates: [40, 30],
type: "Point"
},
properties: { hello: "world" }
}
{
type: "Feature",
geometry: {
coordinates: [36, 53],
type: "Point"
},
properties: { hello: "world" }
}
*/
# flattenReduce
npm install @turf/meta
接收任意 GeoJSON 对象(包括要素集),遍历累加操作。功能类似 Array.reduce()
值得注意的是,如果是多要素集,做扁平处理再遍历,功能类似 Array.flat()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 previousValue、currentFeature、featureIndex、multiFeatureIndex |
initialValue | (*) | 初始值 |
返回
*
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.multiPoint(
[
[40, 30],
[36, 53]
],
{ hello: "world" }
)
]);
turf.flattenReduce(features, function (
previousValue,
currentFeature,
featureIndex,
multiFeatureIndex
) {
//=previousValue
//=currentFeature
//=featureIndex
//=multiFeatureIndex
return currentFeature;
});
# getCoord
npm install @turf/invariant
接收类型为 Point 的 GeoJSON,返回该要素的 coordinates 经纬度坐标
值得注意的是,如果入参是数组,只能是一维数组,否则抛出异常错误
参数
入参 | 类型 | 描述 |
---|---|---|
coord | Array|Geometry<Point>|Feature<Point> | GeoJSON 或一维数组 |
返回
Array - coordinates
范例
var pt = turf.point([10, 10]);
var coord = turf.getCoord(pt);
//= [10, 10]
var pt2 = turf.getCoord([1, 2, 3, 4, 5]); // [1,2,3,4,5]
# getCoords
npm install @turf/invariant
接收任意类型的 GeoJSON 或 Geometry,返回该要素的 coordinates 经纬度坐标
参数
入参 | 类型 | 描述 |
---|---|---|
coords | Array|Feature|Geometry | 任意 GeoJSON 对象 |
返回
Array - coordinates
范例
var poly = turf.polygon([
[
[119.32, -8.7],
[119.55, -8.69],
[119.51, -8.54],
[119.32, -8.7]
]
]);
var coords = turf.getCoords(poly);
//= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]
var coords2 = turf.getCoords({
// 也可以是Geometry
type: "LineString",
coordinates: [
[1, 2],
[3, 4]
]
}); // [[1,2], [3,4]]
# getGeom
npm install @turf/invariant
接收任意类型的 GeoJSON,返回该要素的 Geometry
值得注意的是,如果不是 GeoJSON,该方法返回入参本身的值
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | Feature|Geometry | 任意 GeoJSON 对象 |
返回
Geometry|AnyValue
范例
var point = {
type: "Feature",
properties: {},
geometry: {
type: "Point",
coordinates: [110, 40]
}
};
var geom = turf.getGeom(point);
//={"type": "Point", "coordinates": [110, 40]}
turf.getGeom("wrong"); // 'wrong'
# getType
npm install @turf/invariant
接收任意类型的 GeoJSON,返回该要素的类型
值得注意的是,如果是要素,返回类型优先是 Geometry 的 type,如果是要素集,返回类型优先是要素集的 type
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | GeoJSON | 任意 GeoJSON 对象 |
name | String | 在报错消息中展示的变量名,目前暂未使用 |
返回
string - GeoJSON type
范例
var point = {
type: "Feature",
properties: {},
geometry: {
type: "Point",
coordinates: [110, 40]
}
};
var geom = turf.getType(point);
//="Point"
turf.getType({
type: "FeatureCollection",
faetures: [
{
type: "Feature",
geometry: {
type: "Point",
coordinates: [1, 2]
}
},
{
type: "Feature",
geometry: {
type: "LineString",
coordinates: [
[1, 2],
[3, 4]
]
}
}
]
}); // "FeatureCollection"
# geomEach
npm install @turf/meta
接收任意类型的 GeoJSON,遍历它的每个 Geometry。功能类似 Array.forEach()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 currentGeometry、featureIndex、featureProperties、featureBBox、featureId |
返回
undefined
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
turf.geomEach(features, function (
currentGeometry,
featureIndex,
featureProperties,
featureBBox,
featureId
) {
//=currentGeometry
//=featureIndex
//=featureProperties
//=featureBBox
//=featureId
});
# geomReduce
npm install @turf/meta
接收任意 GeoJSON 对象(包括要素集),遍历它的每个 Geometry 并累加操作。功能类似 Array.reduce()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 previousValue、currentGeometry、featureIndex、featureProperties、featureBBox、featureId |
initialValue | (*) | 初始值 |
返回
* - reduce 产生的值
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
turf.geomReduce(features, function (
previousValue,
currentGeometry,
featureIndex,
featureProperties,
featureBBox,
featureId
) {
//=previousValue
//=currentGeometry
//=featureIndex
//=featureProperties
//=featureBBox
//=featureId
return currentGeometry;
});
# propEach
npm install @turf/meta
接收任意类型的 GeoJSON,遍历它的每个要素的 properties。功能类似 Array.forEach()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 currentProperties、featureIndex |
返回
undefined
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
turf.propEach(features, function (currentProperties, featureIndex) {
//=currentProperties
//=featureIndex
});
# propReduce
npm install @turf/meta
接收任意类型的 GeoJSON,遍历它的每个要素的 properties 并累加操作。功能类似 Array.reduce()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 previousValue、currentProperties、featureIndex |
initialValue | (*) | 初始值 |
返回
* - reduce 产生的值
范例
var features = turf.featureCollection([
turf.point([26, 37], { foo: "bar" }),
turf.point([36, 53], { hello: "world" })
]);
turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {
//=previousValue
console.log(currentProperties);
//=featureIndex
return currentProperties;
});
/*
{ foo: "bar" }
{ hello: "world" }
*/
# segmentEach
npm install @turf/meta
接收任意类型的 GeoJSON,遍历它的 2-vertex 线段。功能类似 Array.forEach()
值得注意的是,(Multi)Point 的要素不包含线段,不进行操作
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 currentSegment、featureIndex、multiFeatureIndex、geometryIndex、segmentIndex |
返回
undefined
范例
var polygon = turf.polygon([
[
[-50, 5],
[-40, -10],
[-50, -10],
[-40, 5],
[-50, 5]
]
]);
// Iterate over GeoJSON by 2-vertex segments
turf.segmentEach(polygon, function (
currentSegment,
featureIndex,
multiFeatureIndex,
geometryIndex,
segmentIndex
) {
//=currentSegment
//=featureIndex
//=multiFeatureIndex
//=geometryIndex
//=segmentIndex
});
// Calculate the total number of segments
var total = 0;
turf.segmentEach(polygon, function () {
total++;
});
# segmentReduce
npm install @turf/meta
接收任意类型的 GeoJSON,遍历它的 2-vertex 线段并累加操作。功能类似 Array.reduce()
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection|Feature|Geometry | 任意 GeoJSON 对象 |
callback | Function | 回调,参数依次是 previousValue、currentProperties、featureIndex |
initialValue | (*) | 初始值 |
返回
undefined
范例
var polygon = turf.polygon([
[
[-50, 5],
[-40, -10],
[-50, -10],
[-40, 5],
[-50, 5]
]
]);
// Iterate over GeoJSON by 2-vertex segments
turf.segmentReduce(polygon, function (
previousSegment,
currentSegment,
featureIndex,
multiFeatureIndex,
geometryIndex,
segmentIndex
) {
//= previousSegment
//= currentSegment
//= featureIndex
//= multiFeatureIndex
//= geometryIndex
//= segmentInex
return currentSegment;
});
// Calculate the total number of segments
var initialValue = 0;
var total = turf.segmentReduce(
polygon,
function (previousValue) {
previousValue++;
return previousValue;
},
initialValue
);
# getCluster
npm install @turf/clusters
接收要素集FeatureCollection,过滤指定属性的要素并返回要素集
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection | GeoJSON 要素集 |
filter | (*) | 初始值 |
返回
FeatureCollection - 过滤后的要素集
范例
var geojson = turf.featureCollection([
turf.point([0, 0], { "marker-symbol": "circle" }),
turf.point([2, 4], { "marker-symbol": "star" }),
turf.point([3, 6], { "marker-symbol": "star" }),
turf.point([5, 1], { "marker-symbol": "square" }),
turf.point([4, 2], { "marker-symbol": "circle" })
]);
// Create a cluster using K-Means (adds `cluster` to GeoJSON properties)
var clustered = turf.clustersKmeans(geojson);
// Retrieve first cluster (0)
var cluster = turf.getCluster(clustered, { cluster: 0 });
//= cluster
// Retrieve cluster based on custom properties
turf.getCluster(clustered, { "marker-symbol": "circle" }).length;
//= 2
turf.getCluster(clustered, { "marker-symbol": "square" }).length;
//= 1
# clusterEach
npm install @turf/clusters
接收要素集FeatureCollection,遍历通过指定属性过滤后的要素集集群
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection | GeoJSON 要素集 |
property | String|Number | 用于过滤、区分要素集的属性值 |
callback | Function | 回调,参数依次是 previousValue、currentProperties、featureIndex |
返回
undefined
范例
var geojson = turf.featureCollection([
turf.point([0, 0]),
turf.point([2, 4]),
turf.point([3, 6]),
turf.point([5, 1]),
turf.point([4, 2])
]);
// Create a cluster using K-Means (adds `cluster` to GeoJSON properties)
var clustered = turf.clustersKmeans(geojson); // cluster为0有1个要素,cluster为1有4个要素
// Iterate over each cluster
turf.clusterEach(clustered, "cluster", function (cluster, clusterValue, currentIndex) {
//= cluster
//= clusterValue
//= currentIndex
console.log("cluster: ", cluster, clusterValue);
});
/*
cluster: { type: "FeatureCollection", features: Array(1) }, "0"
cluster: { type: "FeatureCollection", features: Array(4) }, "1"
*/
// Calculate the total number of clusters
var total = 0;
turf.clusterEach(clustered, "cluster", function () {
total++;
});
// Create an Array of all the values retrieved from the 'cluster' property
var values = [];
turf.clusterEach(clustered, "cluster", function (cluster, clusterValue) {
values.push(clusterValue);
});
# clusterReduce
npm install @turf/meta
接收要素集FeatureCollection,遍历通过指定属性过滤后的要素集集群并累加操作
参数
入参 | 类型 | 描述 |
---|---|---|
geojson | FeatureCollection | GeoJSON 要素集 |
property | String|Number | 用于过滤、区分要素集的属性值 |
callback | Function | 回调,参数依次是 previousValue、cluster、clusterValue、currentIndex |
initialValue | (*) | 初始值 |
返回
* - reduce 产生的值
范例
var geojson = turf.featureCollection([
turf.point([0, 0]),
turf.point([2, 4]),
turf.point([3, 6]),
turf.point([5, 1]),
turf.point([4, 2])
]);
// Create a cluster using K-Means (adds `cluster` to GeoJSON properties)
var clustered = turf.clustersKmeans(geojson);
// Iterate over each cluster and perform a calculation
var initialValue = 0;
turf.clusterReduce(
clustered,
"cluster",
function (previousValue, cluster, clusterValue, currentIndex) {
//=previousValue
//=cluster
//=clusterValue
//=currentIndex
return previousValue++;
},
initialValue
);
// Calculate the total number of clusters
var total = turf.clusterReduce(
clustered,
"cluster",
function (previousValue) {
return previousValue++;
},
0
);
// Create an Array of all the values retrieved from the 'cluster' property
var values = turf.clusterReduce(
clustered,
"cluster",
function (previousValue, cluster, clusterValue) {
return previousValue.concat(clusterValue);
},
[]
);
← 聚合函数 ASSERTIONS →