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


Posted in Python onJuly 23, 2019

相关的依赖库在我的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实现DEM数据的阴影生成的方法

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

Python 相关文章推荐
利用Python爬取可用的代理IP
Aug 18 Python
发布你的Python模块详解
Sep 15 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
使用Python进行防病毒免杀解析
Dec 13 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 #Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 #Python
python视频按帧截取图片工具
Jul 23 #Python
python如何实现从视频中提取每秒图片
Oct 22 #Python
详解Django 时间与时区设置问题
Jul 23 #Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 #Python
python 抓包保存为pcap文件并解析的实例
Jul 23 #Python
You might like
php中time()和mktime()方法的区别
2013/09/28 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
angular directive的简单使用总结
2017/05/24 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
小程序实现分类页
2019/07/12 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
js实现点击烟花特效
2020/10/14 Javascript
Python实现求一个集合所有子集的示例
2018/05/04 Python
python实现内存监控系统
2021/03/07 Python
python 剪切移动文件的实现代码
2018/08/02 Python
python中的数据结构比较
2019/05/13 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
python 求定积分和不定积分示例
2019/11/20 Python
Python 私有化操作实例分析
2019/11/21 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
体育课外活动总结
2014/07/08 职场文书
2014年人民警察入党思想汇报
2014/10/12 职场文书
2014年教研工作总结
2014/12/06 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL