Python的ArcPy基于Excel表格對大量遙感影像批量重分類

??本文介紹基于Python中的ArcPy模塊,以Excel表格內的信息,對遙感影像加以重分類的方法。

??首先,明確一下本文的需求。現有按照文章ArcPy批量將柵格文件的屬性表導出為Excel表格的方法(https://blog.csdn.net/zhebushibiaoshifu/article/details/146456864)中方法,從大量遙感影像中導出的柵格數據屬性表,其均為.csv格式的表格文件。以其中一個.csv格式文件為例,其數據信息如下圖所示。

??其中,.csv文件的VALUE列表示遙感影像原本的像素值;而我們希望,將每一個像素,由原本的值(VALUE列)重分類為上圖中mvalue列表示的值——例如,如果原本像素為1,那么將其重分類為123000。此外,還需要注意,對于mvalue列,如果其原本的數字位數不夠6位,則在其右側補0直至滿6位——例如,如果mvalue列原本的值為23,那么需要在重分類時,重分類為230000

??明確了需求,我們就可以開始撰寫代碼。本文所用代碼如下。

# -*- coding: utf-8 -*-import arcpy
import os
import pandas as pd
from arcpy.sa import *tif_folder = r'E:/06_Extra/202503_SC/TIFF/'
csv_folder = r'E:/06_Extra/202503_SC/Re/'
output_folder = r'E:/06_Extra/202503_SC/ReTIFF2/'def format_value(val):"""確保 mvalue 值為6位,在右側補0"""if val == "":return Nonetry:# 確保是整數,并轉換為字符串str_val = str(int(val))# 計算需要補充的0的數量padding_length = 6 - len(str_val)if padding_length > 0:# 在右側填充0formatted_val = str_val + '0' * padding_lengthelse:# 如果已經是或超過6位,則直接返回formatted_val = str_valreturn int(formatted_val)except ValueError:return Nonetif_files = [f for f in os.listdir(tif_folder) if f.endswith('.tif')]for tif_file in tif_files:tif_path = os.path.join(tif_folder, tif_file)print(tif_path)csv_file = tif_file.replace('.tif', '.tif.csv')csv_path = os.path.join(csv_folder, csv_file)print(csv_path)df = pd.read_csv(csv_path)df = df.dropna(subset=['mvalue'])df['mvalue'] = df['mvalue'].apply(format_value)df = df.dropna(subset=['mvalue'])  # 再次刪除格式化后可能產生的NaN值if df.empty:print("No valid data found in {}, skipping.".format(csv_file))continuereclass_rules = []for index, row in df.iterrows():value = int(row['Value'])mvalue = int(row['mvalue'])print(mvalue)  # 打印格式化后的 mvalue 值reclass_rules.append((value, mvalue))myRemapValue = RemapValue(reclass_rules)reclass_table = arcpy.sa.Reclassify(tif_path, "Value", myRemapValue, "NODATA")# 輸出路徑output_path = os.path.join(output_folder, tif_file)# 保存重分類后的柵格數據reclass_table.save(output_path)print("Batch processing completed.")

??其中,代碼整體思路也很簡單。

??首先,tif_folder是存儲.tif格式柵格圖像文件的路徑,csv_folder是存儲與每個.tif文件對應的.csv文件的路徑,也就是包含重分類規則的Excel文件的路徑;output_folder則是用于保存處理后的重分類結果(也是.tif文件)的路徑。

??隨后,format_value函數接收一個數值val,將其轉換成字符串,并保證長度為6位;如果不足6位,則在右側填充0,如果輸入為空或無效值,則返回None

??接下來,列出tif_folder目錄下所有以.tif結尾的文件名,并循環遍歷每一個文件——首先構建當前.tif文件的完整路徑,隨后查找對應的.csv文件(同名但擴展名為.tif.csv的文件);使用Pandas讀取.csv文件,刪除mvalue列中為空的行,對mvalue列應用上面定義的format_value函數進行格式化;隨后,再次刪除格式化失敗導致的空值;如果處理后沒有有效數據,跳過該文件。

??緊接著,遍歷DataFrame的每一行,提取Value和格式化后的mvalue,將它們構造成一個元組(原值, 新值),存入reclass_rules列表。隨后,使用arcpy.sa.RemapValue()創建一個映射規則對象,并調用arcpy.sa.Reclassify()進行重分類——輸入柵格為tif_path,按照像素值Value進行重分類(應用myRemapValue規則),且未匹配的像素設為NODATA

??最后,構建輸出路徑,并保存重分類后的柵格圖像到指定位置。處理完所有文件后打印完成信息。

??執行上述代碼,即可對每一個遙感影像,按照每一個Excel文件內的規則,加以重分類。

??至此,大功告成。

歡迎關注:瘋狂學習GIS

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78430.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78430.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78430.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LabVIEW 中VI Server導出 VI 配置

該 LabVIEW VI 展示了在 VI Server 中配置和執行 Exported VIs 的過程,實現對服務器端導出 VI 的遠程調用與操作。 ? 具體過程及模塊說明 前期配置:需確保在 LabVIEW 的 “Tools> Options > VI Server > Protocols” 路徑下,啟用 …

論文閱讀:2024 ACM SIGSAC Membership inference attacks against in-context learning

總目錄 大模型安全相關研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Membership inference attacks against in-context learning https://arxiv.org/pdf/2409.01380 https://www.doubao.com/chat/4030440311895554 速覽 這篇論文主要研究了…

從 Python 基礎到 Django 實戰 —— 數據類型驅動的 Web 開發之旅

主題簡介: 本主題以 Python 基礎數據類型為核心,結合 Django 框架的開發流程,系統講解如何通過掌握數字、字符串、列表、元組、字典等基礎類型,快速構建功能完善的 Web 應用。通過理論與實踐結合,幫助學員從零基礎 Py…

軟考 系統架構設計師系列知識點之雜項集萃(53)

接前一篇文章:軟考 系統架構設計師系列知識點之雜項集萃(52) 第85題 在靜態測試中,主要是對程序代碼進行靜態分析。“數據初始化、賦值或引用過程中的異常”屬于靜態分析中的()。 A. 控制流分析 B. 數據…

Raycaster光線投射

Raycaster光線投射 3D虛擬工廠在線體驗 描述 光線投射Raycaster,用于進行raycasting(光線投射)。 光線投射用于進行鼠標拾取(在三維空間中計算出鼠標移過了什么物體)。 構造器 Raycaster( origin : Vector3, dire…

初識Linux —— git三板斧

版本控制器git 為了我們方便管理不同版本的文件,就有了版本控制器; 所謂的版本控制器,就是能夠了解到一個文件的歷史記錄(修改記錄);簡單來說就是記錄每一次的改動和版本迭代的一個管理系統,同…

用哈希表封裝出unordered_set/_map

前提: ①:本博客是對哈希表(開散列)進行封裝,因為閉散列不優秀(與庫保持一致) ②:哈希表封裝出unordered_set/_map和紅黑樹封裝出ste/map是大同小異的,可以先看下:用紅黑樹封裝出set和map -CSDN博客 ③&…

情緒ABC——AI與思維模型【93】

一、定義 情緒ABC思維模型是一種心理學上的理論,它認為人們的情緒和行為反應(C,Consequence)并非直接由激發事件(A,Activating event)引起,而是由個體對激發事件的認知和評價所產生…

Unity URP RenderTexture優化(二):深度圖優化

目錄 前言: 一、定位深度信息 1.1:k_DepthStencilFormat 1.2:k_DepthBufferBits 1.3:_CameraDepthTexture精度與大小 1.4:_CameraDepthAttachment數量 二、全代碼 前言: 在上一篇文章:Un…

【力扣刷題記錄】hot100錯題本(一)

1. 簡單題 我的答案:時間復雜度過高:O(N^3) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for num in nums:if (target - num) in nums:#多余for i in range(len(nums)):if nums[i] num :for j in range(i1,len(nu…

線程池的線程數配置策略

目錄 1. CPU密集型任務 2. IO密集型任務 3. 混合型任務 1. CPU密集型任務 特點:任務主要消耗CPU資源(如計算、加密、壓縮)。 推薦線程數: 線程數 ≈ 物理核心數 1 / CPU - 1(不知道哪個√) 例如&#…

基于開源鏈動2+1模式AI智能名片S2B2C商城小程序的爆品力構建研究

摘要:在興趣電商生態中,爆品力已成為品牌實現指數級增長的核心競爭力。本文以開源鏈動21模式AI智能名片S2B2C商城小程序為技術載體,結合抖音平臺的內容傳播特性,提出“需求挖掘-技術賦能-內容轉化”三位一體的爆品力構建模型。通過…

photoshop學習筆記2

第一章 第01節-界面的重要性(學習方法) 第02節-文件的打開新建及儲存 第03節-移動工具(圖層概念) 學習目標: 1.了解圖層概念 2.認識工具屬性 3.掌握工具使用 圖層的概念 移動工具 移動工具就是用來移動圖層內容的。是否可以用來移動組…

operator 可以根據需要重載 == 運算符進行比較

要將 vector<AppInfo> 類型的 A 和 B 兩個容器進行比較&#xff0c;并且當 B 中有 A 中沒有的元素時&#xff0c;插入到數據庫中&#xff0c;你可以通過以下步驟實現&#xff1a; 比較元素&#xff1a;遍歷 vector<B>&#xff0c;檢查每個元素是否在 vector<A&…

Three.js在vue中的使用(二)-加載、控制

在 Vue 中使用 Three.js 加載模型、控制視角、添加點擊事件是構建 3D 場景的常見需求。下面是一個完整的示例&#xff0c;演示如何在 Vue 單文件組件中實現以下功能&#xff1a; 使用 GLTFLoader 加載 .glb/.gltf 模型添加 OrbitControls 控制視角&#xff08;旋轉、縮放、平移…

軟件架構之旅(6):淺析ATAM 在軟件技術架構評估中的應用

文章目錄 一、引言1.1 研究背景1.2 研究目的與意義 二、ATAM 的理論基礎2.1 ATAM 的定義與核心思想2.2 ATAM 涉及的質量屬性2.3 ATAM 與其他架構評估方法的關系 三、ATAM 的評估流程3.1 準備階段3.2 場景和需求收集階段3.3 架構描述階段3.4 評估階段3.5 結果報告階段 四、ATAM …

vue-chat 開源即時聊天系統web本地運行方法

官方文檔 https://gitcode.com/gh_mirrors/vuechat7/vue-chat.git npm install 可能需要用 npm 下載兩個包 "viewerjs": "^1.9.0", "vue-hot-reload-api": "^2.3.4", src\constant\index.js 改下面兩行 export const LOGIN_API …

Rust與C/C++互操作實戰指南

目錄 1.前言2.動態庫調用2.1 動態加載2.2 靜態加載3.代碼調用4.靜態庫調用1.前言 本文原文為:Rust與C/C++互操作實戰指南 由于rust誕生時間太短,目前生態不夠完善,因此大量的功能庫都需要依賴于C、C++語言的歷史積累。 而本文將要介紹的便是如何實現rust與c乃至c++之間實…

ppt設計美化公司_杰青_長江學者_優青_青年長江學者_萬人計劃青年拔尖人才答辯ppt模板

WordinPPT / 持續為雙一流高校、科研院所、企業等提供PPT制作系統服務。 / 近期PPT美化案例 - 院士增選、科學技術獎、杰青、長江學者特聘教授、校企聯聘長江、重點研發、優青、青長、青拔.. 杰青&#xff08;杰出青年科學基金&#xff09; 支持已取得突出成果的45歲以下學…