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 相关文章推荐
Django框架下在视图中使用模版的方法
Jul 16 Python
django使用html模板减少代码代码解析
Dec 12 Python
python+pyqt5编写md5生成器
Mar 18 Python
python实现维吉尼亚算法
Mar 20 Python
python实现抠图给证件照换背景源码
Aug 20 Python
Django模板语言 Tags使用详解
Sep 09 Python
python的reverse函数翻转结果为None的问题
May 11 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
详解python中的异常和文件读写
Jan 03 Python
Python实现生成bmp图像的方法
Jun 13 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
python sort、sort_index方法代码实例
2019/03/28 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
如何基于Python实现数字类型转换
2020/02/07 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
如何使用Python调整图像大小
2020/09/26 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
什么是网络协议
2016/04/07 面试题
老公给老婆的道歉信
2014/01/10 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
简单租房协议书
2014/10/21 职场文书
2015感人爱情寄语
2015/02/26 职场文书
导游词之永泰公主墓
2019/12/04 职场文书