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 arcpy

input_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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg

本文首发于公众号:机器感知 Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg Converting Anyones Voice: End-to-End Expressive Voice Conversion with a Conditional Diffusion Model Expressive voice conversion (VC) conducts speak…

【爬虫】爬取A股数据写入数据库(一)

1. 对东方财富官网的分析 步骤: 通过刷新网页,点击等操作,我们发现https://datacenter-web.eastmoney.com/api/data/v1/get?请求后面带着一些参数即可以获取到相应数据。我们使用python来模拟这个请求即可。 我们以如下选择的页面为切入点…

滑动窗口 | 1652. 拆炸弹 |LeetCode

文章目录 题目介绍暴力(可以过力扣竟然。不愧是简单题):滑动窗口 祝你天天开心 题目介绍 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。 为了获得正确的密码,你需要替换掉每…

关系型数据库MySql分库分表带来的问题以及解决方案

水平分表 水平分表是什么? 将一张表横向拆分为多张表,拆分的表,依然在同一个库中。 例如,user表有400w条记录,将user表拆分成4张表,每张表100w条记录。拆分后的表名,分别叫做user_0、user1、u…

内网用户是如何连接上互联网的?详解NAT网络地址转换技术

背景 https://blog.csdn.net/weixin_43972437/article/details/107344633 不知道你有没有过困惑,都说现在 ipv4 地址耗尽了,但是我们为什么还能上网呢?原来这都要归功于 NAT 网络地址转换技术。 比如我们接入了中国移动的宽带,宽…

重学SpringBoot3-SPI机制

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-SPI机制 什么是 SPI?Spring Boot 中的 SPI 机制spring.factories 文件自动配置的实现启动流程中的作用 SPI实际应用步骤 1: 新建模块步骤 2:…

扩展学习|一文读懂知识图谱

一、知识图谱的技术实现流程及相关应用 文献来源:曹倩,赵一鸣.知识图谱的技术实现流程及相关应用[J].情报理论与实践,2015, 38(12):127-132. (一)知识图谱的特征及功能 知识图谱是为了适应新的网络信息环境而产生的一种语义知识组织和服务的方…

HarmonyOS开发案例:【卡片二级联动】

1 卡片介绍 使用ArkTS语言,实现一个导航与内容二级联动的效果。 2 标题 二级联动(ArkTS) 3 介绍 介绍了如何基于List组件实现一个导航和内容的二级联动效果。样例主要包含以下功能: 切换左侧导航,右侧滚动到对应…

自定义类型②③——联合体和枚举

自定义类型②③——联合体和枚举 1.联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员结构体和联合体的对比1.4 联合体大小的计算1.5 联合体的应用①1.5 联合体的应用② 2. 枚举2.1 枚举类型的声明2.2 枚举类型的特点2.3 枚举的优点 1.联合体 1.1 联合体类型的声明 关…

Python sqlite3库 实现 数据库基础及应用 输入地点,可输出该地点的爱国主义教育基地名称和批次的查询结果。

目录 【第11次课】实验十数据库基础及应用1-查询 要求: 提示: 运行结果: 【第11次课】实验十数据库基础及应用1-查询 声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 1.简答题 数据库文件Edu_Base.db&#…

有什么方便的教学口语软件?6个软件教你快速练习口语

有什么方便的教学口语软件?6个软件教你快速练习口语 以下是六个方便实用的教学口语软件,它们可以帮助您快速练习口语: AI外语陪练: 这是一款知名的语言学习软件,提供多种语言的口语练习课程。它采用沉浸式的学习方法&#xff0…

【数字图像处理笔记】Matlab实现图像平滑算法 均值-中值-高斯滤波 (三)

💌 所属专栏:【数字图像处理笔记】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#x…

jetson实操(二):jetson nano发送短信到指定用户

文章目录 一、准备工作二、代码实现 一、准备工作 腾讯云网址:点击 注:需先申请“短信签名”和“短信正文”,按照要求填写申请即可,腾讯云的审核效率还是很快的,一般在1-2个小时内就会有结果,链接&…

2024-2034年,量子密码市场年增长率将达29.3%

Visiongain发布了一份新报告,题为《2024-2034年量子密码市场报告》:按组件(软件、硬件)、软件(加密算法、密钥管理解决方案等)、硬件(量子密钥分发(QKD)设备、量子随机数…

CkickHouse JDBC 使用整理

1. pom 引入 <dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.4.6</version></dependency><dependency><groupId>org.roaringbitmap</groupId><arti…

BeautifulSoup库TapTap评论爬虫

最近在写关于评论数据主题建模和情感分析的作业&#xff0c;本来想用八爪鱼直接爬TapTap的评论数据&#xff0c;但是自动识别网页总是定位错误&#xff0c;还是回归BeautifulSoup和Request来进行评论内容的爬取&#xff0c;具体操作步骤如下 导入所需的库 import re import r…

定制旁通式孔板流量计需要哪些技术参数

旁通式孔板流量计又称桥式孔板流量计&#xff0c;本产品含有直管&#xff0c;直管中安装有孔板&#xff0c;该孔板两侧的直管壁上分别设置一个测量管&#xff0c;其特征是&#xff1a;所述直管和一个桥管并联式连接&#xff0c;二者内管相互连通&#xff0c;并且所述直管和桥管…

mars3d的config,json文件配置谷歌影像地图的tilingScheme属性

mars3d的config,json文件配置tilingScheme属性说明&#xff1a; 1.cesium加载谷歌影像地图的时候需要配置tilingScheme参数&#xff0c;如以下代码&#xff1a; var viewer new Cesium.Viewer("cesiumContainer", { animation: false, //是否显示动画控件 baseLaye…

64位Office API声明语句第118讲

跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接触VBA已经20余年了&#xff0c;随着年龄的增长&#xff0c;越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友&#xff0c;都来学习VBA,利用VBA,起码可以提高…

文件夹加密软件哪个好?文件夹加密软件排行榜

许多人给小编说&#xff0c;我们公司想实现文件私自发出呈乱码状态&#xff0c;这说明公司逐渐认识到文件加密的重要性。 目前&#xff0c;加密软件已经广泛应用于企业办公、商业贸易、个人应用等多个领域&#xff0c;成为保护数据安全和隐私的重要手段。 为了保护企业机密&am…