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

yipeiwu_com5年前Python基础

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

使用Nginx+uWsgi实现Python的Django框架站点动静分离

由于: Django处理静态文件不太友好; 以后有可能需要处理php或者其他资源的请求; 所以考虑结合nginx,使用nignx做它擅长的路由分发功能;同时做动静分离,即Http请求统一...

基于Pycharm加载多个项目过程图解

基于Pycharm加载多个项目过程图解

这篇文章主要介绍了基于Pycharm加载多个项目过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天在使用Pycharm工具练...

python实现下载整个ftp目录的方法

前言 最近因为业务需求,就写了这个脚本,脚本完成的任务是从FTP上下载一个目录,大家都知道从FTP上下载一个文件可用用get命令,下载多个文件可以用mget,但你要下载一个目录,对不起,...

python通过yield实现数组全排列的方法

本文实例讲述了python通过yield实现数组全排列的方法。分享给大家供大家参考。具体分析如下: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取...

Unicode和Python的中文处理

在Python语言中,Uincode字符串处理一直是一个容易让人迷惑的问题。许多Python爱好者经常因为搞不清Unicode、UTF-8还有其它许许多多的编码之间的区别而大伤脑筋。笔者...