在OpenLayers 4.6.5中,我需要对TileImage源运行一些计算,但仅针对位于多边形内的像素,并根据这些计算结果为多边形计算一些基本统计信息。
我为每个多边形设想的过程如下:
这似乎是一个相当简单的任务,但是我在网上找不到任何讨论这种事情的东西。我希望找到一些类似于“ forEachPixelInFeature”方法的东西,但这似乎并不存在。我怀疑该过程需要从首先检查每个像素以确定它是否在多边形内的步骤开始,但是我在网上找不到任何可以帮助我的东西。
请注意,我正在使用的多边形不是规则的矩形,因此,不幸的是,任何使用简单矩形边界框的解决方案都行不通。
如果有人能指出我正确的方向,我将非常感谢。
答案 0 :(得分:1)
您可以像这样在多边形中获取像素
var geom = myFeature.getGeometry();
var size = map.getSize();
var pixels = [];
if (geom.intersectsExtent(map.getView().calculateExtent(size))) {
for (var i=0; i<size[0]; i++) {
for (var j=0; j<size[1]; j++) {
var coordinate = map.getCoordinateFromPixel([i,j]);
if (geom.intersectsCoordinate(coordinate)) pixels.push([i,j]);
}
}
}
console.log(pixels);