-3.4e + 38 nodata値をどうすればよいですか?


17

http://www.worldclim.org/current(bioclim set)からダウンロードできるような、いくつかの生物気候ラスターファイルを処理しようとしています。-3.4e+38QGISに従って設定されたnodata値を持っているようです(gdalinfoの出力を見ると、そうです-3.39999999999999996e+38)。

gdalツールはこのnodata値を処理できず、qgisもそれを認識できないようです。レイヤースタイリングには、-3.4e + 38のエントリが100%透明に設定されていますが、「フィーチャの識別」ピッカーに値-3.4e + 38が表示されていても、そのような値が表示されます。

代わりにnodata値を-9999に変換するvrtを作成しようとしましたが、それも機能しませんでした。

使用可能なnodata値を持つようにこのようなファイルを処理するにはどうすればよいですか?

ファイルから取得されたnodata値 透明度を設定しても効果はありません


おそらく、新しいバージョンのqgis​​には、nodataのサポートがはるかに優れています。1.8で「nodata」の問題が多くありました(特に、ヒストグラムまたはエリア内の平均を計算しようとしたとき)。
ニックス

回答:


4

GDAL これらの値処理できます。実際、GDALのデフォルトのNoData値は、あなたのものとほとんど同じです。しかし、問題はQGISの浮動小数点エラーだと思います。浮動小数点のNoData値にも同じ問題があります。

GDALを使用してNoData値を変更する場合は、gdalwarpまたはおそらくgdal_translateを使用して、そこからnodata値を整数に設定できます(それぞれ-dstnodataおよび-a_nodata)。念のため、過去に64ビットのフロートラスターでNoData値を-999に設定することに成功しました。ただし、この点で浮動小数点の問題があることを確認したため、これがすべての場合に機能することを保証したくありません。


答えてくれてありがとう、シルベスター。gdal_translateを使用して動作させることはできませんでしgdal_translate -a_nodata -9999 input.tif output.tifgdalwarp -dstnodata -9999 input.tif output.tifが、トリックは行いました。9MBの入力ファイルから、私のアプローチでは26MBのファイルになりましたが、gdalwarpでは52MBの出力ファイルになりました。ただし、ラスターにフロート値が含まれている場合、このアプローチではうまくいきません。
-rudivonstaden

これについてQGISバグトラッカーにオープンチケットがあるかどうかを確認しましたか?
暗闇

1
データの膨張は、より大きなピクセル深度(たとえば、63ビット対16ビット)を使用したか、単に元がJPEGであり、新しい結果がTIFFであることが原因である可能性があります。@underdark-ごめんなさい!いいえ、オープンチケットがあるかどうかは確認していません。
-MappaGnosis

@underdarkこれに一致するチケットが見つからなかったため、バグレポート(hub.qgis.org/issues/6786)を追加しました。
-rudivonstaden

1
ファイルサイズを小さくするには、を追加するだけです-co COMPRESS=LZW
j08lue

11

データ形式をFloat32からInt16に変換することで、この問題の回避策を見つけることができました。最小値は-32768になり、nodata値として処理できます。次のコマンドがトリックを行いました。

gdal_translate -ot Int16 -a_nodata -32768 input.tif output.tif

おそらくより良い解決策がありますが、これは少なくとも私の差し迫った問題を解決します。

nodataは正しくピックアップされました



0

gdal_calc.py input.tif --outfile = output.tif --calc = "A *(A> 0)" --NoDataValue = 0を試すことができます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.