问题标签 [raster]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
374 浏览

language-agnostic - 计算多边形和光栅图像是否相交

如果我有一个二值图像和一个不规则的凸多边形,我如何计算它们是否相互交叉?多边形的坐标是根据图像来描述的。

从碰撞检测或填充算法的角度来看,我对此有一些想法,但我认为两者都不是最佳的。我确信有一种经过试验和测试的方法,但想不出关键字。

这是我的意思的一个例子:

在此处输入图像描述

在这种情况下,它应该返回 true。

0 投票
2 回答
822 浏览

java - 是否有将两个缓冲图像的栅格相加的功能?

我正在做 2D 过滤,并希望在灰度 BufferedImages 上逐个元素添加。是否有现有的功能可以为我完成这项工作,还是我需要从头开始制作一个?

是否有某种矩阵类可以将栅格转换为矩阵来简化这个问题?

编辑:这是它的一般要点

灰度转换:

0 投票
0 回答
785 浏览

c - 光栅扫描 - 将原始文件转换为 C 中的图像

我有一个具有以下结构的文件:

基本上,我必须将光栅扫描图像的原始数据转换回图像。

此外,根据使用的灰度级数量,每个灰度级会有不同的字符。我的问题是我真的不知道从哪里开始。我知道如果我有一个二维数组会更好,我会在其中输入灰度级的不同字符的整数值。所以即0 = #(然后我会输入#的ASCII值)

这条线读取图像的尺寸以供以后处理,但我不知道如何在不创建森林的情况下使用它,即彼此之间有 10 个循环。我认为主要问题是如何对其进行编程,以便例如当第一个像素的长度为 300 时,我让它转到数组中的下一行。

另外,我不应该使用 malloc,因为我还没有讨论过这个话题。我需要在运行时创建数组的大小,所以我只是创建了一个最大大小为 80*100 的数组。

0 投票
1 回答
1195 浏览

r - 从 R 中的 SDMTools 使用 PatchStat 值创建栅格

我有一个土地覆盖栅格文件,我已将其缩减为仅包含树木覆盖单元格。我clump在 raster 包中使用了 clump() 将森林的连续区域聚集在一起。这使所有相互接触的单元格都具有相同的 ID,因为它们是同一个补丁的一部分。
然后我想找出每个丛的 PatchStat(),我通过将丛栅格转换为 as.matrix 来做到这一点。我试图让 PatchStat() 对栅格执行此操作,但它仅在它位于矩阵中时才有效。

我现在想用补丁统计输出制作一个栅格,即“perim.area.ratio”。因此,对应于丛 1 的每个单元格都将获得与丛 1 对应的 perim.area.ratio 值。为此,我从我的丛栅格中制作了一个 data.frame(),它具有:lon, lat, layer(clumpID), cellID我尝试使用layerpatchID
将我的丛集栅格 data.frame 与 PatchStat 输出合并。但是,会发生错误:

fix.by(by.x, x) 中的错误:“by”必须指定有效的列。

任何想法我可以如何以另一种方式做到这一点,或者为什么这些列无效?代码如下。

0 投票
1 回答
2029 浏览

actionscript-3 - 如何在光栅中绘制抗锯齿贝塞尔曲线?

有谁知道在光栅中绘制抗锯齿(平滑)二次贝塞尔曲线的体面算法?我可以简单地将它们绘制为矢量,然后将图像复制到光栅中。

是否有任何聪明但免费的算法可以将曲线直接绘制到像素上?我目前正在使用这里实现的算法: http: //www.bytearray.org/?p= 67 quadBezier() 我想知道是否有办法改变它来呈现抗锯齿贝塞尔曲线?提前致谢。

我这样做是为了学习,因为我希望它比使用 Shape 选项中的复制像素更快。这是一个示例,显示非平滑贝塞尔曲线比常规贝塞尔曲线更快:http: //lab.generalrelativity.org/raster/

0 投票
4 回答
3337 浏览

performance - 提高性能/速度

我需要从 1303 个栅格中获取数据(每个栅格都有 1 个月的数据)并为栅格中的每个网格单元制作一个时间序列。最后,我会将所有时间序列加入一个庞大的(动物园)文件中。

我有可以做到这一点的代码(我尝试了一小部分数据集并且它有效)但它似乎永远只是为了堆叠栅格(现在超过 2 小时并且仍在计数),这不是较慢的部分,这将是时间序列。所以这是我的代码,如果有人知道堆叠栅格和/或创建时间序列的更快方法(可能没有双循环?)请帮助...

我不知道任何其他编程语言,但这对 R 来说是否太过分了?

0 投票
1 回答
3653 浏览

r - 用 ggplot 绘制栅格因子值

我在使用 ggplot2 绘制具有因子值的栅格时遇到问题。

一、加载栅格数据

提取坐标和值

使用 geom_raster() 绘制网格。一切正常。

我没有连续的栅格,而是分类的。重新分类栅格:

绘制分类栅格。也可以,但传说是连续的

