屏蔽并从 vrt 文件中提取单元格值?
mask and extract cell values from a vrt file?
我有全球建成区的光栅数据,分辨率为 40m 作为 vrt 文件,download data from here,我试图通过蒙版裁剪数据,然后为每个单元格提取颜色索引值。
注意:另外 2 个文件存在数据:vrt.clr
和 vrt.ovr
这是一个数据样本:
view of vrt data in arcmap.
我的问题:为什么我在按蒙版裁剪时得到空单元格值?
我试过以下方法:
- 使用 arcmap 工具箱按掩码提取
在 python 2.7
中使用 gdal
import gdal
ds = gdal.Open('input.vrt')
ds = gdal.Translate('output.vrt', ds, projWin =
[80.439,5.341,81.048,4.686])
ds = None
我也试过将数据保存为tif
另外,有没有办法在屏蔽数据后读取给定坐标 (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)
绘制的数组如下所示:
我有全球建成区的光栅数据,分辨率为 40m 作为 vrt 文件,download data from here,我试图通过蒙版裁剪数据,然后为每个单元格提取颜色索引值。
注意:另外 2 个文件存在数据:vrt.clr
和 vrt.ovr
这是一个数据样本: view of vrt data in arcmap.
我的问题:为什么我在按蒙版裁剪时得到空单元格值?
我试过以下方法:
- 使用 arcmap 工具箱按掩码提取
在 python 2.7
中使用 gdalimport gdal ds = gdal.Open('input.vrt') ds = gdal.Translate('output.vrt', ds, projWin = [80.439,5.341,81.048,4.686]) ds = None
我也试过将数据保存为tif
另外,有没有办法在屏蔽数据后读取给定坐标 (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)
绘制的数组如下所示: