python

超轻量级php框架startmvc

python实现DEM数据的阴影生成的方法

更新时间:2020-07-18 00:18 作者:startmvc
相关的依赖库在我的github网站上首先贴出代码:importsolarfromgradientimport*fromshadowsimport*importnum

相关的依赖库在我的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

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