GDAL,地学必备~python的gdal(裁剪、拼接)
你认识GDAL吗?你了解GDAL吗?
反正我不是很熟,我只知道它很酷、很快、而且很厉害,不过好像也有很多缺陷。很酷很快很厉害我就不多说了,网上的彩虹屁多的和牛毛一样。我主要想说说几个问题,虽然这些问题可能只有我会遇到(意思是可能我安装的姿势不太对)。
你要是为我花过一块钱(上一篇),你可能就会发现一点点问题。为什么我得单独加载一个WGS坐标的tif图呢?这就是我想说的问题所在了,你要是看不下去就跳到下一段吧。python的gdal库可以读取很多的遥感影像格式,但是读进来并不意味着认出来,就好比上回的OMI,读进来后并不能准确的认出它的ds.GetGeoTransform()中的6个参数(分别是左下角x,左上角y,x和y的长宽以及两个0值---如果有错,请无情的批判我),好像也认不到它的坐标系?具体我忘了。总之,是有些问题的。
但是,今天的内容并不集中在python的gdal库,而是正!经! GDAL 的C语言程序上,通过python的subprocess包调用cmd函数。起码这个方式上,我没有遇到那么多问题~
好了~废话不要那么多,不如直接上干货。。。
等等,上干货之前,你总要了解一下GDAL的安装吧,我觉得安装GDAL也是满满的血坑,但是。。。我就是不告诉你我摔了个怎么样的大趴。。。毕竟:
跳过GDAL安装,愉快的lu python代码吧
import subprocess
#首先是拼接
subprocess.call('D:/Anaconda3/python.exe'+' '+'gdal_merge.py '+'-of GTiff '+'-o '+str(oup)+' '+str(inp1))
#这里,out是输出的路径+文件名,inp1是输入的
subprocess.call("gdalwarp -cutline " + str(shp) + " -crop_to_cutline " + str(inp) + " -tr " + str(res) + " " + str(res) + " " + str(out), shell = True)
#和上面一样的,out是输出的路径+文件名,inp1是输入的,两个res分别是空间分辨率的长和宽,shp是裁剪用的矢量哦
你们要是问我为什么写的这么简单,解释的这么不酷?
还能为什么?我懒啊!
还在等什么?还不赶紧跨过GDAL安装的门槛,愉快的用GDAL快速的裁剪、拼接成千上万的遥感影像?
放两个结果给大家:
第一个是裁剪:
(猜猜这是哪?)
下一个是拼接:
(这个你们可能看不清,它是两个MAIAC的影像拼接而成,分为上下两部分)
最后,希望我能和大家一样的幸福快乐~
- 【设计模式】—— 解释器模式Interpret
- 【设计模式】—— 命令模式Commond
- 【设计模式】—— 职责链模式ChainOfResponsibility
- 【设计模式】—— 代理模式Proxy
- 【设计模式】—— 享元模式Flyweight
- 【设计模式】—— 外观模式Facade
- 【设计模式】—— 装饰模式Decorator
- 【设计模式】—— 组合模式Composite
- 【设计模式】—— 桥接模式Bridge
- 【插件开发】—— 1 Eclipse插件开发导盲
- 【插件开发】—— 4 SWT编程须知
- 【插件开发】—— 5 SWT控件以及布局使用
- 【插件开发】—— 6 SWT 复杂控件使用以及布局
- 【插件开发】—— 7 SWT布局详解,不能再详细了!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SQLite在C#中的安装与操作
- 详解强制Vue组件重新渲染的方法
- C# this.invoke()作用 多线程操作UI
- C#3种常见的定时器(多线程)
- C#使用MemoryStream类读写内存
- C# WPF基础之Timer
- Angular 父子Component的数据绑定实现
- C# WPF线程操作
- Angular 界面元素的条件渲染
- mysqlbinlog命令详解 Part 2 - MySQL 事件类型
- Angular list列表的事件响应实现
- Angular list列表绑定的一个例子
- Angular双向绑定的一个例子
- mysqlbinlog命令详解 Part 3 - 查看十六进制格式内容
- MySQL information_schema详解 CHARACTER_SETS 表