coordEach
是Turf.js中的一个函数,用于遍历GeoJSON几何对象中的每个坐标,并对它们执行特定的操作。它可以应用于所有的GeoJSON几何类型。
turf.coordEach(geojson, callback)
geojson
(GeoJSON对象) - 需要遍历坐标的GeoJSON几何对象callback
(函数) - 对于每个坐标,需要执行的回调函数。callback函数将被传递一个包含3个参数的对象,分别是坐标、当前坐标在坐标数组中的索引位置和该几何对象中所有坐标的总数。callback函数可返回一个值,以在循环中控制执行。如果callback函数返回false
,则循环将停止。如果callback函数返回true
,则循环会继续。var bbox = [-74.04728500751165, 40.68392799015035, -74.0470049984458, 40.684216988041875];
var cellWidth = 50;
var pointGrid = turf.pointGrid(bbox, cellWidth);
turf.coordEach(pointGrid, function (currentCoord) {
console.log(currentCoord);
});
/*
Output:
[ -74.04728500751165, 40.68392799015035 ]
[ -74.04678769795484, 40.68392799015035 ]
[ -74.04728500751165, 40.6844293470291 ]
[ -74.04678769795484, 40.6844293470291 ]
...
*/
在此示例中,我们使用pointGrid
函数创建一个点网格,该网格位于bbox
数组中指定的矩形区域中。然后,使用coordEach
函数遍历网格中的所有点,并使用回调函数打印每个点的坐标。
当需要将整个GeoJSON几何对象的属性作为参数传递给回调函数时,可以使用coordEach
函数的this
关键字,如下所示:
var feature = {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-75.343, 39.984]
},
"properties": {
"name": "Test feature"
}
};
turf.coordEach(feature.geometry, function (currentCoord, index, total) {
console.log(this.properties.name); // "Test feature"
}, feature);
在此示例中,我们在将feature
对象作为coordEach
函数的第三个参数传递,以在回调函数中使用properties
属性。
如果需要对GeoJSON几何对象中的每个坐标执行不同的操作,可以使用turf.coordReduce
函数。
在使用turf.booleanContains
函数进行空间分析时,coordEach
函数特别有用,它允许我们使用回调函数检查所有点是否在多边形中。
可以使用geom.type === 'GeometryCollection'
判断传入函数的几何对象类型是否为GeometryCollection
。如果是,则需要在回调函数中进一步遍历几何类型对象。
coordEach
函数很容易深度嵌套,导致代码难以维护。如果需要对多个GeoJSON几何对象执行相同的操作,请考虑coordEach
和coordReduce
函数之间的区别。