Python ArcPy批量将大量栅格文件的投影坐标系转为地理坐标系

  本文介绍基于Python语言中的ArcPy模块,批量将多个遥感影像由投影坐标系转为地理坐标系的方法。

  在之前的文章中,我们介绍过将单独1景遥感影像的投影坐标系转为地理坐标系的方法,大家可以参考文章投影坐标系转为地理坐标系:GDAL命令行实现(https://blog.csdn.net/zhebushibiaoshifu/article/details/136371267);但是,这个方法对于少量遥感影像的场景比较有优势,而对于具有大量待处理遥感影像批处理场景而言并不是很友好(主要是我不知道怎么在命令行写批量操作的脚本)。而在本文中,我们就介绍一下基于PythonArcPy模块,实现上述需求的批量操作的方法;此外,如果大家需要反过来,将地理坐标系转为投影坐标系,也可以参考本文的方法,亦可以参考文章GDAL一行代码实现投影:将栅格的地理坐标系转为投影坐标系(https://blog.csdn.net/zhebushibiaoshifu/article/details/136200172),或者是文章ArcGIS矢量图层投影与地理坐标系转为投影坐标系——ArcMap(https://blog.csdn.net/zhebushibiaoshifu/article/details/115216717)。

  首先,明确一下本文的需求。现有一个文件夹,其中含有大量不同格式的文件,如下图所示。其中,我们希望将所有.tif格式的遥感影像文件,由原本的投影坐标系转为地理坐标系

  如果我们用ArcMap等软件将上述遥感影像文件打开,可以看到其坐标系为投影坐标系WGS_1984_UTM_Zone_48N,且单位为;如下图所示。我们希望将这个投影坐标系转为地理坐标系,本文就以转为WGS_1984这个地理坐标系为例来介绍。

  本文所需要的代码如下所示。

# -*- coding: utf-8 -*-
"""
Created on Thu May  2 13:05:43 2024@author: fkxxgis
"""import os
import arcpyinput_folder = r"E:\04_Reconstruction\99_MODIS\new_data\GF"
output_folder = r"E:\04_Reconstruction\99_MODIS\new_data\GF_WGS84"
arcpy.env.workspace = input_folder
target_spatial_reference = arcpy.SpatialReference(4326)input_files = arcpy.ListRasters("*.tif")for input_file in input_files:output_file = os.path.join(output_folder, os.path.splitext(input_file)[0] + "_WGS84.tif")arcpy.ProjectRaster_management(input_file, output_file, target_spatial_reference)print input_file + " finished!"

  首先,我们导入所需使用的库。其中,os库用于文件和路径操作,arcpy则用于处理GIS数据。

  随后,我们定义输入输出文件的路径。其中,使用r前缀是为了将字符串视为原始字符串,从而避免转义字符的处理。同时,使用arcpy.env.workspace将工作空间设置为输入文件夹,这样在后续处理数据时可直接使用文件名而不需使用完整的路径。随后,通过arcpy.SpatialReference()创建一个代表WGS84地理坐标系的空间参考对象。大家在使用代码时,将这里的4326坐标系编号修改为自己所需目标坐标系的EPSG编号即可;其中,可以在这个网站(https://epsg.io/)中,找到自己所需坐标系的EPSG编号。

  接下来,首先使用arcpy.ListRasters()获取输入文件夹中所有的.tif格式文件,随后使用for循环遍历每一个输入文件。在循环中,通过os.path.join()os.path.splitext()构建输出文件的路径,将输入文件的文件名作为基础,并在结尾加上_WGS84作为标识。然后,使用arcpy.ProjectRaster_management()函数将输入文件投影到WGS84地理坐标系,并将结果保存到输出文件中。最后,通过print语句打印处理完成的文件名。

  执行上述代码,即可得到如下图所示的界面。我这里在print输出内容时,文件名称finished!之间忘记加空格了,大家理解即可。

  此外,可以在结果文件夹中看到如下图所示的结果文件。

  用ArcMap等软件将上述遥感影像文件打开,可以看到其坐标系为地理坐标系WGS_1984,且单位为;如下图所示。

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671203.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式与一致性协议之ZAB协议(四)

ZAB协议 ZooKeeper是如何选举领导者的。 首先我们来看看ZooKeeper是如何实现成员身份的? 在ZooKeeper中,成员状态是在QuorumPeer.java中实现的,为枚举型变量 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING }其实&…

Windows系统本地部署Net2FTP文件管理网站并实现远程连接上传下载

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…

【MicroPython ESP32】ssd1306驱动0.96“I2C屏幕汉字显示示例

所需模块micropython-ssd1306模块 中文下载站:https://www.cnpython.com/pypi/micropython-ssd1306/download 官方下载站:https://pypi.org/project/micropython-ssd1306/ 汉字取模说明 取模工具:pctolcd2002取模方式: UTF-8字…

java 泛型题目讲解

泛型的知识点 泛型仅存在于编译时期&#xff0c;编译期间JAVA将会使用Object类型代替泛型类型&#xff0c;在运行时期不存在泛型&#xff1b;且所有泛型实例共享一个泛型类 public class Main{public static void main(String[] args){ArrayList<String> list1new Arra…

多表自动抄表系统

1.多表自动抄表系统的概述 多表自动抄表系统是一种先进的能源管理技术&#xff0c;主要用于电力、水、燃气等公用事业的计量数据采集。它通过自动化的方式替代了传统的人工抄表&#xff0c;提高了效率&#xff0c;降低了误差&#xff0c;同时为智能城市的数据分析提供了基础。…

2024-05-06 问AI: 介绍一下深度学习中的LSTM网络

文心一言 当谈到深度学习中的LSTM&#xff08;Long Short-Term Memory&#xff09;网络时&#xff0c;它是一种特殊的循环神经网络&#xff08;RNN&#xff09;架构&#xff0c;旨在解决传统RNN在处理长序列时遇到的梯度消失和梯度爆炸问题。LSTM网络因其能够捕捉序列数据中的…

每日两题 / 24. 两两交换链表中的节点 25. K 个一组翻转链表(LeetCode热题100)

24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 定义三个指针&#xff0c;交换前先保存ntnt指针为next->next&#xff0c;cur和next两个节点&#xff0c;然后将pre->next指向next 若pre为空&#xff0c;说明当前交换的节点为头两个节点&#xff0c;…

对XYctf的一些总结

对XYctf的一些总结 WEB 1.http请求头字段 此次比赛中出现的&#xff1a; X-Forwarded-For/Client-ip&#xff1a;修改来源ip via&#xff1a;修改代理服务器 还有一些常见的字段&#xff1a; GET&#xff1a;此方法用于请求指定的资源。GET请求应该安全且幂等&#xff0c…

【JavaEE网络】从数据链路层到应用层的DNS

目录 数据链路层以太网 DNS 数据链路层 越往下与程序员越远 代表协议&#xff1a;以太网。平常用的网线也叫“以太网线”&#xff0c;平常用的交换机也叫“以太网交换机” 以太网 认识以太网 “以太网” 不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含…

电脑问题2【彻底删除CompatTelRunner】

彻底删除CompatTelRunner 电脑偶尔会运行CompatTelRunner造成CPU占用的资源非常大,所以这里要想办法彻底关闭他 本文摘录于&#xff1a;https://mwell.tech/archives/539只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 解决办法是进入W…

从论文中看AI绘画

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 主要看是看Diffusion Models,CLIP,ControlNet,IP-Adapter这种经典论文,尝试总结论文写作的一些方式以及图像生成模型的一些内在思想. 对于其中的数学原理和代码不过深究. DDPM 使用扩散模型得到高质量图像,证明了这…

libevent的使用

文章目录 libevent封装的框架思想常用函数分析使用fifo的读写未决和非未决bufferevent特性bufferevent函数客户端和服务器连接和监听libevent实现socket通信 libevent封装的框架思想 libevent框架&#xff1a;1. 创建 event_base (乐高底座)2. 创建 事件evnet 3. 将事件 添加…