首页 > 解决方案 > OpenLayers:对多边形内的像素运行计算

问题描述

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

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

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

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

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

标签: openlayers

解决方案


您可以像这样在多边形中获取像素

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);

推荐阅读