我需要创建多个单层栅格图像的多边形轮廓,而不是范围/边界框,而是要创建没有nodata值的区域,如下所示:创建显示 shapepoint的Raster的shapefile?。
在上述问题的答案中,提到了Image Boundary插件,但是,我在运行于Ubuntu的QGIS 1.8.0 Lisboa中找不到它。
该工具仍然可用吗?
如果没有,是否有办法使用gdal,R,QGIS,GRASS或类似工具而不是ArcMap使用开源工具来做到这一点?
我需要创建多个单层栅格图像的多边形轮廓,而不是范围/边界框,而是要创建没有nodata值的区域,如下所示:创建显示 shapepoint的Raster的shapefile?。
在上述问题的答案中,提到了Image Boundary插件,但是,我在运行于Ubuntu的QGIS 1.8.0 Lisboa中找不到它。
该工具仍然可用吗?
如果没有,是否有办法使用gdal,R,QGIS,GRASS或类似工具而不是ArcMap使用开源工具来做到这一点?
Answers:
您可以在官方存储库中添加有插件的旧存储库。
图像边界插件具有用于计算有效像素的选项,但是图像必须是整个场景,以及CBERS或Landsat的方式,该过程将在此过程中计算前四个角。对于没有成像的区域,图像不需要具有零值的数据(由卫星传感器扫描)。
图像边界的作者
我终于找到了一种方法来做到这一点:
步骤1:
gdalwarp -dstnodata 0 -dstalpha -of GTiff foo1 foo2
这有两件重要的事情:将目标“ 无数据”(外部边界)值设置为0,并创建一个alpha波段。
第2步:
gdal_polygonize.py foo2 -b 2 -f "ESRI Shapefile" foo3
第二步使用在步骤1中创建的Alpha波段(波段2),并从该波段创建一个shapefile。
然后,如果您有很多图像,可以轻松地在bash脚本中编写脚本,以为其创建精确的轮廓。
我gdal_translate
按照GDAL项目的建议使用。
gdal_translate -b mask -of vrt -a_nodata 0 test.tif test.vrt
# Note the -a_nodata 0 doesn't seem to work when the mask is input, so do another pass
gdal_translate -b 1 -of vrt -a_nodata 0 test.vrt test2.vrt
gdal_polygonize.py -q -8 test2.vrt -b 1 -f "ESRI Shapefile" testdata.shp
Image Boundary插件对我也不起作用,因此我对GDAL使用了相同的方法。不过,只有将第一步更改为以下步骤后,它才对我有用:
步骤1: gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2
我正在使用Landsat8波段(其中无数据= 0),并且在使用该-dstnodata
功能时得到:
BAND1与没有数据 =“无数据”
BAND2(α带)=“255”到整个场景/程度
而有了-srcnodata
功能我得到:
BAND1与没有数据 =“无数据”
BAND2(α带)没有数据=“无数据”和有效数据=“255”,其然后允许为仅有效数据提取多边形。
我无法完全理解这种行为背后的原因(如何计算alpha?),但我希望这可以帮助其他面临相同问题的人。
图像边界已过时。您可以使用“足迹”插件。 http://pt.slideshare.net/LuizMotta3/qgis-ibama-imagefootprint