屏蔽并从 vrt 文件中提取单元格值?

mask and extract cell values from a vrt file?

我有全球建成区的光栅数据,分辨率为 40m 作为 vrt 文件,download data from here,我试图通过蒙版裁剪数据,然后为每个单元格提取颜色索引值。

注意:另外 2 个文件存在数据:vrt.clrvrt.ovr

这是一个数据样本: view of vrt data in arcmap.

我的问题:为什么我在按蒙版裁剪时得到空单元格值?

我试过以下方法:

另外,有没有办法在屏蔽数据后读取给定坐标 (x,y) 处的颜色索引值?

数据似乎采用伪墨卡托投影 (EPSG 3857)。因此,您应该在该坐标系中指定 projWin 的范围,或者如果您想在不同的坐标系中提供它们,请添加 projWinSRS

另外,如果你想gdal.Translate输出到VRT文件,你应该添加format='VRT。因为在您的代码片段中输出为默认文件格式,即 GeoTIFF。

当我假设您的坐标是 WGS84 (EPSG 4326) 时,它定义了斯里兰卡南部海洋上空的一个小区域。鉴于数据的性质,这没有多大意义。

如果你想读取坐标给定的数组,你可以使用:

invrt = 'GHS_BUILT_LDSMT_GLOBE_R2015B_3857_38_v1_0.vrt'
outfile = '/vsimem/tmpfile'

ds = gdal.Translate(outfile, invrt, projWin=[80.439, 5.341, 81.048, 4.686], projWinSRS='EPSG:4326')
data = ds.ReadAsArray()
ds = None
gdal.Unlink(outfile)

绘制的数组如下所示: