指定された2つのラスターレイヤーのコンテンツが同じかどうかを確認する手段はありますか?
企業の共有ストレージボリュームに問題があります。非常に大きいため、フルバックアップを実行するには3日以上かかります。予備調査の結果、スペースを消費する最大の原因の1つは、オン/オフラスターであり、CCITT圧縮を使用して1ビットレイヤーとして保存する必要があることが判明しました。
このサンプル画像は現在2ビット(可能な3つの値)であり、LZW圧縮tiff、ファイルシステムに11 MBとして保存されています。1ビット(2つの可能な値)に変換し、CCITT Group 4圧縮を適用した後、1.3 MBまで削減しました。これは、ほぼ完全な節約です。
(これは実際には非常に行儀の良い市民です。他にも32ビット浮動小数点数として格納されているものがあります!)
これは素晴らしいニュースです!ただし、これを適用する画像は約7,000枚あります。それらを圧縮するスクリプトを書くのは簡単です。
for old_img in [list of images]:
convert_to_1bit_and_compress(old_img)
remove(old_img)
replace_with_new(old_img, new_img)
...しかし、重要なテストが欠落しています:新しく圧縮されたバージョンはコンテンツ同一ですか?
if raster_diff(old_img, new_img) == "Identical":
remove(old_img)
rename(new_img, old_img)
Image-AのコンテンツをImage-Bのコンテンツと同じように自動的に(非)証明できるツールまたは方法はありますか?
私はArcGIS 10.2とQGISにアクセスできますが、上書きする前にこれらのすべての画像を手動で検査して正確性を確認する必要をなくすことができるもの以外にもほとんど何でも開いています。それは誤って変換するために、恐ろしいことや、実際に画像上書きしてしまいましたより多くのそれの値のオン/オフよりも持っているし。ほとんどの場合、収集と生成に数千ドルの費用がかかります。
更新:最大の違反者は、1辺が最大100,000pxの32ビットフロートであるため、圧縮されていない状態で最大30GBです。
NoData
は、会話の中で適切な処理が維持されるように感謝します。
len(numpy.unique(yourraster)) == 2
、2つの一意の値があり、安全にこれを実行できることがわかります。
numpy.unique
は、差が一定であることを確認する他のほとんどの方法よりも(時間とスペースの両方の点で)計算コストが高くなります。2つの非常に大きな浮動小数点ラスターの違いに直面すると、多くの違い(オリジナルと非可逆圧縮バージョンの比較など)が発生し、永久に停止するか、完全に失敗する可能性があります。
raster_diff(old_img, new_img) == "Identical"
する1つの方法は、差の絶対値のゾーン最大値が0に等しいことを確認することです。この場合、ゾーンはグリッド範囲全体にわたって取得されます。これはあなたが探しているソリューションの種類ですか?(もしそうなら、NoData値も一貫していることを確認するために