python实现3D地图可视化


Posted in Python onMarch 25, 2020

基于python代码的3D地图可视化,供大家参考,具体内容如下

介绍

使用Python对地图进行3D可视化。以地图为地图,可以在三维空间对轨迹、点进行可视化。

我们使用了多个库:

1.gdal;
主要是用于读取地图信息,这个库在GIS中很常用,使用C++代码编写的,如果安装不了需要在pypi里面找一下对应的资源。

2.opencv;
很常用的图像处理库。

3.matplotlib;
常用的可视化库

结果

废话不多说直接上结果:

python实现3D地图可视化

python实现3D地图可视化

代码

直接上代码,代码很简单。

from osgeo import gdal
import cv2
gdal.UseExceptions()

ds = gdal.Open('E:/Pythoncode/读取地理信息/无标题.tif')
bandg = ds.GetRasterBand(1)
elevationg = bandg.ReadAsArray()

bandr = ds.GetRasterBand(2)
elevationr = bandr.ReadAsArray()

bandb = ds.GetRasterBand(3)
elevationb = bandb.ReadAsArray()

import matplotlib.pyplot as plt
nrows, ncols = elevationr.shape

elevation= cv2.merge([elevationg,elevationr,elevationb])#
# I'm making the assumption that the image isn't rotated/skewed/etc. 
# This is not the correct method in general, but let's ignore that for now
# If dxdy or dydx aren't 0, then this will be incorrect
x0, dx, dxdy, y0, dydx, dy = ds.GetGeoTransform()

x1 = x0 + dx * ncols
y1 = y0 + dy * nrows

plt.imshow(elevation, cmap='gist_earth', extent=[x0, x1, y1, y0])
plt.show()

from PIL import Image
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)

img = Image.open('E:/Pythoncode/读取地理信息/无标题.tif')
xx=[]
yy=[]
colall=[]
x = img.size[0]
y = img.size[1]
for i in range(x):
 for j in range(y):
 
 r = hex(img.getpixel((i, j))[0])[2:]
 b = hex(img.getpixel((i, j))[1])[2:]
 g = hex(img.getpixel((i, j))[2])[2:]
 
 if len(r) == 1:
 r = '0' + r
 if len(b) == 1:
 b = '0' + b
 if len(g) == 1:
 g = '0' + g
 col = '#' + r + b + g
 colall.append(col)
 xx.append(x0 + dx * i)
 yy.append(y0 + dy * j)
 # col = '#FF00FF'
ax.scatter(xx, yy, 5, c=colall, alpha=0.5)
plt.show()

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

Python 相关文章推荐
Python中字符编码简介、方法及使用建议
Jan 08 Python
Python常用的日期时间处理方法示例
Feb 08 Python
Python multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
Python多继承顺序实例分析
May 26 Python
python虚拟环境迁移方法
Jan 03 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
Python中six模块基础用法
Dec 08 Python
python如何运行js语句
Sep 09 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 #Python
python3利用Axes3D库画3D模型图
Mar 25 #Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 #Python
Django用数据库表反向生成models类知识点详解
Mar 25 #Python
Python动态强类型解释型语言原理解析
Mar 25 #Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 #Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 #Python
You might like
php 文件上传系统手记
2009/10/26 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
php实现word转html的方法
2016/01/22 PHP
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
Javascript验证方法大全
2015/09/21 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
深入理解Python中的*重复运算符
2017/10/28 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
python redis 删除key脚本的实例
2019/02/19 Python
python实现串口自动触发工作的示例
2019/07/02 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
实习生的自我评价
2014/01/08 职场文书
公司会计岗位职责
2014/02/13 职场文书
文科生自我鉴定
2014/02/15 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
nginx限制并发连接请求数的方法
2021/04/01 Servers
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server