.tif 이미지를 여러 타일로 나누시겠습니까? [닫은]


13

너비와 높이가 94000x71680 인 1GB (.tif) 크기의 이미지가 있습니다. 처리 할 수 ​​있도록이 이미지를 20000X20000 타일로 청크하고 싶습니다.

어떻게해야합니까?


아누 프는 github.com/mapbox/rasterio는 당신에게 당신의 입력 데이터의 NumPy와 배열 (들)을 줄 것입니다. numpy o scipy 방법을 사용하여 분할하고 각 부분을 새 파일에 쉽게 저장할 수 있습니다. 그러한 솔루션이 자격이됩니까? 그렇다면 "고르지 않은 비트"(71680을 20000으로 완전히 나눌 수 없음)를 어떻게 처리해야하는지 말해야합니다.
bugmenot123

답변:


23

QGIS를 사용하는 첫 번째 솔루션과 Python (GDAL)을 사용하는 두 번째 솔루션을 제안합니다.


QGIS를 사용한 솔루션

QGIS에서는 VRT 모자이크를 만들 수 있습니다.

이 절차를 따르십시오 (아래 이미지 참조).

  1. 레이어 패널에 래스터를로드하십시오 .
  2. 마우스 오른쪽 버튼으로 클릭하고 Save As...;
  3. Create VRT옵션을 확인하십시오 .
  4. 출력이 저장 될 폴더를 선택하십시오.
  5. 범위를 설정하십시오 (래스터 전체에서 작업하려면 아무 것도 수정하지 마십시오).
  6. 현재 해상도를 사용 중인지 선택하십시오 (기본값으로 두는 것이 좋습니다).
  7. 최대 열 및 행 수를 설정하십시오 (이 경우 20000 열 및 2000 행이어야 함).
  8. 언론 OK버튼을 누릅니다.

여기에 이미지 설명을 입력하십시오

예를 들어,이 샘플 래스터에서 위 대화 상자의 매개 변수 사용 (설정 한 매개 변수는 임의로 선택됨) :

여기에 이미지 설명을 입력하십시오

4 단계에서 지정한 경로에 100 개의 타일을 생성합니다.

여기에 이미지 설명을 입력하십시오

QGIS에로드하면 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

주석에서 @ bugmenot123이 올바르게 말했듯이 각 이미지의 스타일이 이미지 당 값의 분포에 적합하기 때문에 결과가 이상하게 보입니다 (그러나 데이터는 완벽하게 좋습니다).


Python (GDAL)을 사용한 솔루션

동일한 결과를 얻는 또 다른 방법은 GDAL ( gdal_translate )을 사용하는 것입니다.

위에서 설명한 동일한 예제를 참조하여이 스크립트를 사용할 수 있습니다.

import os, gdal

in_path = 'C:/Users/Marco/Desktop/'
input_filename = 'dtm_5.tif'

out_path = 'C:/Users/Marco/Desktop/output_folder/'
output_filename = 'tile_'

tile_size_x = 50
tile_size_y = 70

ds = gdal.Open(in_path + input_filename)
band = ds.GetRasterBand(1)
xsize = band.XSize
ysize = band.YSize

for i in range(0, xsize, tile_size_x):
    for j in range(0, ysize, tile_size_y):
        com_string = "gdal_translate -of GTIFF -srcwin " + str(i)+ ", " + str(j) + ", " + str(tile_size_x) + ", " + str(tile_size_y) + " " + str(in_path) + str(input_filename) + " " + str(out_path) + str(output_filename) + str(i) + "_" + str(j) + ".tif"
        os.system(com_string)

분명히 특정 사례에 맞게 값을 조정해야합니다.


2
QGIS가 이미지를 렌더링하는 방법의 예가 스타일이 이미지 당 값의 분포에 적합하기 때문에 이상하게 보인다는 간단한 설명입니다 . 데이터가 완벽합니다 :)
bugmenot123 10

고마워, 우선 당신의 대답에 정말 도움이되었지만 파이썬을 사용하여 동일한 결과를 얻고 싶습니까? 프로그래밍 방식이 아니라 수동식이기 때문에 나에게 도움을 줄 수 있습니까?
Anup Panwar

@ bugmenot123 감사합니다. 유용한 의견으로 답변을 수정했습니다.
mgri dec

@Anup Panwar, PyQGIS 솔루션을 찾으면 답변을 편집하겠습니다! =)
mgri

@HowToInQGIS 고맙습니다. 파이썬에서 다른 방법을 원한다면 도움이 될 것입니다 :)
Anup Panwar

5

분할하지 마십시오

당신은 gdalbuildvrt 만 디스크에 몇 바이트를 사용하는 가상 타일을 만들 수 있습니다. 그런 다음 처리를 수행하기 위해 vrt를 입력으로 사용하는 대부분의 소프트웨어를 사용할 수 있습니다.

또는 이미지를 분할하고 병합하는 것보다 1Gb 이미지로 작동 할 수있는 도구를 찾고 싶습니다. 예를 들어, OTB는 큰 이미지로 표준 (때로는 고급) 이미지 처리를위한 기능을 대부분 갖추고 있습니다. 당신은 할 수 OTB 포장 파이썬이나 QGIS에서 또는 명령 줄에서 실행합니다.


2

분할 래스터 도구를 사용하면 각 타일크기 또는 타일 ​​수를 포함하여 몇 가지 구분 방법을 기반으로 래스터를 타일로 분할 할 수 있습니다 .

ArcGIS에서 래스터 분할 참조


2

GDAL 을 사용하는 또 다른 솔루션 은 gdal_retile.py 도구입니다.

mkdir image_tiles
gdal_retile.py -v -r bilinear -levels 1 -ps 20000 20000 -co "TILED=YES" -co "COMPRESS=JPEG" -targetDir image_tiles big_input_image.tif

자세한 내용은 다음을 참조 하십시오 : http://www.gdal.org/gdal_retile.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.