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数据类型_字符串常用操作(详解)
May 30 Python
python DataFrame 取差集实例
Jan 30 Python
python 多个参数不为空校验方法
Feb 14 Python
Python3.4解释器用法简单示例
Mar 22 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
python安装scipy的步骤解析
Sep 28 Python
在OpenCV里使用Camshift算法的实现
Nov 22 Python
python 实现视频 图像帧提取
Dec 10 Python
python函数定义和调用过程详解
Feb 09 Python
Python Tornado批量上传图片并显示功能
Mar 26 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
python 将Excel转Word的示例
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
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
pdo中使用参数化查询sql
2011/08/11 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
php封装的验证码类分享
2017/02/26 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
python 中random模块的常用方法总结
2017/07/08 Python
基于python socketserver框架全面解析
2017/09/21 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
浅谈python锁与死锁问题
2020/08/14 Python
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
幼儿园老师辞职信
2014/01/20 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
KVM基础命令详解
2022/04/30 Servers