我是以Python开门的,我还是觉得Python也可以进行地形三维可视化,当然这里需要借助第三方库,so,我就来介绍:Python一个很重要可视化插件,Matplotlib。

Matplotlib是Python最著名的绘图库,它提供了一整套友好的命令,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。你会发现Matplotlib和matlab相似,但是你知道matlab强大是很强大,但是安装包就有7G,一下就让我失去玩弄他的兴趣。

Matplotlib的二维图形非常成熟,可以做各种各样的报表,比如:

好吧,额,....... Matplotlib当然也可以做3维数据。首先准备了一份样例,珠穆朗姆峰周围地势的dem数据,我在arcsense进行拉伸显示,初步看看效果:

讲这份数据,输入编写好的相关路径,然后经过简单的三维渲染:

Matplotlib只是一个可视化包,不能直接识别栅格数据,所以这边还用到另外一个包---gdal,开源栅格空间数据转换库,他的本体竟然还是c++,也开放了一个Python框架,这算是向Python投诚嘛?

好吧,开源一下用Matplotlib和gdal包进行地形三维可视化的小脚本:

# -*- coding: gbk -*-

from mpl_toolkits.mplot3d import Axes3D

from Matplotlib import cbook

from Matplotlib import cm

from Matplotlib.colors import LightSource

import Matplotlib.pyplot as plt

import numpy as np

from osgeo import gdal

gdal.AllRegister()

filePath = u"E:\桌面\dem实验/Himalaya.tif" #输入你的dem数据

dataset = gdal.Open(filePath)

adfGeoTransform = dataset.GetGeoTransform()

band = dataset.GetRasterBand(1) #用gdal去读写你的数据,当然dem只有一个波段

nrows = dataset.RasterXSize

ncols = dataset.RasterYSize #这两个行就是读取数据的行列数

Xmin = adfGeoTransform[0] #你的数据的平面四至

Ymin = adfGeoTransform[3]

Xmax = adfGeoTransform[0] + nrows * adfGeoTransform[1] + ncols * adfGeoTransform[2]

Ymax = adfGeoTransform[3] + nrows * adfGeoTransform[4] + ncols * adfGeoTransform[5]

x = np.linspace(Xmin,Xmax, ncols)

y = np.linspace(Ymin,Ymax, nrows)

X,Y = np.meshgrid(x, y)

Z = band.ReadAsArray(0, 0,nrows, ncols) #这一段就是讲数据的x,y,z化作numpy矩阵

region = np.s_[10:400,10:400]

X, Y, Z = X[region], Y[region],Z[region]

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'), figsize=(12,10))

ls = LightSource(270, 20) #设置你可视化数据的色带

rgb = ls.shade(Z, cmap=cm.gist_earth, vert_exag=0.1, blend_mode='soft')

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=rgb,

linewidth=0, antialiased=False, shade=False)

plt.show() #最后渲染出你好看的三维图吧

最后是虾神的话:GDAL在python里面的安装,属于灰常纠结的事情,运气好(人品好)可能一下就成功,运气不好,可能死活就装不上……如果遇上死活装不上的,可以考虑用MinGW自己进行编译。

如果不想用gdal来实现以上效果,可以考虑用arcpy的RasterToNumpy来把tif文件读成矩阵,也可以实现。

总结

上面即是此文关于Python的地形三维可视化Matplotlib和gdal使用实例的全部内容,希望对各位网友能有帮助。感兴趣的朋友可以继续参阅本站其他相关专题。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

本文来源:http://blog.csdn.net/allenlu2008/article/details/51880333

