큰 래스터 ECW 파일을 클립하는 가장 좋은 방법은 무엇입니까?


9

큰 ECW를 자르려고하는데 (아래 세부 사항 참조) 래스터 파일이 너무 커서 완전히 처리 할 수 ​​없습니다.

아래 ECW의 일부 세부 사항

드라이버 : ECW / ERDAS 압축 웨이블릿 (SDK 5.0)

파일 크기 : 50gb 크기는 450000, 565081 픽셀 크기 : 0.15 0.15 COLORSPACE = RGB COMPRESSION_RATE_TARGET = 9 VERSION = 2 밴드 수 : 4

클립하려는 영역은 대략 원본 파일의 1/5입니다.

성공하지 않고 시도한 방법은 다음과 같습니다.

  1. Arcgis를 사용하여 ecw를 tiff / 기타 형식으로 저장했습니다 ...

  2. Qgis와 클리퍼 도구를 사용하여 파일 생성이 약 40 %로 유지되었습니다.

  3. Qgis 이외의 다른 옵션과 함께 OSGeo4W에서 gdal_translate을 사용했습니다. (어쩌면 QGI를 사용하지 않는 일부 메모리를 비울 수 있다고 생각하면 트릭이 될 것입니다)

  4. gdal_retile 생각을 사용하여 이미지를 여러 조각으로 자르고 원하는 이미지를 가져옵니다. "gdal_retile -ps 10000 10000 -of ecw -tileIndex tile.shp -targetDir input.ecw 명령이 더 빨리 충돌했습니다."

누구든지 아이디어가 있습니까?

정보를 위해 16GB 램이있는 i5-3470 3.2Ghz에서 Windows 7 64 비트를 실행합니다.

답변:


5

시도해 볼 수있는 다른 아이디어 :

  1. -srcwin 스위치를 사용하여 gdal_translate
  2. -cutline 및 -crop_to_cutline 및 -wm 스위치가있는 gdalwarp 마지막 것은 캐싱을위한 메모리를 지정하고 QGIS에서 클리퍼를 사용하는 문제를 극복 할 수 있습니다 (이것은 본질적으로 동일한 기능이므로)
  3. QGIS 래스터 계산기 범위를 원하는 영역으로 설정 (클리퍼보다 간단).
  4. SAGA-> 다각형 클립 그리드-메모리 효율성이 더 높을 수도 있습니다.
  5. Python 및 Numpy / SciPy를 사용하여 솔루션을 코딩하여 래스터의 서브 세트 만 메모리로 읽어 저장하십시오.

지오메트리 검사와 변환이 없기 때문에 매우 간단한 자르기를 수행하는 것 (래스터 계산기 또는 gdal_translate의 -srcwin 스위치로)을 사용하면 다각형으로 자르는 것보다 메모리가 부족합니다. 옵션 5는 필요한 내용 만 읽을 때 가장 적은 메모리를 사용해야합니다. '방법'이 필요한 경우이 자습서를 살펴보십시오 (블록 단위의 읽기 및 쓰기에 대한 비트 조정).


답변 해주셔서 감사합니다! 나는 SAGA를 시도하고 그것이 작동하지 않으면 Numpy와 함께 갈 것입니다.
Blue

5

관심 영역의 좌표가 지리 참조 된 경우 gdal의 도구 gdal_translate로 직접자를 수 있습니다 .

gdal_translate -projwin [ulx uly lrx lry] infile outfile  

다음 -srswin과 같이 플래그를 사용하지 않으면 :

gdal_translate -srcwin [xoff yoff xsize ysize] 파일 출력 파일.

또 다른 옵션은 gdalbuildvrt 를 사용하여 초기 데이터 세트를 가리키는 '가상'래스터 (몇 킬로바이트)를 작성하는 것 입니다.

gdalbuildvrt -te [xmin ymin xmax ymax] infile outfile.vrt

불행히도 gdalbuildvrt를 사용하려면 지리 참조 파일이 필요합니다.

클립 한 후에는 쉽게 볼 수 있도록 피라미드를 만드는 것을 잊지 마십시오. 다음 명령은 DEFLATE (무손실) 알고리즘으로 압축 된 외부 피라미드를 만듭니다 .

gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE outfile 2 4 8 16

마지막 단계로 특정 상용 프로그램에서 바보 같은 문제를 피하기 위해 통계를 계산할 수 있습니다.

gdalinfo -stats outfile

답을 찾아 주셔서 감사합니다. 가상 래스터를 만들고 <code> gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE outfile 2 4 8 16 </ code>을 실행했습니다. 왜 다음과 같은 오류 메시지가 표시되는지 잘 모르겠습니다. 오류 1 : 누락으로 인해 TIFF 파일을 만들 수 없습니다 DEFLATE 코덱. 개요 구축에 실패했습니다.
Blue

버그 확인 QGIS-버그 : 8782osge4w-버그 : (382) 가 사건을 설명합니다. 그 동안 압축 알고리즘없이 개요를 작성하거나 다른 것을 선택하십시오 .
nickves

: 나는 2 단계에서 작업 한 것 같습니다 gdaladdo -ro input.vrt 2 4 8 16다음 gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE input.vrt 2 4 8 16. 내 목표는 ECW로 끝나는 것이므로 gdal_translate -of ECW input.vrt output.ecw 다음과 같은 오류가 발생했습니다.0ERROR 6: GDALDriver::Create() ... no create method implemented for this format.
Blue

@blue ECW는 독점 형식이며 특별한 처리가 필요합니다. gdal이로 ECW로 작성할 수 있는지 먼저 확인하십시오 gdalinfo --formats. 목록에 ECW가 표시되지 않으면 다음 지침을 따르십시오. statuelia.pt/node/438
nickves

0

똑바로 '클립'을 사용 gdalwarp하면 효과가 있습니다 (18 개월 IRL은 인터넷 시대의 지질 시대와 같습니다).

70Gb 안테나 (ECW, 10cm / px에서 94000x81000 픽셀)가 있으며 GDAL은 다음을 사용하여 shapefile로 임의로 클립 할 수 있습니다

gdalwarp -cutline [clipfile] -crop_to_cutline [infile] [outfile]

Windows 명령 줄에서. (이 솔루션에는 관심있는 대상 영역에 대한 셰이프 파일을 작성해야하지만 GIS에 알려진 최대 과제는 아닙니다.)

반 서브 크기의 청크를 추출하려면 ~ 0.4 초가 소요됩니다. 파일을 4 분의 1로 자르려면 4 초가 걸립니다. 내 컴퓨터의 사양은 크게 다르지 않습니다 (i7-4770 @ 3.4GHz, 16GB RAM, Win7-64 Ultimate).


gdalwarp은 이미 언급되었습니다. 성능과 구체적인 예 이미지 크기에 대한 정보는 환영 또한이지만, 정말이에게 의견해야 gis.stackexchange.com/a/74450/108 (코드도 환영 것이다 서식과 명령 행으로 제안 편집을 )는 읽기 쉽다
매트 윌키
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.