-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathbase.py
52 lines (43 loc) · 1.4 KB
/
base.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Author : zhaoguanhua
@Email : [email protected]
@Time : 2019/12/25 14:00
@File : base.py
@Software: PyCharm
"""
import os
import gdal
import numpy as np
def MeanDEM(pointUL, pointDR):
'''
计算影像所在区域的平均高程.
'''
script_path = os.path.split(os.path.realpath(__file__))[0]
dem_path = os.path.join(script_path,"GMTED2km.tif")
try:
DEMIDataSet = gdal.Open(dem_path)
except Exception as e:
pass
DEMBand = DEMIDataSet.GetRasterBand(1)
geotransform = DEMIDataSet.GetGeoTransform()
# DEM分辨率
pixelWidth = geotransform[1]
pixelHight = geotransform[5]
# DEM起始点:左上角,X:经度,Y:纬度
originX = geotransform[0]
originY = geotransform[3]
# 研究区左上角在DEM矩阵中的位置
yoffset1 = int((originY - pointUL['lat']) / pixelWidth)
xoffset1 = int((pointUL['lon'] - originX) / (-pixelHight))
# 研究区右下角在DEM矩阵中的位置
yoffset2 = int((originY - pointDR['lat']) / pixelWidth)
xoffset2 = int((pointDR['lon'] - originX) / (-pixelHight))
# 研究区矩阵行列数
xx = xoffset2 - xoffset1
yy = yoffset2 - yoffset1
# 读取研究区内的数据,并计算高程
DEMRasterData = DEMBand.ReadAsArray(xoffset1, yoffset1, xx, yy)
MeanAltitude = np.mean(DEMRasterData)
return MeanAltitude