澄清:我在某种程度上忽略了关键方面:不使用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) 我想绘制一个包含4个不同值(1)的栅格,其中包含一个分类文本图例,用于描述类别,例如2但带有颜色框:
我尝试过使用传奇,例如:
legend( 1,-20,legend = c("land","ocean/lake", "rivers","water bodies"))
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将一个值与显示的颜色相关联.有没有办法检索"情节"显示的颜色并在图例中使用它?


我想在定义的网格单元格中将栅格从高分辨率重新采样到低分辨率(具有不同的范围).有没有办法使用现有的栅格文件作为捕捉的输入?
在光栅包,aggregate并且resample似乎是足够的,但我无法找到如何做到这一点.
我想使用栅格属性表信息来创建栅格的图例,例如栅格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提出的解决方案.

我有兴趣使用Spectral Python (SPy) 来可视化和分类多波段栅格 GeoTIFF(不是高光谱数据)。目前看来只有.lan文件.gis格式是可读的。
我尝试将文件转换为.lanwith gdal_translate,但不支持图像格式( IOError: Unable to determine file type or type not supported)。
知道如何将该库用于非超光谱数据集吗?
我有一个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) 我想用两个具有不同范围和不同投影系统的 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)