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中的__getitem__专有方法
Jun 27 Python
python常见排序算法基础教程
Apr 13 Python
python文件特定行插入和替换实例详解
Jul 12 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
PyQt5创建一个新窗口的实例
Jun 20 Python
解决django 新增加用户信息出现错误的问题
Jul 28 Python
python3 enum模块的应用实例详解
Aug 12 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 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概述.
2006/10/09 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
PHP取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
php发送与接收流文件的方法
2015/02/11 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
python调用百度语音REST API
2018/08/30 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
linux面试题参考答案(7)
2014/07/24 面试题
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
原材料检验岗位职责
2014/03/15 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
Python基础之条件语句详解
2021/06/16 Python
Android实现图片九宫格
2022/06/28 Java/Android