小编Wra*_*raf的帖子

如何投影和重新采样网格以与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万
查看次数

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

我想绘制一个包含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
查看次数

R裁剪光栅的无数据

我想在没有手动定义范围的情况下裁剪一些栅格的无数据部分(1中没有数据为黑色的图像示例 ).

任何的想法?

没有数据的图像

r crop raster no-data

7
推荐指数
1
解决办法
7127
查看次数

如何重新采样栅格捕捉到现有网格?

我想在定义的网格单元格中将栅格从高分辨率重新采样到低分辨率(具有不同的范围).有没有办法使用现有的栅格文件作为捕捉的输入?

在光栅包,aggregate并且resample似乎是足够的,但我无法找到如何做到这一点.

aggregate r raster resampling snapping

5
推荐指数
2
解决办法
6547
查看次数

如何直接使用栅格属性表来渲染栅格,并仅为栅格中显示的类显示图例?

我想使用栅格属性表信息来创建栅格的图例,例如栅格1,并仅为栅格中显示的类显示图例.我建立了一个例子来解释我想要得到什么.

1 /构建栅格

r <- raster(ncol=10, nrow=10)
values(r) <-sample(1:3,ncell(r),replace=T)
Run Code Online (Sandbox Code Playgroud)

2 /添加栅格属性表

r <- ratify(r) # build the Raster Attibute table
rat <- levels(r)[[1]]#get the values of the unique cell frot the attribute table
rat$legend <- c('Class A', 'Class B', 'Class C')
levels(r) <- rat
Run Code Online (Sandbox Code Playgroud)

3 /绘制光栅1

my_col=c('blue','red','green')
plot(r,col=my_col,legend=F,box=F,axes=F)
legend(x='top', legend =rat$legend,fill = my_col)
Run Code Online (Sandbox Code Playgroud)

我想用legend =rat$legend链接到ratser属性表的栅格属性替换参数.我尝试使用levels()这样的不同组合,c(levels(r)[[1]][1])但我生成一个列表,而不是在legend参数中不可用的字符.

4 /裁剪并将光栅绘制到只有2个类的部分(这里是右下角的4个像素)2

rcrop<-crop(r,extent(r,9,10,9,10))
plot(rcrop,col=my_col,legend=F,box=F,axes=F)
Run Code Online (Sandbox Code Playgroud)

对于第二个图,我因此想自动只显示光栅2上显示的类的图例.

传说中的光栅

带有图例的裁剪光栅


这是Roman 4提出的解决方案. 罗马提出的解决方案

r raster map legend categorical-data

5
推荐指数
1
解决办法
2475
查看次数

如何使用光谱python处理多光谱栅格文件?

我有兴趣使用Spectral Python (SPy) 来可视化和分类多波段栅格 GeoTIFF(不是高光谱数据)。目前看来只有.lan文件.gis格式是可读的。

我尝试将文件转换为.lanwith gdal_translate,但不支持图像格式( IOError: Unable to determine file type or type not supported)。

知道如何将该库用于非超光谱数据集吗?

python raster gdal geotiff spectral-python

5
推荐指数
1
解决办法
3407
查看次数

如何使用gdal_translate或gdalwarp将HDF5转换为geotiff?

我有一个10°x 10°的未经过引用的HDF5,我想转换为geotiff.我尝试了2种方法(1)gdalwarp(2)gdal_translate但是无法找到如何转换文件.

1)gdalwarp

gdalwarp -t_srs '+proj=longlat +datum=WGS84 +no_defs ' -te 40 30 50 40 -tr 0.0089285714 -0.0089285714 -multi HDF5:"/PathToTheHDF/FileName.HDF5"://SUBDATASET /PathToOutput/FileName_Subdataset.tif
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

ERROR 1: Unable to compute a transformation between pixel/line
and georeferenced coordinates for ...
There is no affine transformation and no GCPs.
256
Run Code Online (Sandbox Code Playgroud)

2)gdal_translate

gdal_translate -of GTiff -a_srs '+proj=longlat +datum=WGS84 +no_defs ' -a_ullr 40 40 50 30 HDF5:"/PathToTheHDF/FileName.HDF5"://SUBDATASET /PathToOutput/FileName_Subdataset.tif
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

Input file size is 1120, 1120
0HDF5-DIAG: Error detected in HDF5 (1.8.11) thread …
Run Code Online (Sandbox Code Playgroud)

hdf5 gdal geotiff

4
推荐指数
1
解决办法
5136
查看次数

如何使用不同的投影裁剪光栅

我想用两个具有不同范围和不同投影系统的 geotiff 文件的 2 个子图制作一个图形。我想根据 Rapideye 范围裁剪绘图。我应该怎么做 ?以下是该文件的详细信息。

点VGT

class       : RasterLayer 
dimensions  : 8961, 8961, 80299521  (nrow, ncol, ncell)
resolution  : 0.008928571, 0.008928571  (x, y)
extent      : -20, 60.00893, -40.00893, 40  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : /AFRI_VGT_V1.3.tiff 
names       : g2_BIOPAR_WB.GWWR_201305110000_AFRI_VGT_V1.3 
values      : 0, 255  (min, max)
Run Code Online (Sandbox Code Playgroud)

快速眼

class       : RasterStack 
dimensions  : 14600, 14600, 213160000, 5  (nrow, ncol, ncell, nlayers)
resolution  : 5, 5  (x, y)
extent      : 355500, …
Run Code Online (Sandbox Code Playgroud)

plot r raster

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