标签: raster

从R中的jpeg图像中提取RGB通道

为了在R中对jpeg图像进行分类,我想获得每个像素的RGB值.

我的问题:有没有办法从R中的jpeg图像中提取RGB通道?

rgb jpeg r raster

13
推荐指数
3
解决办法
1万
查看次数

PROJ4 到 PROJ6 升级和“丢弃数据”警告

语境

我的问题与从 PROJ4 升级到 PROJ6 引起的变化以及各种 R 空间包 ( sp, sf, raster) 中的后果有关。

我们现在收到很多关于“废弃数据”的警告,看起来有点令人担忧,我有点困惑我应该怎么做。我可以看到这在某些情况下会产生可怕的后果,而在其他情况下可以忽略它们。

似乎我不是唯一一个有点迷茫的人(见这里)。我希望我提出的带有特定可重现示例的问题将有助于我们更好地理解该主题。

我知道我们可以删除警告,并且我已经阅读了上下文:r-spatial 博客文章迁移到 PROJ6/GDAL3这些研讨会笔记(mapview 在更新的版本中似乎以不同的方式处理此问题)

问题

问题 1:

可能是一个幼稚的问题:

我知道需要在 PROJ6 中实现新的符号/格式(WKT)(例如,因为需要更高的精度),但我不明白为什么需要从旧的 proj4 字符串中删除数据部分符号。为什么不保持原样(并以新的 WKT 格式/符号实现新功能)

问题2 :

似乎我们有 3 个关于旧 proj4 格式的数据丢失的案例:

  1. 没有警告:数据保持在旧的 proj4string 表示法中(sf默认?)
  2. 我们有一个警告“丢弃的数据 (...) 但 +towgs84= 保留了值”
  3. 我们有一个警告“Discarded datum (...)”(在这种情况下,字符串的“+towgs84=”部分被丢弃/丢弃 –>sp默认 ?? )

下面的例子说明了我们有这些警告的不同情况。

为什么我们在同一个 CRS 上有这 3 个不同的案例(这里是 EPSG 31370)?
删除基准和/或+towgs84零件的后果是什么?
我应该对第二个警告比第三个更不担心吗? …

r raster rgdal r-sp r-sf

13
推荐指数
1
解决办法
5455
查看次数

相当于PNG的视频?

对于光栅图像,有:
JPG用于自然场景
PNG或GIF用于几何场景,其特点是平滑的颜色,直线和渐变.

对于矢量动画,有SVG

对于光栅视频,有各种MPEG编解码器可以很好地完成自然场景.

所以我的问题是,我应该将什么用于专门用于栅格化光滑颜色,线条和渐变的视频?

video png image raster

12
推荐指数
3
解决办法
1万
查看次数

如何投影和重新采样网格以与GDAL python匹配另一个网格?

澄清:我在某种程度上忽略了关键方面:不使用os.system或subprocess - 只是python API.

我正在尝试转换NOAA GTX偏移网格的一部分以进行垂直基准转换,而不是完全遵循如何在GDAL中使用python执行此操作.我想采用一个网格(在这种情况下是一个Bathymetry归属网格,但它可能是一个geotif)并将其用作我想要做的模板.如果我能做到这一点,我觉得它将极大地帮助人们使用这种类型的数据.

这就是我所拥有的绝对无效的东西.当我在生成的目标数据集(dst_ds)上运行gdalinfo时,它与源网格BAG不匹配.

from osgeo import gdal, osr

bag = gdal.Open(bag_filename)
gtx = gdal.Open(gtx_filename)

bag_srs = osr.SpatialReference()
bag_srs.ImportFromWkt(bag.GetProjection())

vrt = gdal.AutoCreateWarpedVRT(gtx, None, bag_srs.ExportToWkt(), gdal.GRA_Bilinear,  0.125)

dst_ds = gdal.GetDriverByName('GTiff').Create(out_filename, bag.RasterXSize, bag.RasterYSize,
                                            1, gdalconst.GDT_Float32)
dst_ds.SetProjection(bag_srs.ExportToWkt())
dst_ds.SetGeoTransform(vrt.GetGeoTransform())

def warp_progress(pct, message, user_data):
  return 1

