-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"문제가있었습니다 (특히 지역 내에서 히스토그램이나 수단을 계산할 때).
— nickves

답변:


4

GDAL 은 이러한 값을 처리 할 수 있습니다. 실제로 GDAL의 기본 NoData 값은 사용자의 값과 거의 같습니다. QGIS의 문제는 부동 소수점 오류라고 생각합니다. 부동 소수점 NoData 값과 동일한 문제가 있습니다.

GDAL을 사용하여 NoData 값을 변경하려면 gdalwarp 또는 gdal_translate 를 사용하고 nodata 값을 정수 (각각 -dstnodata 및 -a_nodata)로 설정할 수 있습니다. 무심코, 과거 64 비트 플로트 래스터에서 NoData Value를 -999로 설정하는 데 성공했습니다. 그러나 우리가 이와 관련하여 부동 소수점 문제가 있음을 확인 했으므로 모든 경우에 이것이 작동한다는 것을 보장하고 싶지는 않습니다.


답변 주셔서 감사합니다, 실베스터. 트릭 을 수행 gdal_translate -a_nodata -9999 input.tif output.tif했지만 gdal_translate를 사용하여 작동시킬 수 없었습니다 gdalwarp -dstnodata -9999 input.tif output.tif. 9MB 입력 파일에서 필자의 접근 방식은 26MB 파일 이었지만 gdalwarp는 52MB 출력 파일이되었습니다. 그러나 래스터에 부동 값이 포함되어 있으면이 방법으로 작동하지 않습니다.
— rudivonstaden

QGIS 버그 추적기에 공개 티켓이 있는지 확인 했습니까?
— underdark

1
데이터 팽창은 더 큰 픽셀 깊이 (63 비트 vs. 16 비트)를 사용하거나 원본이 JPEG이고 새로운 결과가 TIFF 일 수 있습니다. @underdark-죄송합니다! 아니요, 공개 티켓이 있는지 확인하지 않았습니다.
— MappaGnosis

@underdark이 티켓과 일치하는 티켓을 찾을 수 없으므로 버그 보고서 ( hub.qgis.org/issues/6786 )를 추가했습니다 .
— rudivonstaden

1
파일 크기가 작 으면을 추가하면 -co COMPRESS=LZW됩니다.
— j08lue 2016 년

11

Float32에서 데이터 형식을 Int16으로 변환 하여이 문제에 대한 해결 방법을 찾았습니다. 최소값은 -32768이며 nodata 값으로 처리 될 수 있습니다. 다음 명령으로 트릭을 수행했습니다.

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

아마도 더 나은 해결책이있을 수 있지만 이것은 적어도 내 즉각적인 문제를 해결합니다.

데이터가 올바르게 선택되지 않음



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.