GDALで作成されたGeoTIFFは、Arc / QGISに読み込まれたときに最小/最大範囲を持たない


11

GeoTIFFドライバーを使用して、GDALでいくつかの浮動小数点ラスターを作成しています。結果の画像をQGISまたはArcに読み込むと、デフォルトのシンボルでは最小値が-3.40282e38、最大値が3.40282e38になるため、ラスターは正確に灰色に見えます。実際の範囲をGeoTIFFに直接書き込む方法はありますか?GISプログラムにロードすると、ヒストグラムが自動的にうまくスケーリングされますか?私はこのようなデフォルトのヒストグラムを作成しようとしました:

rasterMin, rasterMax = raster.GetRasterBand(1).ComputeRasterMinMax()
raster.GetRasterBand(1).SetDefaultHistogram(rasterMin, rasterMax, 255)

しかし、バインドの問題のようなエラーが表示されます。

  File "/usr/lib/python2.6/dist-packages/osgeo/gdal.py", line 846, in SetDefaultHistogram
    return _gdal.Band_SetDefaultHistogram(self, *args)
TypeError: not a sequence

私が何ができるか、または間違えた場合の提案はありますか?

回答:


8

データを生成している場合は、最小値と最大値をその場で追跡できます。既存のデータを合成する場合など、ソースデータを直接制御できない場合は、使用しても問題ありませんComputeRasterMinMax(0)

いずれにせよ、最小値と最大値を取得した後SetStatistics()、バンドを呼び出して、None完了時にデータセットを設定し、すべてがディスクに書き込まれるようにする必要があります。

また、心のdataset.GetRasterBand(1).<some band function>奥底にあるものは、GDAL Pythonがバンド参照を処理する方法が原因で、使用が適切に機能しないことを示しています。詳細を思い出せませんが、先ほどGDALDevメーリングリストに何かがありました。したがってband = dataset.GetRasterBand(1)、明示的にバンド変数を作成するのが最善です:を呼び出しますband.SetStatistics(min, max, mean, stddev)


おかげで、これでうまくいきました。コンテキストに感謝します。ところで、問題なく一時変数なしでバンド参照をネストできました。
リッチ

band.ComputeStatistics(0)統計も保存することに注意してください。簡単な1行です。
マイクT

1

私はGDALを使用してそれを行う方法を認識していませんが、Pythonを使用してArcの「統計の計算」ツールを呼び出すことができます。


2
こんにちは、Cyrus、GIS.seへようこそ:)正しい答えは2つの理由で票を集める可能性は低いです。arcpy統計計算ツールは、外部の.auxファイルに統計を配置し、ポスターは「ジオティフに直接」と尋ねました。次に、Arcgisがタイトルで言及されていますが、質問の本文とそのタグは、ポスターがgdal / qgisソリューションに本当に興味があることを示しています。いずれにしても、貢献してくれてありがとう。開始するのは少し学習曲線ですが、時間が経つにつれて努力が報われることがわかると思います。
マットウィルキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.