gdal.ReprojectImage(gtx, dst_ds, None, None, gdal.GRA_NearestNeighbour, 0, 0.125, warp_progress, None)
Run Code Online (Sandbox Code Playgroud)

示例文件(但它们重叠的任何两个网格,但在不同的投影中都会这样做):

命令行等同于我正在尝试做的事情:

gdalwarp -tr 2 -2 -te 369179 4773093 372861 4775259 -of VRT -t_srs EPSG:2960 \
     MENHMAgome01_8301/mllw.gtx  mllw-2960-crop-resample.vrt
gdal_translate mllw-2960-crop-resample.{vrt,tif}
Run Code Online (Sandbox Code Playgroud)

python gis raster osgeo gdal

12
推荐指数
1
解决办法
1万
查看次数

在shapefile后面绘制栅格

如何在shapefile对象后面绘制"栅格"对象?两者都可以自己绘制,但是这些点不会覆盖栅格:

require(rgdal)
require(maptools)
require(raster)

myproj = "+proj=utm +zone=12 +north +ellps=WGS84 +units=m"
shp = readShapeSpatial(fn.shp, proj4string = CRS(myproj))
ras = raster(fn.tif)

plot(ras)
plot(shp, bg="transparent", add=TRUE)
Run Code Online (Sandbox Code Playgroud)

r raster r-maptools rgdal

11
推荐指数
1
解决办法
2万
查看次数

将rgl 3D场景保存到u3d(用于.pdf集成)

