【问题标题】:OpenLayers: Running calculations on pixels within polygonOpenLayers:对多边形内的像素运行计算
【发布时间】:2019-01-14 18:34:32
【问题描述】:

在 OpenLayers 4.6.5 中,我需要对 TileImage 源进行一些计算,但仅限于位于多边形内的像素,并根据这些计算结果计算多边形的一些基本统计数据。

我为每个多边形设想的过程如下:

  • 对于多边形中的每个像素,计算红色带除以绿色带的值
  • 计算为多边形中所有像素计算的所有值的平均值
  • 创建包含单个多边形的新多边形图层,形状与原始多边形相同,但使用基于平均值的颜色进行着色

这似乎是一项相当简单的任务,但我在网上找不到任何讨论这种事情的东西。我希望找到类似于“forEachPixelInFeature”方法的东西,但这似乎不存在。我怀疑这个过程需要从一个步骤开始,首先检查每个像素以确定它是否在多边形内,但我在网上也找不到任何可以帮助我的东西。

请注意,我使用的多边形不是常规矩形,因此很遗憾,任何使用简单矩形边界框的解决方案都行不通。

如果有人能在这里指出正确的方向,我将不胜感激。

【问题讨论】:

  • 为什么投反对票?

标签: openlayers


【解决方案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);

【讨论】:

  • 完美——正是我开始所需要的。再次感谢@Mike!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多