python 拼接 遥感影像_Python 实现遥感影像波段组合的示例代码

最近要做个遥感相关的小系统,需要波段组合功能,网上找了可以使用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(sel

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于遥感影像分类,我可以为你提供一些实现随机森林遥感图像分类的Python代码。下面是一个简单的例子,希望能够帮到你。 ```python from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split from osgeo import gdal import numpy as np # 读取遥感影像数据 ds = gdal.Open('image.tif') cols = ds.RasterXSize rows = ds.RasterYSize bands = ds.RasterCount # 读取每个像素的值 data = [] for band in range(1, bands+1): band_data = ds.GetRasterBand(band).ReadAsArray(0, 0, cols, rows).astype(float) data.append(band_data.flatten()) data = np.array(data).transpose() # 读取分类标签 label_ds = gdal.Open('label.tif') label_data = label_ds.GetRasterBand(1).ReadAsArray(0, 0, cols, rows).flatten() # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data, label_data, test_size=0.3, random_state=42) # 训练随机森林模型 clf = RandomForestClassifier(n_estimators=100, max_depth=10, random_state=42) clf.fit(X_train, y_train) # 预测分类结果 y_pred = clf.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 这段代码中,我们使用了`sklearn`库中的`RandomForestClassifier`来实现随机森林分类器,使用`gdal`库读取遥感影像数据和分类标签。代码中的`n_estimators`和`max_depth`参数可以根据具体的数据集进行调整,以获得更好的分类效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值