这几天在跑模型的时候,需要对遥感影像批量裁剪和镶嵌,本来想使用arcpy完成,但是由于arcpy裁剪工具Spatial Analyst-Extraction-Extract by Mask工具裁剪出来是栅格数据集的形式,不能直接得到tif文件,于是就想直接用python完成。想着以后可能会经常用到这个工具,于是把裁剪和镶嵌代码一起实现了。
我使用的的是中国dem90米分辨率数据,下载完后是hgt格式,可以使用arcmap批量格式转换工具将数据转成tif。
转换完成后使用一下代码进行批量裁剪,这里只简单交代下代码的用法,输入需要裁剪的tif文件夹pathDir,shpfile为裁剪矢量,save_dir为保存路径,nodata=32767是表示背景的值,由于这里数据格式是int16,所以用最大值表示背景。
代码如下(示例):
import rasterio as rio
from rasterio.mask import mask
from tqdm import tqdm
import glob
import os
import geopandas as gpd
from geopandas import GeoSeries
from osgeo import gdal
import math
import numpy as np
def data_cut():
pathDir = r'*.tif'
shpfile = r'Yangtze.shp'
save_dir = r'' #保存tif
tif_list = glob.glob(pathDir)
for i in tqdm(range(len(tif_list))):
# 读入栅格文件
rasterfile = tif_list[i]
rasterdata = rio.open(rasterfile)
#获取栅格信息
# profile = rasterdata.profile
out_meta = rasterdata.meta.copy()
shpdata = gpd.read_file(shpfile)
# 投影变换,使矢量数据与栅格数据投影参数一致
shpdata = shpdata.to_crs(rasterdata.crs)
# 按照所有矢量进行循环裁剪
for j in range(0, len(shpdata)
文章目录前言一、geopandas和rasterio的安装二、批量裁剪和镶嵌1.数据准备2.镶嵌总结前言这几天在跑模型的时候,需要对遥感影像批量裁剪和镶嵌,本来想使用arcpy完成,但是由于arcpy裁剪工具Spatial Analyst-Extraction-Extract by Mask工具裁剪出来是栅格数据集的形式,不能直接得到tif文件,于是就想直接用python完成。想着以后可能会经常用到这个工具,于是把裁剪和镶嵌代码一起实现了。一、geopandas和rasterio的安装这里建议在
文章目录背景实战注意事项
图像镶嵌指讲几张栅格图像镶嵌到同一张图像中,也就是拼接图像。栅格图像是有明确的坐标系和空间范围的,因此待镶嵌的图像必须有一样的地理坐标坐标系或者投影坐标系,否则是无法镶嵌在同一坐标系中的。
本文
使用
的是gdal,而不是
rasterio
,但
rasterio
是基于gdal的,本文默认你已经安装好了gdal,没有装的请移步我的geopandas安装教程。
from osgeo import gdal, gdalconst
tifPath = './data/' # 待融合的
Python
可以
使用
多种库和工具来
批量
裁剪
遥感
影像,可以根据具体的需求选择合适的方法。以下是一种常用的方法:
首先,可以
使用
GDAL库来读取和处理
遥感
影像。GDAL库是一个开源的地理
数据
抽象库,可以处理各种格式的
遥感
影像。
其次,可以
使用
OpenCV库来进行图像处理操作。OpenCV是一个强大的图像处理库,提供了各种图像处理算法和工具。
通过结合这两个库,可以实现
批量
裁剪
遥感
影像的功能。
具体步骤如下:
1. 导入必要的库和模块,例如GDAL和OpenCV。
2. 遍历需要
裁剪
的
遥感
影像文件夹,获取每个影像的路径。
3.
使用
GDAL打开
遥感
影像文件,并获取其宽度和高度。
4. 根据需要
裁剪
的范围,计算
裁剪
后的宽度和高度。
5.
使用
GDAL中的
裁剪
函数
裁剪
遥感
影像,将
裁剪
结果保存到指定的路径。
6. 可以
使用
OpenCV对
裁剪
后的影像进行进一步的处理,例如调整亮度和对比度等。
7. 重复上述步骤,直到遍历完所有的
遥感
影像。
通过编写这样的
Python
脚本,可以实现对
遥感
影像的
批量
裁剪
。同时,还可以根据实际需求进行其他的图像处理操作,例如图像增强和特征提取等。这样的脚本可以提高效率,节省时间和人力成本。