OpenLayers:运行 计算多边形内的像素
OpenLayers: Running calculations on pixels within polygon
在 OpenLayers 4.6.5 中,我需要 运行 对 TileImage 源进行一些计算,但仅限于位于多边形内的像素,并根据以下结果计算多边形的一些基本统计信息这些计算。
我为每个多边形设想的过程如下:
- 对于多边形中的每个像素,计算红色带除以绿色带的值
- 计算为多边形中所有像素计算的所有值的平均值
- 创建包含单个多边形的新多边形图层,其形状与原始多边形相同,但使用基于平均值的颜色进行着色
这似乎是一个相当简单的任务,但我在网上找不到任何讨论此类事情的内容。我希望找到与 "forEachPixelInFeature" 方法类似的东西,但似乎不存在。我怀疑这个过程需要从一个步骤开始,首先检查每个像素以确定它是否在多边形内,但我在网上也找不到任何可以帮助我的东西。
请注意,我使用的多边形不是常规矩形,因此不幸的是,任何使用简单矩形边界框的解决方案都行不通。
如果有人能在这里指出正确的方向,我将不胜感激。
你可以像这样获取多边形中的像素
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);
在 OpenLayers 4.6.5 中,我需要 运行 对 TileImage 源进行一些计算,但仅限于位于多边形内的像素,并根据以下结果计算多边形的一些基本统计信息这些计算。
我为每个多边形设想的过程如下:
- 对于多边形中的每个像素,计算红色带除以绿色带的值
- 计算为多边形中所有像素计算的所有值的平均值
- 创建包含单个多边形的新多边形图层,其形状与原始多边形相同,但使用基于平均值的颜色进行着色
这似乎是一个相当简单的任务,但我在网上找不到任何讨论此类事情的内容。我希望找到与 "forEachPixelInFeature" 方法类似的东西,但似乎不存在。我怀疑这个过程需要从一个步骤开始,首先检查每个像素以确定它是否在多边形内,但我在网上也找不到任何可以帮助我的东西。
请注意,我使用的多边形不是常规矩形,因此不幸的是,任何使用简单矩形边界框的解决方案都行不通。
如果有人能在这里指出正确的方向,我将不胜感激。
你可以像这样获取多边形中的像素
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);