큰 래스터 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-버그 : 8782 및 osge4w-버그 : (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.