2017-12-05 1 views
1

gradientm ist eine MATLAB-Funktion, die Gradienten Berechnen, slope und aspect Daten gridBerechnung ASPECT, SLOPE in python3.x (Matlab gradientm Funktion)

Syntax

[ASPECT, SLOPE, gradN, GRADE] = gradientm (Z, R)

Beschreibung

[ASPECT, SLOPE, gradN, GRADE ] = gradientem (Z, R) berechnet die Steigung, das Aussehen und die Nord- und Ostkomponenten des Gradienten für ein reguläres Datengitter Z in Bezug auf Referenz R. Wenn das Gitter Höhen in Metern enthält, sind das resultierende Aussehen und die Steigung in Einheiten Grad im Uhrzeigersinn von Norden und von der Horizontalen nach oben. Die Nord- und Ost-Gradientenkomponenten sind die Veränderung der Kartenvariablen pro Meter Entfernung in Richtung Norden und Osten. Die Berechnung verwendet finite Differenzen für die Map-Variable auf dem Standard-Earth-Ellipsoid.

Problem

Ich will etwas equivalent in python. Ich habe diese Python-Bibliothek PyDEM gegründet, aber es ist für Python 2.x aber ich arbeite mit python 3.x

Dies ist die Art und Weise der Nutzung der DEMProcessor von PyDEMslope und aspect für die DEM Dateien zu berechnen:

# 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() 

Antwort

0

Schritt 1: GDAL

Schritt 2: installieren rasterio

schritt3: einfach wie py:

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)