• python实现DEM数据的阴影生成


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

  • 相关阅读:
    二叉查找树
    huffman coding
    普通树与二叉树
    递归转循环的通法
    尾递归和JAVA
    编译器和解释器
    开天辟地-用visualstudio2010编写helloworld
    Android app targetSdk升级到27碰到的一个bug补充说明
    Android Studio修改Apk打包生成名称
    Glide3升级到Glide4碰到的问题汇总以及部分代码修改
  • 原文地址:https://www.cnblogs.com/wylwyl/p/10270803.html
Copyright © 2020-2023  润新知