MEASUREMENT
COORDINATE MUTATION
TRANSFORMATION
FEATURE_CONVERSION
MISC
HELPER
RANDOM
GRIDS
AGGREGATION
META
ASSERTIONS
BOOLEANS
UNIT CONVERSION
DATA
JOINS
CLASSIFICATION

coordEach

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几何对象执行相同的操作,请考虑coordEachcoordReduce函数之间的区别。