首先请大家读一下面这篇文章了解什么是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库绘制富士山三维地形图-参考了虾神的喜马拉雅山的更多相关文章

  1. python中调用C++写的动态库

    一.环境:Windows XP + Python3.2 1. dll对应的源文件(m.cpp): #include <stdio.h> extern "C" { _de ...

  2. 在python中使用c语言编写的库

    本文使用的 cffi 官网网址:https://cffi.readthedocs.io/en/latest/overview.html cffi 自己本身使用了pycparser 这个库,是用pyth ...

  3. Python 中如何自动导入缺失的库?

    在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx'或者ModuleNotFoundError: No modul ...

  4. gdal库中设置prj4库全路径的用法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库实现投影转换之类的功能实际上底层都是调用prj4库的功能.如果gdal使用非静态的方式集成prj4库,实际上 ...

  5. (数据科学学习手札137)orjson:Python中最好用的json库

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,我们在日常使用Pytho ...

  6. Python爬虫基础(一)urllib2库的基本使用

    爬虫也就是所谓的网络数据采集,是一种通过多种手段收集网络数据的方式,不光是通过与 API 交互(或者直接与浏览器交互)的方式.最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用 HTML 表 ...

  7. 关于基于GDAL库QT软件平台下C++语言开发使用说明

    背景前提 地理空间数据抽象库(GDAL)是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库,由开源地理空间基金会在许可的X / MIT风格免费软件许可下发布. 作为一个库,它为调用应用程序提 ...

  8. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  9. YAML 在Python中的配置应用

    环境搭建 YAML语法 语法规则 数据结构 列表数组 原子量 YAML应用 案例 load dump 总结 YAML是一个堪比XML,JSON数据格式的更加方便,简洁的,易于人眼阅读的序列化数据格式. ...

随机推荐

  1. 第三周博客之二---Oracle中的sql语句

    一.用户及权限(DBA有最高系统权限) 1.数据库的安全性:系统的安全性.数据的安全性 2.权限分类: 2.1系统权限:获得后可访问数据库 常用的有create table,create user,c ...

  2. 201671010142 2017-2 《java第十二章学习感悟》

    Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕 ...

  3. linux链接及文件互相上传下载

    若排版紊乱可查看我的个人博客原文地址 基本操作 本篇博客主要介绍如何去链接远程的linux主机及如何实现本地与远程主机之间文件的上传下载操作,下面的linux系统是CentOS6.6 链接远程linu ...

  4. Javase系列之面向对象(一)

    作为一个Java程序员,我们每天做的事情就是OOP(面向对象),可以说万物皆对象,Java是一门面向对象的程序语言,鉴于基本的面向对象知识也是一个较为庞杂的模块,所以博主我准备用多篇文章去介绍Java ...

  5. 虚拟机3种网络模式(桥接、nat、Host-only)

    http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646007.html

  6. Leetcode 600 不含连续1的非负整数

    给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数. 例如: 输入: 5 输出: 5 解释: 下面是带有相应二进制表示的非负整数<= 5: 0 : 0 1 ...

  7. Qt 快捷键

  8. springboot整合mybatics PLUS

    首先添加maven依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactI ...

  9. 《贝贝GO》隐私政策

    隐私政策 贝贝GO尊重并保护所有使用服务用户的个人隐私权.为了给您提供更准确.更有个性化的服务,贝贝GO会按照本隐私权政策的规定使用和披露您的个人信息.但贝贝GO将以高度的勤勉.审慎义务对待这些信息. ...

  10. 用6个案例说明如何恢复PXC集群

    原文链接:https://blog.csdn.net/zengxuewen2045/article/details/51868976 1.   案例一:三个节点,关闭一个 由于维护和配置变更等工作需要 ...