gdal_proximity.bat -values 255 -distunits GEO -maxdist 50000 -nodata -999 infile.tif outfile.tif -co COMPRESS=DEFLATE -co BIGTIFF=YES -co TILED=YES
这几乎可以正常工作,但在输出中产生了奇怪的几何图案(参见图片)。输出中存在的数据已正确处理。任何人都可以建议为什么缺少这么多输出吗?
编辑:
要测试这是否由任何可选参数引起,我运行了在这种配置下,gdal_proximity再次出现:
gdal_proximity.bat H:\data\tmp\NHDplus_network_flowline_SO6plus.tif H:/data/tmp/NHDplus_network_flowline_SO6plus_proximity.tif -values 255 -maxdist 50000 -of GTiff
产生的结果基本相同:
我唯一的想法是否可能与栅格大小有关(未压缩的〜100 gb。据我所知,BigTiff的大小没有限制,但是gdal可以有效分析的内容可能有限制吗?
#1 楼
我怀疑您正在某个地方达到内存限制,可能是在RAM耗尽并且操作系统转储到页面文件时。在此过程中监视系统资源。我不清楚您的结果为什么会出现在弯曲的条带中,但请确保将所有数据投影(保存)到相同的坐标系中。让我们看一下数字数据类型以帮助您此算法。栅格化的流网络仅需要包含二进制值,因此我们可以使用
Byte
栅格数据类型来节省资源。将流的值刻录为1,将背景的值刻录为0:gdal_rasterize -l streams -burn 1 -tr 50 50 -a_nodata 0 -te -2339101 311625 2227004 3134200 -ot Byte -of GTiff streams.shp streams.tif
接下来,我们感兴趣的接近度为正且小于或等于50,000m。合适的数据类型是16位无符号整数
UInt16
。此外,如果将“无数据”设置为最大65535,则可以为流单元保留0值。如有必要,还可以降级为8位无符号整数
UInt8
和仍然具有约200m的接近精度。*请注意,我使用的是50m像元大小。 gdal_proximity消耗了约20GB RAM,并在我的计算机上花费了约5分钟。如果您受RAM限制,请按照其他说明将输入栅格分割为可管理的大小。
评论
如果关闭tiled = YES会发生什么?此外,如果您从GEO更改为PIXEL,是否可以使用? (输出可能不合适,但可能会缩小问题的范围)感谢您的建议-已添加对原始问题的答复。
您的infile.tif使用什么分辨率?
您可以尝试使用GDAL分批(行)读取数据,看看问题出在数据本身还是QGIS无法可视化?解决此问题的第一步是将空间范围缩小为样本AOI。