gradientm
是一个计算数据网格梯度、slope
和aspect
的matlab函数。
语法
gradN,gradE = gradientm(Z,R)
描述
gradN,斜率,gradE = gradientm(Z,R)计算常规数据网格Z相对于参考R的坡度、坡向和东侧分量,如果网格包含以米为单位的高程,则得出的坡向和坡度是从北顺时针方向从水平方向向上的单位。北向和东向梯度分量是南北方向每米距离地图变量的变化。计算对默认地球椭球上的映射变量使用有限差分。
问题
我想要点equivalent in python
。我已经创建了这个python库PyDEM,但是它是用于python2.x的,但是我正在使用python 3.x
这是使用DEMProcessor
通过PyDEM
计算DEM
文件的slope
和aspect
的方法。
# 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()
发布于 2017-12-08 23:00:25
step1:安装GDAL
step2:安装雷斯特里欧
step3:简单如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)
https://stackoverflow.com/questions/47653271
复制