最近要做个遥感相关的小系统,需要波段组合功能,网上找了可以使用ArcGIS安装时自带的arcpy包,但是Python3.7不能使用现有ArcGIS10.2版本,也不想再装其他版本,所以只能自己想了个办法解决。不过有点笨啊。

思路是:

1.读取需要组合遥感影像波段(此处用OLI)

2.创建数组,把读取的波段按序放进去

3.写入文件,写成tif多波段数据

上代码:

from osgeo import gdal

import os

import numpy as np

class GRID:

#读图像文件

def read_img(self,filename):

dataset=gdal.Open(filename) #打开文件

im_width = dataset.RasterXSize #栅格矩阵的列数

im_height = dataset.RasterYSize #栅格矩阵的行数

im_geotrans = dataset.GetGeoTransform() #仿射矩阵

im_proj = dataset.GetProjection() #地图投影信息

im_data = dataset.ReadAsArray(0,0,im_width,im_height) #将数据写成数组,对应栅格矩阵

del dataset #关闭对象,文件dataset

return im_proj,im_geotrans,im_data,im_width,im_height

#写文件,以写成tif为例

def write_img(self,filename,im_proj,im_geotrans,im_data):

#判断栅格数据的数据类型

if 'int8' in im_data.dtype.name:

datatype = gdal.GDT_Byte

elif 'int16' in im_data.dtype.name:

datatype = gdal.GDT_UInt16

else:

datatype = gdal.GDT_Float32

#判读数组维数

if len(im_data.shape) == 3:

im_bands, im_height, im_width = im_data.shape

else:

im_bands, (im_height, im_width) = 1,im_data.shape

#创建文件

driver = gdal.GetDriverByName("GTiff") #数据类型必须有,因为要计算需要多大内存空间

dataset = driver.Create(filename, im_width, im_height, im_bands, datatype)

dataset.SetGeoTransform(im_geotrans) #写入仿射变换参数

dataset.SetProjection(im_proj) #写入投影

if im_bands == 1:

dataset.GetRasterBand(1).WriteArray(im_data) #写入数组数据

else:

for i in range(im_bands):

dataset.GetRasterBand(i+1).WriteArray(im_data[i])

del dataset

if __name__ == "__main__":

os.chdir(r'E:\Python\temp\data') #切换路径到待处理图像所在文件夹

run = GRID()

#第一步

proj,geotrans,data1,row1,column1 = run.read_img('Band_5_Clip.tif') #读数据

proj,geotrans,data2,row2,column2= run.read_img('Band_4_Clip.tif') # 读数据

proj,geotrans,data3,row3,column3 = run.read_img('Band_3_Clip.tif') # 读数据

#第二步

data = np.array((data1, data2, data3),dtype = data1.dtype) #按序将3个波段像元值放入

#第三步

run.write_img('com543.tif', proj, geotrans, data) # 写为3波段数据

OK!!和ArcGIS处理的对比一下,发现差别不大(上:ArcMap   下:Python)。

方法较笨,如果各位大神有更好的方法,我们可以私下交流交流。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python遥感影像分类代码_Python 实现遥感影像波段组合的示例代码相关推荐

  1. python简单目标检测代码_Python Opencv实现单目标检测的示例代码

    一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全 ...

  2. python调用程序压缩文件_Python实现文件压缩和解压的示例代码

    大家可能都熟悉.zip格式的文件.它可以把多个文件,压缩成一个文件.这在网络上传输时很有用,而且节省硬盘空间. 接下来,我们使用Python实现压缩和解压. 读取ZIP文件信息 要读取ZIP文件的内容 ...

  3. python修改自己的代码_python修改微信和支付宝步数的示例代码

    项目意义 如果你想在支付宝蚂蚁森林收集很多能量种树,为环境绿化出一份力量,又或者是想每天称霸微信运动排行榜装逼,却不想出门走路,那么该python脚本可以帮你实现. 实现方法 手机安装第三方软件乐心健 ...

  4. python人像动漫化_python实现人像动漫化的示例代码

    利用百度api实现人像动漫化 百度API地址:https://ai.baidu.com/tech/imageprocess/selfie_anime 技术文档:https://ai.baidu.com ...

  5. python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码

    之前介绍过通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie ...

  6. python随机生成四位验证码的代码_Python random随机生成6位验证码示例代码

    随机生成6位验证码代码 # -*- coding: utf-8 -*- import random def generate_verification_code(): ''' randomly gen ...

  7. python数据统计代码_Python 数据的累加与统计的示例代码

    问题 你需要处理一个很大的数据集并需要计算数据总和或其他统计量. 解决方案 对于任何涉及到统计.时间序列以及其他相关技术的数据分析问题,都可以考虑使用 Pandas库 . 为了让你先体验下,下面是一个 ...

  8. python两数相乘代码_Python 实现大整数乘法算法的示例代码

    我们平时接触的长乘法,按位相乘,是一种时间复杂度为 O(n ^ 2) 的算法.今天,我们来介绍一种时间复杂度为 O (n ^ log 3) 的大整数乘法(log 表示以 2 为底的对数). 介绍原理 ...

  9. python实现自动登录软件_Python selenium实现微博自动登录的示例代码

    (一)编程环境 操作系统:Win 10 编程语言:Python 3.6 (二)安装selenium 这里使用selenium实现. 如果没有安装过python的selenium库,则安装命令如下 pi ...

最新文章

  1. 经常使用的npm命令
  2. .NET中的加密算法总结(自定义加密Helper类续)
  3. tkinter 笔记:创建输入框并显示结果 (莫烦python笔记)
  4. 关于Tomcat文件下载中文名乱码现象
  5. java 偏向锁 怎么用_Java锁升级、偏向锁、轻量级锁
  6. 万丰科技机器人排名_机器人系统集成“7宗最”
  7. php秒数怎么转换为时间格式,php将秒数转换为时间(年、月、日、小时…)
  8. Qt4_改变形状的对话框
  9. SCCM2012系列之十,SCCM2012软件分发
  10. 和最大的连续子数组 Maximum Subarray
  11. CC2530之OLED12864程序详解
  12. 新闻发布系统 新闻管理系统 可注册、登录
  13. 怎样把音频文件转换成mp3格式?
  14. python利用百度翻译器,爬取需要翻译的关键字
  15. 用前沿区块链技术为“元宇宙”筑底
  16. 被装管理系统之出入库流程
  17. 常见的分类算法及分类算法的评估方法
  18. 插值、拟合、线性和非线性的区别
  19. 接缝雕刻算法:一种看似不可能的图像大小调整方法
  20. 不只是A/B测试:多臂老虎机赌徒实验

热门文章

  1. nginx重启无法找到PId的解决办法
  2. Android 系统自带的图标
  3. Zygo读取保存dat文件(光学领域知道Zygo的一定要看)
  4. 安徽大学计算机语言学考研真题,2019年安徽大学英语语言文学复试真题回忆
  5. python函数拟合求导_python – 使用scipy curve_fit通过两个数据点拟合指数函数
  6. linux子网掩码和ip计算,子网掩码的计算 - winglok的个人页面 - OSCHINA - 中文开源技术交流社区...
  7. mysql oracle优缺点_oracle 的优缺点
  8. C语言题库青岛理工大学,青岛理工大学C语言期末复习题库.doc
  9. 为什么企业宁愿花 15K 重新招人,也不愿意花 10K 留住老测试员?
  10. 软件测试必学之python+unittest+requests+HTMLRunner编写接口自动化测试集