Rasterio 를 사용 하여 격자 데 이 터 를 읽 는 실례 설명
GDAL 의 Python 바 인 딩 으로 작 성 된 코드 가 Pythonic 이 아니 라 고 생각 하 십 니까?강박 증 을 참 을 수 없 을 것 같 습 니 다.하지만 괜 찮 습 니 다.MapBox 산하 개원 고 Rasterio 가 이 통 증 을 해결 해 주 었 습 니 다.
Rasterio 는 GDAL 라 이브 러 리 를 기반 으로 파 이 썬 스타일 에 더욱 적합 하 게 2 차 포 장 된 공간 격자 데이터 처리 용 파 이 썬 라 이브 러 리 입 니 다.
Rasterio 에서 격자 데이터 모델 은 기본적으로 GDAL 과 유사 합 니 다.주의해 야 할 것 은:
Rasterio 1.0 이후 GeoTransform 에 대한 표 시 는 GDAL 스타일 의 방사 변환 을 버 리 고 Python 방사 변환 의 제3자 라 이브 러 리affine라 이브 러 리 스타일 을 사용 했다.
방사 변환
affine.Affine(a, b, c,
d, e, f)
GDAL 에서 대응 하 는 매개 변수 순 서 는 다음 과 같 습 니 다.(c,a,b,f,d,e)새로운 방사 변환 모델 을 사용 하 는 장점 은 특정한 행렬 호의 지리 좌 표를 계산 해 야 한다 면 행렬 번 호 를 직접 사용 하여 방사 변환 대상 과 곱 하면 된다 는 것 이다.수학 적 행렬 곱셈 의 조작 에 완전히 부합 되 고 더욱 직관 적 이 고 편리 하 다 는 것 이다.
격자 데이터 읽 기 코드 예시
다음 예제 프로그램 에 서 는 GeoTIFF 파일 을 읽 고 관련 정 보 를 얻 는 방법 을 보 여 줍 니 다.주의해 야 할 것 은:
1.rasterio 는 rasterio.open()함수 로 격자 파일 을 엽 니 다.
2.rasterio 는 read()함 수 를 사용 하여 데이터 세트 를 numpy.ndarray 로 변환 할 수 있 습 니 다.이 함 수 는 매개 변수 가 없 으 면 데이터 의 모든 밴드 를 변환 합 니 다(첫 번 째 는 밴드 수).밴드 를 지정 하면 지정 한 밴드 에 대응 하 는 데이터 만 얻 습 니 다(밴드 색인 은 1 부터).
3.데이터 의 다 원 화 된 정 보 는 모두 데이터 세트 의 속성 으로 표 시 됩 니 다.
import rasterio
with rasterio.open('example.tif') as ds:
print(' ( ):')
print(f' :{ds.driver}')
print(f' :{ds.count}')
print(f' :{ds.width}')
print(f' :{ds.height}')
print(f' :{ds.bounds}')
print(f' ( ):
{ds.transform}')
print(f' :{ds.crs}')
# , GDAL 1
# numpy.ndarray , read() , ( )
band1 = ds.read(1)
print(f' :{band1.max()}')
print(f' :{band1.min()}')
print(f' :{band1.mean()}')
#
x, y = (ds.bounds.left + 300, ds.bounds.top - 300) # 300 , 300
row, col = ds.index(x, y) #
print(f'( {x}, {y}) ({row}, {col})')
#
x, y = ds.xy(row, col) #
print(f' ({row}, {col}) ({x}, {y})')
#
x, y = (row, col) * ds.transform
print(f' ({row}, {col}) ({x}, {y})')
출력 은 다음 과 같 습 니 다:
( ):
:GTiff
:3
:4800
:4800
:BoundingBox(left=725385.0, bottom=2648415.0, right=869385.0, top=2792415.0)
( ):
| 30.00, 0.00, 725385.00|
| 0.00,-30.00, 2792415.00|
| 0.00, 0.00, 1.00|
:CRS({'init': 'epsg:32649'})
:5459
:-313
:489.80300625
( 725685.0, 2792115.0) (10, 10)
(10, 10) (725700.0, 2792100.0)
(10, 10) (725685.0, 2792115.0)
이상 Rasterio 를 사용 하여 격자 데 이 터 를 읽 는 인 스 턴 스 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.