我有一个使用R rgl包生成的3D场景.

  • 我可以通过rgl函数将它保存为RTL和OBJ格式,但这些函数不支持颜色.
  • 我可以将它保存在WebGL中,但是我找不到WebGL到.u3d转换器,也没有任何方法可以在.pdf文件中插入WebGL内容(用LaTeX生成).
  • 我可以保存为PLY格式,然后导出到.u3d(例如使用Meshlab),但它给我以下错误:

    Error in if (sum(normals[1:3, it[j, i]] * normal) < 0) normals[, it[j,  : 
    missing value where TRUE/FALSE needed 
    
    Run Code Online (Sandbox Code Playgroud)

哪个我真的不知道怎么解决.

是一个重现问题的示例文件.要重现只需在工作目录中下载文件,执行R并运行:

library(rgl)
load("alps3d.Rdata") #This loads the alps3d variable
plot3d(alps3d)
writePLY("alps3d.ply")
Run Code Online (Sandbox Code Playgroud)

如何以可以使用LaTeX在.pdf中迭代的格式保存3d场景?

r raster rgl u3d

11
推荐指数
1
解决办法
1616
查看次数

带有分类数据的栅格地图图例

我想绘制一个包含4个不同值(1)的栅格,其中包含一个分类文本图例,用于描述类别,例如2但带有颜色框:

我尝试过使用传奇,例如:

legend( 1,-20,legend = c("land","ocean/lake", "rivers","water bodies"))
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将一个值与显示的颜色相关联.有没有办法检索"情节"显示的颜色并在图例中使用它?

初始栅格

传说中的光栅

r raster map legend categorical-data

10
推荐指数
1
解决办法
7490
查看次数

使用绘图(...,add = T)叠加栅格图会导致最终绘图的任意错位

我发现当我尝试使用绘图(...,add = T)覆盖多个栅格时,如果我尝试将多于3个栅格叠加在一起,则后续绘图不会正确对齐栅格.

我最初的意图是创建一个模拟的土地覆盖的分类地图,其中代表封面类的颜色的黑暗与我们的模型投影中的确定性不同.为此,我创建了一个简单的脚本,它将遍历每个封面类并使用从灰色(低确定性森林预测)到全覆盖颜色(例如,深绿色)的颜色渐变来绘制它(例如,森林,地图上的绿色)对于强烈预测的区域).我发现使用这种方法,在第3个封面添加到绘图之后,所有后续覆盖在绘图上的栅格都是任意错位的.我已经颠倒了封面类的绘图顺序,并且表现出相同的行为,这意味着它不是个别封面类栅格的问题.在Rstudio中更令人费解的是,当我使用变焦按钮仔细检查最终情节时,错位会恶化.

你对这种行为存在的原因有什么看法吗?最重要的是,您有任何建议的解决方案或解决方法吗?

下面链接中的代码和数据具有捕获的所有描述的行为. https://dl.dropboxusercontent.com/u/332961/r%20plot%20raster%20add%20issue.zip 转动plot_gradient = F看看你如何只是简单地将同一个栅格子集化并按顺序将子集添加到同一个图中可以复制这个问题.我已经尝试设置绘图设备图的范围(...,ext),但这不起作用.我也检查了每个封面光栅的范围是一样的.

下面是未对齐的封面类的图.绘制到jpeg设备将导致类似的图像(即,这不是Rstudio渲染的问题). 在此输入图像描述 奇怪的是,如果我使用Rstudio放大图像,则不对齐是不同的 在此输入图像描述 相比之下,这就是封面应该如何在景观中正确对齐 在此输入图像描述

library(raster)
library(colorRamps)
raster_of_classes=raster("C:/r plot raster add issue/raster_of_classes.tif")
raster_of_certainty_of_classes=raster("C:/r plot raster add issue/raster_of_certainty_of_classes.tif")
endCols=c("darkorchid4", "darkorange3", "red3", "green4", "dodgerblue4") #colors to be used in gradients for each class
classes=unique(raster_of_classes)
minVal=cellStats(raster_of_certainty_of_classes, min)
tmp_i=1
addPlot=F
plot_gradient=F #this is for debug only
#classes=rev(classes) #turn this off and on to see how last 2 classes are mis aligned, regardless of plotting order
for (class in classes){
  raster_class=raster_of_classes==class #create mask for individual class
  raster_class[raster_class==0]=NA …
Run Code Online (Sandbox Code Playgroud)

plot r raster

10
推荐指数
2
解决办法
4627
查看次数

如何更改R中栅格图层的分辨率

我在R中使用了几个高分辨率栅格图层.对于我正在运行的一些分析,细节水平过高,因此我希望通过降低分辨率来加快速度.

坐标系是UTM,因此单位是米.决议说它是30,30(x,y).所以这里的分辨率似乎是30米.

有人可以告诉我如何将分辨率改为120米吗?我已经阅读了resample()和projectRaster()函数的帮助,但它们似乎需要一个具有所需分辨率的模板栅格,这是我没有的.

以下是我的一个栅格图层的示例:

alt.utm
类:RasterLayer
尺寸:4572,2495,11407140(nrow,ncol,ncell)
分辨率:30,30(x,y)
范围:421661,496511,4402939,4540099(xmin,xmax,ymin,ymax)
coord.REF.:+ proj = utm + zone = 13 + ellps = GRS80 + towgs84 = 0,0,0,0,0,0,0 + units = m + no_defs
数据源:在内存
名称中:图层
值:1485.127,4275.202(分钟,最大)

r resolution raster utm

10
推荐指数
4
解决办法
2万
查看次数

将栅格数据导入NetLogo会导致所有补丁变量= 0的列

当我使用此代码将栅格图层导入NetLogo并调整世界大小时,最后一列的所有补丁变量在应包含数据时为零.这种情况仅发生在同一景观中的几个栅格上.

set rasterLayer gis:load-dataset "x.asc"
resize-world 0 (gis:width-of rasterLayer) -1 0 (gis:height-of rasterLayer) -1
gis:set-world-envelope gis:envelope-of rasterLayer
gis: apply-raster rasterLayer 
Run Code Online (Sandbox Code Playgroud)

在调整世界大小时没有'-1',我得到一列NaN值(将栅格数据导入NetLogo导致NaN值的行/列).

这个光栅的尺寸是正确的; 0值的列不是额外的值,这意味着某些数据会丢失.

gis raster netlogo

10
推荐指数
1
解决办法
82
查看次数

标签 统计

raster ×10

r ×7

gis ×2

rgdal ×2

categorical-data ×1

gdal ×1

image ×1

jpeg ×1

legend ×1

map ×1

netlogo ×1

osgeo ×1

plot ×1

png ×1

python ×1

r-maptools ×1

r-sf ×1

r-sp ×1

resolution ×1

rgb ×1

rgl ×1

u3d ×1

utm ×1

video ×1