相关的依赖库在我的github网站上
首先贴出代码:
1 import solar 2 from gradient import * 3 from shadows import * 4 import numpy as np 5 6 import matplotlib.pyplot as plt # plt 用于显示图片 7 import matplotlib.image as mpimg # mpimg 用于读取图片 8 9 10 # dem 11 import srtm 12 if __name__ == '__main__': 13 14 15 ''' 16 # 另一种从网上直接下载DEM数据 17 geo_elevation_data = srtm.get_data() 18 image = geo_elevation_data.get_image((500, 500), (45, 46), (13, 14), 300) 19 # the image s a standard PIL object, you can save or show it: 20 image.show() 21 22 image = np.asarray(image) 23 24 print(image.shape) 25 26 ''' 27 28 # 读入高程信息 29 filename = 'dempyrenees.asc' 30 dem = np.loadtxt(filename,skiprows=6,delimiter=' ') 31 32 # 高程信息的维度 33 # print(dem) 34 print(dem.shape) 35 36 # 定义一个光线向量 37 # 第一个表示和竖直方向的夹角,第二个表示由东向西照射 38 sv = normal_vector(45, 270) 39 40 # 生成阴影 41 shadow = project_shadows(dem=dem,sun_vector=sv,dx=30) 42 print(shadow[1,:]) 43 print(shadow.shape) 44 45 # 显示dem和shadow图像 46 plt.figure() 47 plt.subplot(1,2,1) 48 plt.imshow(dem,cmap='gray') # 显示灰度图像 49 plt.axis('off') # 不显示坐标轴 50 51 plt.subplot(1,2,2) 52 plt.imshow(shadow,cmap='gray') 53 plt.axis('off') 54 55 plt.show()
生成的结果如下:左边是DEM数据,右边是shadow