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

booleanConcave

该函数用于在操作区域内判断点是否在凹形区域内部。

参数

  • points (FeatureCollection<Point> | Array<Array<number>>): 包含点的集合。可以是GeoJSON的点列表或类似于[ [1,2],[2,3],[3,4] ] 的点集数组。
  • polygon (Feature<Polygon> | Array<Array<number>>): 凹形区域。可以是GeoJSON的多边形或类似于[[1,2],[2,3],[3,4]]的坐标点数组。

返回值

  • (FeatureCollection<Point>): 值为1的点表示在凹形区域内,值为0的点表示在凹形区域外。

示例

var points = turf.points([
  [-70.603, -33.399],
  [-70.603, -33.395],
  [-70.60, -33.398],
  [-70.606, -33.397],
  [-70.607, -33.393],
  [-70.605, -33.392]
]);

var polygon = turf.polygon([[
  [-70.62, -33.39],
  [-70.63, -33.37],
  [-70.62, -33.37],
  [-70.60, -33.39],
  [-70.62, -33.39]
]]);

var concave = turf.booleanConcave(points, polygon);

//=concave

异常

  • points必须包含至少1个点。
  • polygon必须是Polygon或MultiPolygon。

实现原理

可以用射线法进行计算。为了确定点是否在凹形区域内部,需要找到射线与凹形区域的交点数量。当交点数量为偶数时,该点在凸区域内;如果交点数量为奇数,则该点在凹形区域内。