python实现DEM数据的阴影生成的方法
作者:林木声 发布时间:2023-11-09 11:17:25
标签:python,DEM,阴影
相关的依赖库在我的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
来源:https://www.cnblogs.com/wylwyl/p/10270803.html


猜你喜欢
- 字符串是Python中最常用的数据类型1、创建字符串1.1 使用 ’ ’ 或 " &quo
- 目录1、请求模块:urllib.requestdata参数:post请求urlopen()中的参数timeout:设置请求超时时间:响应类型
- 关于vue的过渡效果,vue官方给的概述是这样的。Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。包括以下工具:1
- 说明:因为数据库版本问题出现的项目启动没有错误,但是操作数据库的过程出现错误,为了保持数据库一致,重新检索到了安装mysql5.6的教程,不
- PHP convert_cyr_string() 函数实例把字符串由一种字符集转换成另一种:<?php $str = "He
- 我们在工作中时常会遇到一些客户的TPS\QPS都不太高,但磁盘占用非常大,一旦单实例空间太大,像内存、网络、CPU以及备份都将增加相应的开销
- 脚本如下: drop table table1; CREATE TABLE `andrew`.`table1` ( `name` VARCH
- 推荐算法在互联网行业的应用非常广泛,今日头条、美团点评等都有个性化推荐,推荐算法抽象来讲,是一种对于内容满意度的拟合函数,涉及到用户特征和内
- 编写断言使用assert编写断言pytest允许你使用python标准的assert表达式写断言;例如,你可以这样做:# test_samp
- 分布式 id 生成器在分布式场景中,唯一 id 的生成算比较重要。而通常在高并发场景中,需要类似 MySQL 自增 id 一样不断增长且又不
- 思考题假设有一张订单表 order,主要包含了主键订单编码 order_no、订单状态 status、提交时间 create_time 等列
- 0 前言安装:pip install pypiwin32 1 Excel的APIimport win32com.client as win3
- 生成器就是自己用python代码写的迭代器,生成器的本质就是迭代器。通过以下两种方式构建一个生成器:1、通过生成器函数2、生成器表达式生成器
- 前言ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是
- 我们知道**代表次方。如下>>>12 * 12144>>>12 ** 2144>>>a
- It's well-known.Microsoft SQL Server 7.0增加了一个语句top,可以限制返回的记录数。但是在使
- 阻塞任务是阻止当前线程继续进行的任务。如果在 asyncio 程序中执行阻塞任务,它会停止整个事件循环,从而阻止任何其他协程继续进行。我们可
- 国际象棋是当今国际上最流行的智力体育运动项目。青年人下棋可以锻炼思维、增强记忆力和培养坚强的意志;中年人下棋可以享受美学;老年下棋可以很好的
- context 有什么作用context 主要用来在goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。
- 如下所示:#!/usr/bin/python# -*- coding: utf-8 -*-def rever(sentence): &nbs