2017-12-05 10 views
1

gradientm 구배, slope 계산 매트랩 함수이고, 데이터 그리드의 aspect는 ASPECT, python3.x 슬로프 (MATLAB gradientm 기능)

구문

[ASPECT, 경사 gradN를 산출 등급 = gradientm (Z, R)

설명

[ASPECT, 경사 gradN 학년 ] = gradientm (Z, R)은 기준 R에 대해 일정한 데이터 그리드 Z에 대한 그래디언트의 기울기, 종횡비 및 북쪽 및 동쪽 구성 요소를 계산합니다. 그리드에 미터 단위의 높이가 포함 된 경우 결과 모양 및 기울기는 단위 북쪽에서부터 시계 방향으로, 수평에서부터 위로. 북쪽과 동쪽의 기울기 구성 요소는 북쪽과 동쪽 방향의 거리 미터당 맵 변수의 변경입니다. 계산은 기본 지구 타원체의지도 변수에 유한 차이를 사용합니다.

문제는 뭔가 equivalent in python를 원한다. 나는이 파이썬 라이브러리 PyDEM를 설립하지만 파이썬 2.x를위한 것입니다하지만 난이 PyDEM하여 DEM 파일 slopeaspect을 계산하는 데 사용하는 DEMProcessor의 방법입니다 python 3.x

함께 일하고있다 :

# needs to match above command 
filename = 'Shasta-30m-DEM.tif' 

# instantiate a processor object 
processor = DEMProcessor(filename) 

# get magnitude of slope and aspect 
mag, aspect = processor.calc_slopes_directions() 

답변

0

1 단계 : 설치 GDAL

2 단계 : 설치 rasterio

3 단계 : 쉬운 형식으로 :

from osgeo import gdal 
import numpy as np 
import rasterio 


def calculate_slope(DEM): 
    gdal.DEMProcessing('slope.tif', DEM, 'slope') 
    with rasterio.open('slope.tif') as dataset: 
     slope=dataset.read(1) 
    return slope 

def calculate_aspect(DEM): 
    gdal.DEMProcessing('aspect.tif', DEM, 'aspect') 
    with rasterio.open('aspect.tif') as dataset: 
     aspect=dataset.read(1) 
    return aspect 

slope=calculate_slope('DEM.tif') 
aspect=calculate_aspect('DEM.tif') 

print(type(slope)) 
print(slope.dtype) 
print(slope.shape)