我有全球建筑区域的栅格数据,分辨率为40m作为vrt文件,download data from here,我试图通过掩码裁剪数据,然后提取每个单元格的颜色索引值。
注意:另外2个文件包含数据:vrt.clr
和vrt.ovr
以下是数据示例: view of vrt data in 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)处的颜色索引值?
答案 0 :(得分:1)
数据似乎在Pseudo Mercator投影中(EPSG 3857)。因此,您应该在该坐标系中指定projWin
的范围,或者如果要在不同的坐标系中提供projWinSRS
,则添加gdal.Translate
。
此外,如果您希望format='VRT
输出到VRT文件,则应添加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)
。因为在你的代码片段输出到默认文件格式,即GeoTIFF。
当我假设您的坐标是WGS84(EPSG 4326)时,它定义了斯里兰卡南部海洋上的一个小区域。鉴于数据的性质,这没有多大意义。
如果您想阅读坐标给出的数组,可以使用:
let script = "JSON.stringify([].slice.call(document.getElementsByTagName('img')).map(function(img) { return {url: img.src, width: img.clientWidth, height: img.clientHeight} }))"