如果我将值绘制为因子,则地图会出错

0 投票
1 回答
370 浏览

r - 使用 ggplot 的“annotation_raster”并达到 R 的“内存上限”

我正在使用 R 创建具有如下几层的房屋的平面图,从底层开始:

  • basemap:平面图的扫描版,我把它放在底层以帮助阅读
  • bed:房子有几十张床,分散在房子的不同房间里,根据住户的特点有不同的颜色
  • piechart:每张床上面都有一个饼图,饼图也是根据住户的其他特征创建的,有的床有饼图,有的没有。

bedpiechart是基于基于底图创建的shp文件创建的(即我使用Mapwindow创建矢量图层,将底图作为栅格图层导入并放在底部,然后一张一张地绘制床。床的shp文件然后将其导入R,计算床多边形的质心,该质心有助于定位饼图)

read.jpeg以前是导入basemaptoimagematrix对象,然后用新annotation_raster函数inggplot2 0.9basemap最下面的地图图层,由于bed图层也是基于图层创建的basemap,图层完美bed叠加在图层上。basemapggplot2

我可以毫无问题地创建地图 - 如果basemap足够小(3000 x 3000像素),现在我有一个basemap像素8000+ x 3000+object.size241823624 字节),我在创建 shp 文件时没有意识到 R 内存问题,ggplot可以编译对象如果我annotation_raster禁用了,但 R 一直说我可以在尝试将 xxxMB 包含basemapggplot对象中时分配内存。

我认为这与 jpg 文件的压缩无关,因为即使我进一步压缩 jpg 文件,尺寸也不会改变。但是我无法调整 jpg 文件的大小,因为我的bed图层是根据原始 jpg 文件的尺寸创建的。

basemap任何人都可以在不改变 jpeg 尺寸或其他一些技巧来处理 R 的内存限制的情况下帮助缩小图像矩阵的大小吗?谢谢。

0 投票
2 回答
4963 浏览

r - 在 R 中处理大量数据和大量栅格?

G'day,我正在处理一个包含约 125,000 个经纬度位置和日期的大型数据集,用于物种存在/不存在记录。对于每个位置,我想计算出日期和日期前 3 个月内每个位置的天气情况。为此,我下载了在 5 年内获取数据的给定天气变量(例如,最高温度)的每日天气数据。我总共有 1,826 个光栅文件,都在 2-3mb 之间。

我曾计划堆叠所有光栅文件,然后从每个光栅 (1,826) 中为每个点提取一个值。这将产生一个庞大的文件,我可以用它来搜索我需要的日期。但是,这是不可能的,因为我无法堆叠那么多栅格。我尝试将栅格拆分为 500 个堆栈,这可行,但它生成的文件大约 1Gb 并且非常慢(行,125,000;列,500)。此外,当我尝试将所有这些文件带入 R 以创建大数据框时,它不起作用。

我想知道是否有办法在 R 中处理这么多数据,或者是否有一个包可以用来提供帮助。我可以使用像ff这样的包吗?有没有人有什么建议可以用一种不太耗电的方法来做我想做的事情?我曾考虑过类似 lapply 的功能,但以前从未使用过,也不确定从哪里开始。

任何帮助都会非常棒,提前感谢您的宝贵时间。我目前使用但没有成功的代码如下。

亲切的问候,亚当

0 投票
2 回答
10705 浏览

java - 如何在java中从像素字节数组制作bmp图像

我有一个字节数组,其中包含来自 .bmp 文件的像素值。它是通过这样做生成的:

现在我需要重新创建 .bmp 图像。我试图制作一个 BufferedImage 并通过调用该setPixels方法来设置 WritableRaster 的像素。但是我必须提供一个 int[]、float[] 或 double[] 数组。也许我需要将字节数组转换为其中之一。但我不知道该怎么做。我也试过这个setDataElements方法。但我也不知道如何使用这种方法。

谁能解释如何从字节数组创建 bmp 图像?

编辑: @Perception

这是我到目前为止所做的:

private byte[] getPixelArrayToBmpByteArray(byte[] pixelData, int width, int height, int depth) throws Exception{ int[] pixel = byteToInt(pixelData); BufferedImage 图像 = null; if(depth == 8) { image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY); } else if(depth == 24){ image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); } WritableRaster 光栅 = (WritableRaster) image.getData(); raster.setPixels(0, 0, 宽度, 高度, 像素); image.setData(光栅);返回 getBufferedImageToBmpByteArray(image); } private byte[] getBufferedImageToBmpByteArray(BufferedImage image) { byte[] imageData = null; 尝试 { ByteArrayOutputStream bas = new ByteArrayOutputStream(); ImageIO.write(image, "bmp", bas); imageData = bas.toByteArray(); bas.close(); } 捕捉(异常 e){ e.printStackTrace(); } 返回图像数据;} private int[] byteToInt(byte[] data) { int[] ints = new int[data.length]; 对于 (int i = 0; 我