我正在尝试使用此示例使用另一个 MultiPolygon 为 MultiPolygon 区域创建掩码http://turfjs.org/docs/#mask
由于:
masked = turf.mask(multiPolygon1, multiPolygon2);
我得到错误:
npmcdn.com/@turf/[email protected]/turf.min.js:18 Uncaught TypeError: Cannot read property 'coordinates' of undefined
at s (https://npmcdn.com/@turf/[email protected]/turf.min.js:18:24640)
这可能吗?
mask API 的第二个参数不接受 MultiPolygon。 ( http://turfjs.org/docs/#mask ) 你只能传递一个多边形。
解决方法是:
我就是这样做的。
geometry
可以是 Polygon 或 MultiPolygon 类型,而 cover
必须是 MultiPolygon 类型。
function maskWithMultipolygon(geometry, cover) {
let allMasks = [];
const coords = turf.getCoords(cover);
coords.forEach(function(polyCoords) {
let singlePolygon = turf.polygon(polyCoords);
let maskedPoly = turf.mask(geometry, singlePolygon)
allMasks.push(maskedPoly)
})
const union = allMasks.reduce((a, b) => union(a, b), allMasks[0]);
return union;
}