使用开源工具计算卫星图像的图像边界/足迹?


10

我需要创建多个单层栅格图像的多边形轮廓,而不是范围/边界框,而是要创建没有nodata值的区域,如下所示:创建显示 shapepoint的Raster的shapefile?

在上述问题的答案中,提到了Image Boundary插件,但是,我在运行于Ubuntu的QGIS 1.8.0 Lisboa中找不到它。

该工具仍然可用吗?

如果没有,是否有办法使用gdal,R,QGIS,GRASS或类似工具而不是ArcMap使用开源工具来做到这一点?


Answers:


4

您可以在官方存储库中添加有插件的旧存储库。

http://pyqgis.org/repo/贡献

图像边界插件具有用于计算有效像素的选项,但是图像必须是整个场景,以及CBERS或Landsat的方式,该过程将在此过程中计算前四个角。对于没有成像的区域,图像不需要具有零值的数据(由卫星传感器扫描)。

图像边界的作者


嗨,@ lmotta,感谢您提供的存储库链接。我目前正在处理的图像都是SAR图像,具有NA值(根据QGIS中的值工具为-3.4e + 38)。如果可以在工具中手动添加nodata值,而不是将ZERO作为唯一选项,那就太好了,否则,我可能首先在R中运行脚本以将NA值赋予新值零。不过,这是一个很棒的工具,谢谢!
spib

是否有用于图像边界的新存储库?您提供的链接是404。可能是以下内容?:github.com/lmotta/imagefootprint_plugin
Aaron

在哪里可以找到关于图像边界的文档?
隆努

11

我终于找到了一种方法来做到这一点:

步骤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脚本中编写脚本,以为其创建精确的轮廓。  


出色,此解决方案不依赖任何插件或软件。创建对NoData敏感的栅格轮廓图是那些GIS任务之一,它并不像应有的那样简单。
查理·

当我使用这种方法时,我最终得到一个充满了多边形的shapefile,我假设它们代表了分组在一起的不同颜色。我如何才能避免这种情况,最后只用几个多边形代表yes-data?
隆努

5

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

在此处输入图片说明


1
使用GDAL中继版本,现在可以直接对源映像osgeo-org.1560.x6.nabble.com/…使用gdal_polygonize。但是,需要一些清理才能删除无数据多边形。
user30184 '16

4

Image Boundary插件对我也不起作用,因此我对GDAL使用了相同的方法。不过,只有将第一步更改为以下步骤后,它才对我有用:

步骤1gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2

我正在使用Landsat8波段(其中无数据= 0),并且在使用该-dstnodata功能时得到:

BAND1没有数据 =“无数据”
BAND2(α带)=“255”到整个场景/程度

而有了-srcnodata功能我得到:

BAND1没有数据 =“无数据”
BAND2(α带)没有数据=“无数据”和有效数据=“255”,其然后允许为仅有效数据提取多边形。

我无法完全理解这种行为背后的原因(如何计算alpha?),但我希望这可以帮助其他面临相同问题的人。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.