python中的Matplot库和Gdal库绘制富士山三维地形图-参考了虾神的喜马拉雅山
首先请大家读一下面这篇文章了解什么是Gdal
http://blog.csdn.net/grllery/article/details/77822595
剩下的我要公布绘制富士山的代码了,虽然基本copy虾神的路子,我加入一些注释方便理解
# -*- coding: utf-8 -*-
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 = "ceshi.tif" #输入你的dem数据(我放在工作目录,你要记得修改你的哦O^-^O)
dataset = gdal.Open(filePath)
adfGeoTransform = dataset.GetGeoTransform()
band = dataset.GetRasterBand(1) #用gdal去读写你的数据,当然dem只有一个波段
ncols = dataset.RasterXSize #图像的宽度(X方向上的像素个数) 数据的列数 (这里就是Gdal中的格子和矩阵的不同了,这个疑问只要你好好读上面的那篇文章,不难理解哈哈O^-^O)
nrows = dataset.RasterYSize#图像的宽度(Y方向上的像素个数) 数据的行数
Xmin = adfGeoTransform[0] #你的数据的平面四至
Ymin = adfGeoTransform[3]
Xmax = adfGeoTransform[0] + nrows * adfGeoTransform[1] + ncols * adfGeoTransform[2]
Ymax = adfGeoTransform[3] + nrows * adfGeoTransform[4] + ncols * adfGeoTransform[5]#(这几个参数也是在那篇文章中介绍了O^-^O)
x = np.linspace(Xmin,Xmax, ncols)#地理x坐标 数组y坐标
y = np.linspace(Ymin,Ymax, nrows)#地理y坐标 数组x坐标
X,Y = np.meshgrid(x, y)
Z = band.ReadAsArray(0, 0,ncols, nrows) #这一段就是讲数据的x,y,z化作numpy矩阵(这里Z读取完后是一个Y方向的像素个数*X方向上的像素个数的一个矩阵O^-^O)
region = np.s_[10:400,10:400] #这家伙就等同于一个切片命令(是的没错就这货slice(start, stop, step) 23333333333333)
X, Y, Z = X[region], Y[region],Z[region]#数组转置和轴对换:数组不仅有transpose方法,还有一个特殊的T属性比如Z[region].T
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() #最后渲染出你好看的三维图吧()

ps:我用的python是Anaconda集成的,避免了安装Matplot ()
Anaconda中安装Gdal,安装方法灰常简单 WIN+R cmd进入命令窗口然后输入python回车,pip install gdal,让他自己安去吧,静待successful
我的联系方式 Email:mafengkai@yahoo.com 不对的地方还请大家提醒了 BYEBYE!
python中的Matplot库和Gdal库绘制富士山三维地形图-参考了虾神的喜马拉雅山的更多相关文章
- python中调用C++写的动态库
一.环境:Windows XP + Python3.2 1. dll对应的源文件(m.cpp): #include <stdio.h> extern "C" { _de ...
- 在python中使用c语言编写的库
本文使用的 cffi 官网网址:https://cffi.readthedocs.io/en/latest/overview.html cffi 自己本身使用了pycparser 这个库,是用pyth ...
- Python 中如何自动导入缺失的库?
在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx'或者ModuleNotFoundError: No modul ...
- gdal库中设置prj4库全路径的用法
作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库实现投影转换之类的功能实际上底层都是调用prj4库的功能.如果gdal使用非静态的方式集成prj4库,实际上 ...
- (数据科学学习手札137)orjson:Python中最好用的json库
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,我们在日常使用Pytho ...
- Python爬虫基础(一)urllib2库的基本使用
爬虫也就是所谓的网络数据采集,是一种通过多种手段收集网络数据的方式,不光是通过与 API 交互(或者直接与浏览器交互)的方式.最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用 HTML 表 ...
- 关于基于GDAL库QT软件平台下C++语言开发使用说明
背景前提 地理空间数据抽象库(GDAL)是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库,由开源地理空间基金会在许可的X / MIT风格免费软件许可下发布. 作为一个库,它为调用应用程序提 ...
- Python中的logging模块
http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...
- YAML 在Python中的配置应用
环境搭建 YAML语法 语法规则 数据结构 列表数组 原子量 YAML应用 案例 load dump 总结 YAML是一个堪比XML,JSON数据格式的更加方便,简洁的,易于人眼阅读的序列化数据格式. ...
随机推荐
- [数]补题ver.
上次补题好像把两次训练混在一起了,总之先按时间顺序补完这一次|ू・ω・` ) HDU-6301 不会的东西不能逃避.jpg 红小豆非常讨厌构造题,因为非常不会,并且非常逃避学习这类题,因为总也搞不清楚 ...
- presto 函数中使用子查询
我们已知 在sql中子查询可以配合 in 或者 exists 来使用,但是如何把子查询的结果传给函数呢? 场景: 我们有一个 省份表 数据如下: id province 1 广东 2 ...
- 用Tensorflow搭建神经网络的一般步骤
用Tensorflow搭建神经网络的一般步骤如下: ① 导入模块 ② 创建模型变量和占位符 ③ 建立模型 ④ 定义loss函数 ⑤ 定义优化器(optimizer), 使 loss 达到最小 ⑥ 引入 ...
- Altium designer 新建快捷键
示例: 1.按下Ctrl: 2.点击需要建立快捷键的图标:点击交互式布线图标,然后在选择性输入要用到的快捷键:
- 【转载】IL指令集
转载自:http://www.cnblogs.com/knowledgesea/p/5461040.html 名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加 ...
- sse矩阵乘法 应该是1毫秒纯运算1000次
#include <intrin.h> #include <math.h> struct Vector4 { float x, y, z, w; }; struct Matri ...
- 使用 ado.net访问数据库
一.ADO.NET :用于连接数据库的技术 1.ADO.NET分为两大组件 DataSet:数据集 .NET FRAMWORK :用于连接到数据库,发送命令,检索结果 2.ADO. ...
- EditPlus软件自动补全文档htmlbar.acp设置 及 模板文件格式
1.在htmlbar.acp文件末尾添加如下内容,可自动补全: #T=HTML <html> ^! </html> #T=HEAD <head> ^ ...
- springboot整合mybatics PLUS
首先添加maven依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactI ...
- python学习之路之int()奇怪的报错
今天闲来无事看了下python基础知识,当学到数据类型转换的int()方法时候.发现了这么一个有意思的事情,算是IDE或是解释器的一个小BUG.(具体原因暂不明,留待以后查找问题) 先讲下环境 操作系 ...