Answers:
从概念上讲,您需要找出哪些像素值表示无数据的单元格,然后编辑颜色表以将颜色表中的RED,GREEN,BLUE(RGB)值分配为该单元格值的255,255,255。
如果您没有在Arc中执行此操作的适当许可证,则可以使用gdal_translate工具(gdal / ogr命令行工具之一)
将tif的颜色表导出为XML文件。
gdal_translate -of VRT myImage.tif outColorTable.vrt
在文本编辑器中打开.vrt文件,然后找到无数据像素值的条目。单元格值没有索引号,因此您必须倒数至正确的条目。
将此值编辑为 <Entry c1="255" c2="255" c3="255" c4="255"/>
现在,基于新的颜色表创建一个新的tif
gdal_translate outColorTable.vrt newCorrected.tif
(根据以下评论添加示例)
当我在上面的项目#2中运行命令并在文本编辑器中打开.vrt文件时,我看到了XML内容。
该文件的一部分包含如下所示的行,我已将其中的大部分内容剪短了。
我为此编写了一个小的gdal python脚本gdalsetnull.py,这是一个简单的命令行程序,用于设置指定的栅格值NODATA,而无需创建新的栅格。在Windows上安装GDAL的最简单方法是通过OSGeo4W。例子:
python gdalsetnull.py foobar.tif 0 # pure black is transparent
python gdalsetnull.py foobar.tif 0 255 0 # pure green is
python gdalsetnull.py foobar.tif 50 23 77 100 # arbitrary value in 4 band image
如果您不介意一些处理开销和创建新图像而不是就地编辑,则还有gdal_calc,它允许实际更改单元格值而不是仅更新元数据。
将零以下的值设置为null:
gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0
nodata
单元格和说我是0
的单元格之间存在差异,应用程序决定是忽略它还是其他值。ArcGIS确实尊重gdalsetnull.py的结果;我没有使用GeoServer的经验。
除了您不希望不创建新的SLD文件之外,这是有关如何将GeoTIFF的内部颜色图转换为SymbologyEncoding / SLD并在其中定义另一种颜色的博客条目。在派生的SLD中,很容易准确地定义要使用100%透明颜色呈现的值。