Python实现snap:对齐多张遥感影像的空间范围
本文介绍基于Python中ArcPy模块,实现基于栅格图像批量裁剪栅格图像,同时对齐各个栅格图像的空间范围,统一其各自行数与列数的方法。
首先明确一下我们的需求。现有某一地区的多张栅格遥感影像,其虽然都大致对应着同样的地物范围,但不同栅格影像之间的空间范围、行数与列数、像元的位置等都不完全一致;例如,某一景栅格影像会比其他栅格影像多出一行,而另一景栅格影像可能又会比其他栅格影像少一列等等。我们希望可以以其中某一景栅格影像为标准,将全部的栅格影像的具体范围、行数、列数等加以统一。
本文所用到的具体代码如下。
# -*- coding: utf-8 -*-
"""
Created on Thu Dec 29 21:13:19 2022
@author: fkxxgis
"""
import arcpy
tif_file_path = r"E:\02_Project\01_Chlorophyll\ClimateZone\Original"
result_file_path = r"E:\02_Project\01_Chlorophyll\ClimateZone\Original_Snap/"
snap_file_name = r"E:\02_Project\01_Chlorophyll\ClimateZone\Original\F_LC.tif"
arcpy.env.workspace = tif_file_path
arcpy.env.snapRaster = snap_file_name
tif_file_list = arcpy.ListRasters("*", "tif")
for tif_file in tif_file_list:
key_name = tif_file.split(".tif")[0] + "S.tif"
arcpy.Clip_management(tif_file,
"#",
result_file_path + key_name,
snap_file_name,
"#",
"#",
"MAINTAIN_EXTENT")
其中,tif_file_path是保存有我们原有栅格图像的路径,result_file_path是裁剪后各个结果图像的保存路径(记得在这一路径后加一个正斜杠/,否则之后输出结果的路径会有问题),snap_file_name是裁剪其他栅格图像时,所用的模板栅格图像——因为我们要统一各个栅格图像的行号与列号,所以很显然,这里这个模板图像就需要找各个栅格图像中,行数与列数均为最少的那一景图像。这里需要注意,如果大家的各个栅格图像中,行数与列数最少的栅格不是同一个栅格,那么可以分别用行数最少、列数最少的这两个栅格分别作为模板,执行两次上述代码。
代码整体思路也很简单:首先,我们基于arcpy.ListRasters()函数,获取tif_file_path路径下原有的全部.tif格式的图像文件,并以列表的形式存放于tif_file_list中;随后,逐一取出tif_file_list列表中的栅格文件,进行裁剪处理。这里的裁剪我们是通过arcpy.Clip_management()函数来实现的,其各项参数的具体含义大家可以参考官方帮助文档,我们这里就只对本文中需要修改的参数加以介绍。
其中,第一个参数就是当前循环所用的栅格图像文件,第三个参数是结果文件的保存路径与文件名,第四个参数则是模板文件;最后一个参数"MAINTAIN_EXTENT"是为了保证得到的裁剪后结果图像严格与模板图像的行数、列数相匹配。除此之外,几个"#"表示我们对其他参数暂时不配置。
此外,在代码开头的这句arcpy.env.snapRaster = snap_file_name,表明我们将以所选用的模板文件为标准,使得输出的结果文件的像元大小、图像范围等与模板文件保持一致。这里需要注意,这一句代码与前述的"MAINTAIN_EXTENT"参数缺一不可——只有二者同时出现,才可以保证输出结果与模板文件是严格一致的。
另一方面,由于我们用到了ArcPy模块,因此如果大家的Python版本是3.0及以上,则需要在ArcMap软件中的Python运行框,或其对应的IDLE(如下图所示)中运行上述代码。

