相关的依赖库在我的github网站上
首先贴出代码:
import solar
from gradient import *
from shadows import *
import numpy as np
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
# dem
import srtm
if __name__ == '__main__':
'''
# 另一种从网上直接下载DEM数据
geo_elevation_data = srtm.get_data()
image = geo_elevation_data.get_image((500, 500), (45, 46), (13, 14), 300)
# the image s a standard PIL object, you can save or show it:
image.show()
image = np.asarray(image)
print(image.shape)
'''
# 读入高程信息
filename = 'dempyrenees.asc'
dem = np.loadtxt(filename,skiprows=6,delimiter=' ')
# 高程信息的维度
# print(dem)
print(dem.shape)
# 定义一个光线向量
# 第一个表示和竖直方向的夹角,第二个表示由东向西照射
sv = normal_vector(45, 270)
# 生成阴影
shadow = project_shadows(dem=dem,sun_vector=sv,dx=30)
print(shadow[1,:])
print(shadow.shape)
# 显示dem和shadow图像
plt.figure()
plt.subplot(1,2,1)
plt.imshow(dem,cmap='gray') # 显示灰度图像
plt.axis('off') # 不显示坐标轴
plt.subplot(1,2,2)
plt.imshow(shadow,cmap='gray')
plt.axis('off')
plt.show()
生成的结果如下:左边是DEM数据,右边是shadow

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持天达云。