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中使用SAX解析xml实例
Nov 21 Python
使用Python编写类UNIX系统的命令行工具的教程
Apr 15 Python
python 设置文件编码格式的实现方法
Dec 21 Python
python3.5 tkinter实现页面跳转
Jan 30 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
Python多进程写入同一文件的方法
Jan 14 Python
详解js文件通过python访问数据库方法
Mar 03 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
TFRecord格式存储数据与队列读取实例
Jan 21 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 Python
python里glob模块知识点总结
Jan 05 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/02 无线电
分享PHP入门的学习方法
2007/01/02 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
python 编程之twisted详解及简单实例
2017/01/28 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
Python自动登录QQ的实现示例
2020/08/28 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
市场营销职业生涯规划书范文
2014/01/12 职场文书
模具毕业生推荐信
2014/02/15 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
PHP中->和=>的意思
2021/03/31 PHP
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python