运行结果后,可以发现所有输出结果文件就具有完全一致的行数与列数了,且其各自的像元位置也是完全一致的。
至此,大功告成。
Python实现snap:对齐多张遥感影像的空间范围的更多相关文章
- Python gdal读取MODIS遥感影像并结合质量控制QC波段掩膜数据
本文介绍基于Python中GDAL模块,实现MODIS遥感影像数据的读取.计算,并基于质量控制QC波段进行图像掩膜的方法. 前期的文章Python GDAL读取栅格数据并基于质量评估波段QA对 ...
- 遥感影像和DEM数据获取处理、GeoServer切片发布并使用Cesium加载
1. 数据获取 笔者这里使用的是哨兵一号(Sentinel-1).ALOS的遥感影像和ALOS的DEM数据 下载地址为:ASF Data Search (alaska.edu) ASF(Alaska ...
- Python核对遥感影像批量下载情况的方法
本文介绍批量下载遥感影像时,利用Python实现已下载影像文件的核对,并自动生成未下载影像的下载链接列表的方法. 批量下载大量遥感影像数据对于GIS学生与从业人员可谓十分常见.然而,对于动辄成 ...
- Python ArcPy批量掩膜、重采样大量遥感影像
本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作. 首先,我们来明确一下本文的具体需求.现有一个存储有大量.tif格式遥感影像的文件夹:且其中除了 ...
- 批量下载Landsat遥感影像的方法
本文介绍在USGS网站批量下载Landsat系列遥感影像的方法. 首先,打开EarthExplorer的官网,首先完成注册与登录. 接下来,点击左侧"Search Criteri ...
- 遥感影像滤波处理软件 — timesat3.2
最近因为要做遥感影像的滤波处理,经过女神推荐,决定用Timesat,可是该软件3.1版本只适合xp系统以及2011的matlab,后来在官网上找到了最新的3.2版本.支持64位操作系统以及2014的m ...
- 在matlab中进行遥感影像地理坐标的相互转换
在matlab中进行图像处理,一般使用的都是图像本地坐标,以左上角(1,1)开始.处理完成后,如果要将结果在带地理坐标的遥感影像中显示,或者需要输出成shp文件,就需要涉及到本地坐标和地理坐标的转换, ...
- 在matlab中实现遥感影像和shp文件的结合显示
clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure, mapshow('boston.tif'); % ...
- 1. GDAL与OpenCV2.X数据转换(适合多光谱和高光谱等多通道的遥感影像)
一.前言 GDAL具有强大的图像读写功能,但是对常用图像处理算法的集成较少,OpenCV恰恰具有较强的图像处理能力,因此有效的结合两者对图像(遥感影像)的处理带来了极大的方便.那么如何实现GDAL与o ...
- GDAL与OpenCV2.X数据转换(适合多光谱和高光谱等多通道的遥感影像)
一.前言 GDAL具有强大的图像读写功能,但是对常用图像处理算法的集成较少,OpenCV恰恰具有较强的图像处理能力,因此有效的结合两者对图像(遥感影像)的处理带来了极大的方便.那么如何实现GDAL与o ...
随机推荐
- 从零开始配置vim(26)——LSP UI 美化
之前我们通过几个实例演示如何配置其他语言的lsp服务,相信各位小伙伴碰到其他的编程语言也能熟练的配置它对应的lsp服务.本篇讲作为一个补充,我们来优化一下LSP 相关的显示 配置 UI 原始的 lsp ...
- 全套解决方案:中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!
全套解决方案:基于pytorch.transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据! 1.简介 目标:基于pytorch.transformers做中文领 ...
- 百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]
相关文章: 基础知识介绍: [一]ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀.的博客-CSDN博客_ernie模型 百度飞桨: ...
- 3.1 Windows驱动开发:内核远程堆分配与销毁
在开始学习内核内存读写篇之前,我们先来实现一个简单的内存分配销毁堆的功能,在内核空间内用户依然可以动态的申请与销毁一段可控的堆空间,一般而言内核中提供了ZwAllocateVirtualMemory这 ...
- LyScriptTools 模块类API接口手册
LyScriptTools工具包是在LyScript模块基础上封装的工具包,其主要是二次封装LyScript插件实现的一些新功能,或者将特定功能组件拆分开形成的独立模块,此类模块可实现更加精细化的功能 ...
- 基于AQS实现自定义同步类
Mutex(互斥锁) Mutex是一个不可重入的互斥锁实现.锁资源(AQS里的state)只有两种状态:0表示未锁定,1表示锁定.下边是Mutex的核心源码: class Mutex implemen ...
- 有用的工具类(Java)
IP地址获取 public class IPUtil { private static final String UNKNOWN = "unknown"; protected IP ...
- SpringCloud-05-Gateway
统一网关Gateway 1.为什么需要网关 网关功能: 身份认证和权限校验 服务路由.负载均衡 请求限流 2.网关的技术实现 在SpringCloud中网关的实现包括两种: gateway zuul ...
- AIX6.1修改时区/修改时间
环境 AIX6.1 修改时间 格式:date -n mmddHHMMYY #mm表示月分,dd表示日期,HH表示小时,MM表示分钟,YY表示年份. 例子:date -n 1204171622 #修 ...
- 神经网络优化篇:将 Batch Norm 拟合进神经网络(Fitting Batch Norm into a neural network)
将 Batch Norm 拟合进神经网络 假设有一个这样的神经网络,之前说过,可以认为每个单元负责计算两件事.第一,它先计算z,然后应用其到激活函数中再计算a,所以可以认为,每个圆圈代表着两步的计算过 ...