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实现发送QQ邮件的封装
Jul 14 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Python学习小技巧总结
Jun 10 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
Django框架多表查询实例分析
Jul 04 Python
浅谈django orm 优化
Aug 18 Python
pycharm 将python文件打包为exe格式的方法
Jan 16 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
Python Selenium参数配置方法解析
Jan 19 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
Python图片处理之图片裁剪教程
May 27 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 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
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python3.x实现发送邮件功能
2018/05/22 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
python脚本和网页有何区别
2020/07/02 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
美国渔具店:FishUSA
2019/08/07 全球购物
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
党的群众路线调研报告
2014/11/03 职场文书
店面出租协议书范本
2014/11/28 职场文书
先进基层党组织材料
2014/12/25 职场文书
原告离婚代理词
2015/05/23 职场文书
初婚初育证明范本
2015/06/18 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers