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程序中操作MySQL的基本方法
Jul 29 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
Python numpy 点数组去重的实例
Apr 18 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
对python3.4 字符串转16进制的实例详解
Jun 12 Python
Python实现最常见加密方式详解
Jul 13 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
实现Python与STM32通信方式
Dec 18 Python
使用python实现数组、链表、队列、栈的方法
Dec 20 Python
Python实现获取当前目录下文件名代码详解
Mar 10 Python
pytorch实现查看当前学习率
Jun 24 Python
python判断一个变量是否已经设置的方法
Aug 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
咖啡的种类和口感
2021/03/03 新手入门
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
PHP开发注意事项总结
2015/02/04 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Python pass详细介绍及实例代码
2016/11/24 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
社区工作感言
2014/02/21 职场文书
元宵晚会主持词
2014/03/25 职场文书
财务经理岗位职责
2015/01/31 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
亮剑观后感300字
2015/06/05 职场文书
新闻稿件写作范文
2015/07/18 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL