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 代码效率的方法
Jul 03 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
transform python环境快速配置方法
Sep 27 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
Python-接口开发入门解析
Aug 01 Python
Python根据服务获取端口号的方法
Sep 25 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
opencv python图像梯度实例详解
Feb 04 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
简单的自定义php模板引擎
2016/08/26 PHP
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
layui清空,重置表单数据的实例
2019/09/12 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
Python查找相似单词的方法
2015/03/05 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
Python实现的knn算法示例
2018/06/14 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
网络安全类面试题
2015/08/01 面试题
元旦晚会策划方案
2014/02/18 职场文书
教师业务培训方案
2014/05/01 职场文书
人事聘任通知
2015/04/21 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
MySQL 逻辑备份 into outfile
2022/05/15 MySQL
MySQL索引失效场景及解决方案
2022/07/23 MySQL