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.mzph.cn/bicheng/7189.shtml

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

相关文章

笔记86:关于【#ifndef + #define + #endif】的用法

当你在编写一个头文件(例如 pid_controller.h)时,你可能会在多个源文件中包含它,以便在这些源文件中使用该头文件定义的函数、类或其他声明。如果你在多个源文件中都包含了同一个头文件,那么当你将整个工程统一编译&am…

第六节课《Lagent AgentLego 智能体应用搭建》

PDF链接:https://pan.baidu.com/s/1JFtvBWgEGFWJq8pHafvIUg?pwd6666 提取码:6666 Lagent & AgentLego 智能体应用搭建_哔哩哔哩_bilibili https://github.com/InternLM/Tutorial/blob/camp2/agent/README.md InternStudio 一、为什么需要agent…

基于JSP的酒店客房管理系统(三)

目录 第四章 系统各模块的实现 4.1客房管理系统首页的实现 4.1.1 客房管理系统首页概述 4.2客房管理系统前台的实现 4.2.1 客房管理系统前台概述 4.2.2 客房管理系统前台实现过程 4.2.3 预定客房信息及客房信息的查询 4.3客房管理系统后台的实现 4.3.1 客房管理系统后…

微搭低代码入门05文件的上传和下载

目录 1 创建数据源2 创建应用3 创建页面4 设置导航功能5 文件上传6 文件下载总结 小程序中,我们通常会有文件的上传和下载的需,在微搭中,文件是存放在云存储中,每一个文件都会有一个唯一的fileid,我们本篇就介绍如何通…

Unity类银河恶魔城学习记录 17-1,2 p166 Aliments fx p167 Blackhole additional vfx

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic; …

Vue3(管理系统)-封装axios(utils)

一、在utils下编写request.js实例 1.添加基地址,设置超时时间 import axios from axios const baseURL http://big-event-vue-api-t.itheima.net const instance axios.create({// TODO 1. 基础地址,超时时间baseURL,timeout: 3000 }) 2.添加请求拦截…

[C++][数据结构]红黑树的介绍和模拟实现

前言 之前我们简单学习了一下搜索树和平衡搜索树,今天我们来学习一下红黑树 简介 概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着…

面试官:关于HTTPS/HTTP2/HTTP3你懂多少?

公众号:程序员白特,欢迎一起交流学习~ HTTPS是什么 HTTP为什么不安全? https被认为是通信安全的http,除了http多了s和默认端口改成了443之外,其他都是沿用的http(除了明文和不安全)&#xff0…

基于FPGA的数字信号处理(9)--定点数据的两种溢出处理模式:饱和(Saturate)和绕回(Wrap)

1、前言 在逻辑设计中,为了保证运算结果的正确性,常常需要对结果的位宽进行扩展。比如2个3bits的无符号数相加,只有将结果设定为4bits,才能保证结果一定是正确的。不然,某些情况如77 14(1110),如果结果只…

SOLIDWORKS Electrical由3D布局生成2D机柜布局图

想要转换3D装配体到Electrical中需要在3D打开Electrical插件,并使用工程管理器打开需转换工程图的装配体 1、创建2D图纸 打开后在上方工具选项卡中选择-SOLIDWORKS Electrical选项卡-的创建2D图纸 2、选择图纸视角 使用创建2D图纸后就会进入工程图界面,在…

裁员为什么先裁技术人员?

最近这个问题比较火,我分享一个印象深刻的答案:楼盖完了,还需要搬砖的吗? 这个答案让我对互联网/程序员这个行业/职业有了新的认识。 房地产是在现实世界里盖房子,互联网是在虚拟世界里盖房子,只不过互联网…

第78天:WAF攻防-菜刀冰蝎哥斯拉流量通讯特征绕过检测反制感知

目录 案例一: 菜刀-流量&绕过&特征&检测 菜刀的流量特征 案例二:冰蝎-流量&绕过&特征&检测 冰蝎使用教程 冰蝎的流量特征 案例三: 哥斯拉-流量&绕过&特征&检测 哥斯拉使用教程 哥斯拉的流量特征…

调用第三方接口——支付宝付款

沙箱环境是支付宝开放平台为开发者提供的用于接口开发及主要功能联调的模拟环境。 参考 登录 - 支付宝 在沙箱环境下,已经分配好了用于模拟测试的应用信息、商家信息、买家信息等 小程序文档 - 支付宝文档中心 内网穿透(支付宝付款需要在公网进行检查…

PyTorch深度学习框架:从入门到实战

前言 学习 PyTorch 深度学习框架之前先学会深度学习和卷积神经网络 CNN ,这样学习起来会更香嗷。 Windows系统下PyTorch的环境配置 Anaconda是什么: Anaconda是一个开源的Python发行版本,专注于数据分析领域。它包含了conda、Python等190多…

为什么感觉没有效果

以前在辅导小儿作业的时候,我会在常用的搜索引擎里去寻找答案,一般情况下都能解决问题。 但是最近一段时间,我发现,搜索引擎搜出来的结果还没有利用短视频搜出来的答案更全面,短视频软件不仅可以显示AI整理出来的答案…

CTF(Web)中关于执行读取文件命令的相关知识与绕过技巧

在我遇到的题目中,想要读取文件必然是要执行cat /flag这个命令,但是题目当然不会这么轻松。让你直接cat出来,必然会有各种各样的滤过条件,你要做的就是尝试各种方法在cat /flag的基础上进行各种操作构建出最终的payload。 下面我…

【LeetCode 121】买卖股票的最佳时机

思路 思路: 所谓代码的复杂性来源于业务的复杂性,如果能够想清楚业务实现逻辑,就能够轻松写出代码; 假设当前是第i天,如何在第i天赚到最多的钱?需要在第i天之前以最低价买入股票; 所以需要求…

Python实现2048游戏

提供学习或者毕业设计使用,功能基本都有,不能和市场上正式游戏相提比论,请理性对待! 在这篇博客中,我们将使用 Python 和 Pygame 库来编写经典的 2048 游戏。2048 是一个益智类游戏,通过在 4x4 网格上滑动方块并合并它们来创建一个新的数字,直到获得数字 2048 或者无法继…

武汉星起航:跨境电商行业领航者,一站式孵化服务引领全球趋势

在全球化日益深入的今天,跨境电商作为连接各国市场的桥梁,其重要性日益凸显。在这一潮流中,武汉星起航电子商务有限公司以其前瞻性的战略眼光和丰富的运营经验,迅速崛起为跨境电商行业的领军者。公司不仅自营亚马逊跨境电商业务&a…

一对一WebRTC视频通话系列(四)——offer、answer、candidate信令实现

本篇博客主要讲解offer、answer、candidate信令实现,涵盖了媒体协商和网络协商相关实现。 本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点,代码全部进行了注释,便于理解WebRTC整体实现。 一对一WebRTC视频通话系列往期博客 一…