주어진 2 개의 래스터 레이어가 동일한 내용을 가지고 있는지 확인하는 수단이 있습니까?
회사 공유 스토리지 볼륨에 문제가 있습니다. 현재 전체 백업을 수행하는 데 3 일이 걸리기에는 너무 큽니다. 예비 조사에 따르면 가장 큰 공간을 소비하는 범인 중 하나는 실제로 CCITT 압축을 사용하여 1 비트 레이어로 저장해야하는 온 / 오프 래스터입니다.
이 샘플 이미지는 현재 2 비트 (3 가지 가능한 값)이며 파일 시스템에서 11MB의 LZW 압축 tiff로 저장됩니다. 1 비트 (가능한 2 개의 값)로 변환하고 CCITT Group 4 압축을 적용한 후에는 1.3MB로 줄어 듭니다.
(이것은 실제로 매우 잘 행동하는 시민입니다. 다른 사람들은 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에 액세스 할 수 있지만 덮어 쓰기 전에 정확성을 보장하기 위해 이러한 모든 이미지를 수동으로 검사 할 필요가없는 것 외에는 대부분 열려 있습니다. 실제로 ON / OFF 값보다 많은 값을 가진 이미지를 실수로 변환하고 덮어 쓰는 것은 끔찍한 일입니다. 수집하고 생성하는 데 대부분 수천 달러가 소요됩니다.
업데이트 : 가장 큰 범죄자는 최대 30px의 압축되지 않은 32 비트 수레입니다.
NoData
처리가 대화에 머 무르도록 해 주셔서 감사합니다 .
len(numpy.unique(yourraster)) == 2
이 그것을 확인할 수 있다면 , 당신은 2 개의 고유 값을 가지고 있으며 이것을 안전하게 할 수 있음을 알고 있습니다.
numpy.unique
은 차이가 일정하다는 것을 확인하는 다른 대부분의 방법보다 시간과 공간 측면에서 계산 비용이 많이 듭니다. 원본을 손실 된 압축 버전과 비교하는 것과 같이 많은 차이점을 보이는 두 개의 매우 큰 부동 소수점 래스터 간의 차이점에 직면하면 영원히 쇠약하거나 완전히 실패 할 수 있습니다.
gdalcompare.py
큰 약속을 보였습니다 ( 답변 참조 )
raster_diff(old_img, new_img) == "Identical"
은 차이의 절대 값의 구역 최대 값이 0과 같은지 확인하는 것입니다. 여기서 영역은 전체 그리드 범위에서 사용됩니다. 찾고있는 솔루션입니까? (그렇다면 NoData 값도 일치하는지 확인하기 위해 다시 조정해야합니다.)