python 3d绘图平面_Python的地形三维可视化Matplotlib和gdal使用示例相关推荐

  1. python绘制三维地形shade(vert_exag)参数_Python的地形三维可视化Matplotlib和gdal使用实例...

    我是以Python开门的,我还是觉得Python也可以进行地形三维可视化,当然这里需要借助第三方库,so,我就来介绍:Python一个很重要可视化插件,Matplotlib. Matplotlib是P ...

  2. python绘制三维地形_Python的地形三维可视化Matplotlib和gdal使用实例

    我是以Python开门的,我还是觉得Python也可以进行地形三维可视化,当然这里需要借助第三方库,so,我就来介绍:Python一个很重要可视化插件,Matplotlib. Matplotlib是P ...

  3. python 3d绘图平面_python 用 matplotlib 在 3D 空间中绘制平面 实例详解

    #创建画布 fig = plt.figure(figsize=(12, 8), facecolor='lightyellow')#创建 3D 坐标系 ax = fig.gca(fc='whitesmo ...

  4. python 3d绘图模块_Python绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线(曲线)以及3D文字等的绘制 ...

  5. python 3d绘图立方体_python绘制3D立方体

    我想绘制一个平行六面体.其实我从python脚本开始画立方体为:python绘制3D立方体 import numpy as np from mpl_toolkits.mplot3d import Ax ...

  6. python 3d绘图 范围_python – 在3D绘图中绘制所有三个轴上的分布轮廓

    我在三维空间中有一堆点,并估计了这些点上的一些分布(也在3D空间中;使用 kernel density estimation虽然这与这个问题无关).我想将该分布的投影绘制为所有三个轴(x,y和z)上的 ...

  7. python 3d绘图旋转_Python和Matplotlib:在Jupyter Noteb中使3D绘图具有交互性

    我想出的解决方案是在iframe中使用vis.js实例. 这显示了笔记本中的交互式3D图,该图仍可在nbviewer中使用. visjs代码是从3D图形页面上的示例代码中借用的 一个小笔记本来说明这一 ...

  8. python 3d绘图库_python – 用于科学3d绘图的Mayavi的替代品

    在没有令人满意的第一个答案和无法解释的downvote之后编辑: 我需要绘制一个在3D网格中构造的标量字段,如下所示: import numpy as np from mayavi import ml ...

  9. python 3D绘图 基础

    环境安装 见另一篇博文 链接 库安装 pip install -i https://pypi.douban.com/simple matplotlib 代码 import numpy as np im ...

最新文章

  1. 天正怎么批量填充柱子_天正CAD插件使用教程合集
  2. Py之cv2:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略
  3. 算法之动态规划初步(Java版)
  4. 多元经验模态分解_环境激励桥梁模态参数识别—环境激励模态参数识别概述
  5. java map常用类及其方法_Day50.Map类常用的方法 -Java常用类、集合#、IO
  6. yii 加载php文件,Yii2框架加载css和js文件的方法分析
  7. 【Redis】7.使用jedis操作redis数据库
  8. Simpleperf介绍
  9. Python_自定义关键字的使用
  10. 我的职业生涯规划学习日记(软件工程)整理时间线
  11. 啪啪三国2获取服务器信息,啪啪三国2怎么快速的获得资源?
  12. 游走于天才与疯子边缘的创业“鬼才”
  13. VS20“.NET研究”10自定义新建文件模版
  14. python基本原理概论_优学院《2020年马克思主义基本原理概论题库(高职类)》查题教程2020高校邦《Python程序设计基础【实境编程】》答案完整...
  15. Uniswap 24h交易量约11.2亿美元涨23.91%
  16. log4j不生成日志文件的问题
  17. wx-jq:一套完全原创的微信小程序插件集合库
  18. 计算机显示器本身物理分辨率,电脑显示器常见的分辨率是多少
  19. 读书笔记——《电商产品经理-基于人、货、场、内容的产品设计攻略》
  20. js如何判断字符串是否为空

热门文章

  1. Zynq7000开发系列-1(Vivado HLx 2016.4下载及安装)
  2. C语言中的++和--运算符
  3. 我的世界java村民繁殖条件,我的世界村民无限繁殖教程 教你村民怎么生孩子
  4. 上海自动驾驶再上热搜,为什么是它?丨曼孚科技
  5. Sql 日月年 日期格式转 月日年 日期格式
  6. 艾宾浩斯记忆遗忘曲线
  7. java 地图api接口_Java调用百度地图API
  8. 青海25项措施发展中藏医药 省领导任联席会议召集人
  9. Office Web Apps 非专业测评
  10. ML 能解决哪些问题?