Gdal:如何有条件地为栅格图像的像素分配新值?

5

给定一个国家的地形GIS栅格crop.tif

# download:
curl -o ETOPO1.zip 'http://www.ngdc.noaa.gov/mgg/global/relief/ETOPO1/data/ice_surface/grid_registered/georeferenced_tiff/ETOPO1_Ice_g_geotiff.zip'
# unzip:
unzip ETOPO1.zip
# crop:
gdal_translate -projwin -005.50 051.30 10.00 041.00 ETOPO1_Ice_g_geotiff.tif crop.tif

给定高程阈值 n = 50(米)

如何将所有 z >= n 的像素值设置为 50?


相关问题:https://stackoverflow.com/questions/18300210/Gdal: How to get a pixel's value from raster image?

帮助:gdallocationinfo 可以获取一个点的值(无需迭代整个图像):

$ gdallocationinfo crop.tif 1 1 -valonly
> 73
1个回答

7

使用gdal_calc.py。例如:

gdal_calc.py -A crop.tif --outfile=level0100.tif --calc="100*(A>100)"     --NoDataValue=0

将输入文件A(crop.tif)转换成输出图像level0100.tif,当一个像素的第一波段的值大于100时,将其设置为100。否则设置为0。

--calc=""中,您可以设置其他条件。如果您想将100< v < 200的数值设置为100,则:

gdal_calc.py -A crop.tif --outfile=level0100.tif --calc="100*(100<A<200)"     --NoDataValue=0

应该可以工作。(最后一个没有测试)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接