openlayers - OpenLayers:对多边形内的像素运行计算
问题描述
在 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);
推荐阅读
- c - LLDB:没有用于查找默认文件的选定框架。没有提供文件,也没有可用的默认文件
- excel - VBA:使用连接字符串作为命令
- caching - 信号量 CI - 环境变量不正确
- reactjs - 自定义 react-gridjs 的表头
- git - Git 无法索引文件 - 添加文件失败
- java - URL 资源 = this.getClass().getResource("file-name") 为空
- amazon-web-services - AWS CodeBuild 无法生成测试报告“跳过无效文件路径 build/test-results/test”。为什么路径无效?
- laravel - laravel spatie 数据库备份到 cpanel 上的谷歌驱动器
- html - 为什么我的视频在移动设备上按播放前没有显示图像
- javascript - 获取值数组和定义的函数,并生成一个函数数组,每个函数都包含各自的值