国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python地理數(shù)據(jù)處理 22:基于arcpy批量操作(四)

這篇具有很好參考價(jià)值的文章主要介紹了Python地理數(shù)據(jù)處理 22:基于arcpy批量操作(四)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 批量裁剪進(jìn)階

代碼描述:遍歷a文件夾下的所有tif影像,并使用每個(gè)a文件夾中的tif影像對(duì)b文件夾下的所有tif影像進(jìn)行裁剪。裁剪后的柵格將以兩個(gè)tif文件進(jìn)行組合命名,并保存到另一個(gè)文件夾中。

# -*- coding: cp936 -*-
import arcpy
import os
import time

start = time.clock()
arcpy.CheckOutExtension("spatial")

arcpy.CheckOutExtension("spatial")
a_folder = r"D:\dataset\a"
b_folder = r"D:\dataset\b"
output_folder = r"D:\dataset\output_tif"

# 設(shè)置工作環(huán)境
arcpy.env.workspace = a_folder

# 獲取a文件夾下的所有tif影像
a_rasters = arcpy.ListRasters("*", "TIF")

# 創(chuàng)建輸出文件夾
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 遍歷a文件夾下的每個(gè)tif影像
for indexa, a_raster in enumerate(a_rasters):
    # 構(gòu)建輸出文件名前綴
    a_name = os.path.splitext(a_raster)[0]

    a_raster = a_folder + "\\" + a_name + ".tif"
    
    # 設(shè)置工作環(huán)境為b文件夾
    arcpy.env.workspace = b_folder
    
    # 獲取b文件夾下的所有tif影像
    b_rasters = arcpy.ListRasters("*", "TIF")
    
    # 遍歷b文件夾下的每個(gè)tif影像
    for indexb, b_raster in enumerate(b_rasters):
        # 構(gòu)建輸出文件名
        output_name = a_name + "_" + os.path.splitext(b_raster)[0] + ".tif"
        
        # 構(gòu)建輸出路徑
        output_path = os.path.join(output_folder, output_name)
        
        # 設(shè)置工作環(huán)境為a文件夾
        arcpy.env.workspace = a_folder

        b_raster = b_folder + "\\"  + b_raster
        
        # 裁剪b影像到輸出路徑
        arcpy.gp.ExtractByMask_sa(b_raster, a_raster, output_path)
        
        index = indexa + indexb + 1
        print "{} have been completed and the current file is ".format(index) + output_name

end = time.clock()  
print "All finish!!!"

2. 統(tǒng)計(jì)運(yùn)算

獲取柵格數(shù)據(jù)的平均值,并輸出程序運(yùn)行進(jìn)度:

# -*- coding: utf-8 -*-
import arcpy
import os
import glob
from arcpy.sa import *

arcpy.CheckOutExtension("ImageAnalyst")
arcpy.CheckOutExtension("spatial")

input_folder = r"D:\dataset"
output_file = r'D:\dataset\Meandata.csv'

rasters = glob.glob(os.path.join(input_folder, "*.tif"))
where_clause = "VALUE = -32556"

total_rasters = len(rasters)
processed_rasters = 0

with open(output_file, 'w') as output:
    for raster in rasters:
        outSetNull = SetNull(raster, raster, where_clause)
        meanValueInfo = arcpy.GetRasterProperties_management(outSetNull, 'MEAN')
        meanValue = meanValueInfo.getOutput(0)
        output.write(os.path.basename(raster).split('.')[0] + ',' + str(meanValue) + '\n')
        
        processed_rasters += 1
        progress = float(processed_rasters) / total_rasters * 100
        print("Processed {} out of {} rasters. Progress: {:.2f}%".format(processed_rasters, total_rasters, progress))

print("All processing is done!")

程序運(yùn)行進(jìn)度:
Python地理數(shù)據(jù)處理 22:基于arcpy批量操作(四)

3. 柵格批量縮小n倍

某文件夾中包含多個(gè)子文件夾,如:“2003clip”, “2004clip”, “2005clip”, “2006clip”, “2007clip”, “2008clip”, “2009clip”, 每個(gè)子文件夾中包含多個(gè)tif圖像,現(xiàn)在需要對(duì)這些圖像乘以縮放因子,如0.0001

# -*- coding: cp936 -*-
import arcpy
import os
arcpy.CheckOutExtension('Spatial')

# 輸入文件夾和輸出文件夾路徑
input_folder = r"D:\Datasets"
output_folder = r"D:\Datasets\縮小10000倍"

# 遍歷輸入文件夾中的所有子文件夾
for folder_name in ["2003clip", "2004clip", "2005clip", "2006clip", "2007clip", "2008clip", "2009clip"]:
    print folder_name
    # 子文件夾路徑
    folder_path = os.path.join(input_folder, folder_name)
    
    # 獲取子文件夾中的所有tif文件
    tif_files = [file for file in os.listdir(folder_path) if file.endswith(".tif")]
    
    # 遍歷每個(gè)tif文件
    for tif_file in tif_files:
        # 輸入tif文件路徑
        input_tif = os.path.join(folder_path, tif_file)
        
        # 輸出tif文件路徑
        output_tif = os.path.join(output_folder, tif_file)
        
        # 打開Raster對(duì)象
        raster = arcpy.Raster(input_tif)
        
        # 過濾像元值大于10000和小于0的像元
        filtered_raster = arcpy.sa.Con((raster >= 0) & (raster <= 10000), raster)
        
        # 對(duì)過濾后的像元乘以0.0001
        scaled_raster = filtered_raster * 0.0001
        
        # 保存輸出tif文件
        scaled_raster.save(output_tif)
        print folder_name + "OK!!!"
        
print "Finish!!!"

4. 建立屬性表(簡(jiǎn)化、普適)

之前已經(jīng)寫過如何建立柵格屬性表:Python地理數(shù)據(jù)處理 十九:arcpy批量處理數(shù)據(jù)之為柵格數(shù)據(jù)建立屬性表并導(dǎo)出
現(xiàn)在,結(jié)合之前的,寫一個(gè)更加簡(jiǎn)單普適的代碼,方便今后使用:

# -*- coding: utf-8 -*-
import arcpy
import os
arcpy.CheckOutExtension("Spatial")

# 設(shè)置工作空間
arcpy.env.workspace = r"D:\dataset"

# 獲取文件夾中的所有柵格數(shù)據(jù)
raster_list = arcpy.ListRasters()

# 檢查是否有至少一個(gè)柵格數(shù)據(jù)
if len(raster_list) < 1:
    print("文件夾中至少需要有一個(gè)柵格數(shù)據(jù)才能建立屬性表。")
    exit()

# 循環(huán)處理每個(gè)柵格數(shù)據(jù)
for raster in raster_list:
    raster_path = os.path.join(arcpy.env.workspace, raster)

    # 建立屬性表
    arcpy.BuildRasterAttributeTable_management(raster_path)
    print "屬性表已建立完成: {}。".format(raster)

print("屬性表已建立完成。")

5. 計(jì)算土地利用未變化區(qū)域(LUCC)

土地利用數(shù)據(jù)每年都在變化,如何判斷20年的土地利用變化數(shù)據(jù)中,哪些地方是未變化的?這是需要解決的一個(gè)問題,該代碼實(shí)現(xiàn)以上內(nèi)容,將變化的數(shù)據(jù)設(shè)置為100。
數(shù)據(jù)來源:GEE11:2個(gè)土地覆蓋數(shù)據(jù)(LUCC)分享和下載文章來源地址http://www.zghlxwxcb.cn/news/detail-445371.html

# -*- coding: utf-8 -*-
import arcpy
import os
arcpy.CheckOutExtension("Spatial")

# 設(shè)置工作空間
arcpy.env.workspace = r"D:\dataset"

# 獲取文件夾中的所有tif影像
tif_list = arcpy.ListRasters("*.tif")

# 檢查是否有至少2個(gè)tif影像
if len(tif_list) < 2:
    print("文件夾中至少需要有2個(gè)tif影像才能進(jìn)行計(jì)算。")
    exit()

# 選擇第一個(gè)tif影像作為基準(zhǔn)影像
base_tif = tif_list[0]
base_tif_path = os.path.join(arcpy.env.workspace, base_tif)

# 讀取基準(zhǔn)影像的像素?cái)?shù)組
base_raster = arcpy.Raster(base_tif_path)
base_array = arcpy.RasterToNumPyArray(base_raster)

# 循環(huán)處理每個(gè)tif影像
for tif in tif_list[1:]:
    tif_path = os.path.join(arcpy.env.workspace, tif)

    # 讀取當(dāng)前影像的像素?cái)?shù)組
    current_raster = arcpy.Raster(tif_path)
    current_array = arcpy.RasterToNumPyArray(current_raster)

    # 對(duì)比基準(zhǔn)數(shù)組和當(dāng)前數(shù)組的像素值
    comparison_array = (base_array == current_array)

    # 將不相等的像素值置為100
    result_array = current_array.copy()
    result_array[~comparison_array] = 100

    # 更新基準(zhǔn)數(shù)組為結(jié)果數(shù)組
    base_array = result_array

    print ("正常處理{}".format(tif))

# 創(chuàng)建輸出柵格
output_raster = arcpy.NumPyArrayToRaster(result_array, arcpy.Point(base_raster.extent.XMin, base_raster.extent.YMin),
                                         base_raster.meanCellWidth, base_raster.meanCellHeight)

# 設(shè)置輸出路徑和名稱
output_path = os.path.join(arcpy.env.workspace, "unchanged_landuse.tif")

# 保存輸出柵格
output_raster.save(output_path)

print("未發(fā)生變化的土地利用柵格數(shù)據(jù)圖像已生成")

到了這里,關(guān)于Python地理數(shù)據(jù)處理 22:基于arcpy批量操作(四)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【MATLAB數(shù)據(jù)處理實(shí)用案例詳解(22)】——基于BP神經(jīng)網(wǎng)絡(luò)的PID參數(shù)整定

    【MATLAB數(shù)據(jù)處理實(shí)用案例詳解(22)】——基于BP神經(jīng)網(wǎng)絡(luò)的PID參數(shù)整定

    基于BP神經(jīng)網(wǎng)絡(luò)的PID控制的系統(tǒng)結(jié)構(gòu)如下圖所示: 考慮仿真對(duì)象,輸入為r(k)=1.0,輸入層為4,隱藏層為5,輸出層為3,仿真輸出滿足 a ( k ) = 1.2 ( 1 ? 0.8 e x p ( ? 0.1 k ) ) , y ( k ) = a ( k ) y ? 1 1 + ( y ? 1 ) 2 + u ? 1 a(k)=1.2(1-0.8exp(-0.1k)),y(k)=a(k) frac{y-1}{1+(y-1)^2}+u-1 a ( k ) = 1.2 ( 1 ?

    2024年02月07日
    瀏覽(32)
  • NCDC氣象數(shù)據(jù)的提取與處理(四):python批量讀取、寫入nc數(shù)據(jù)經(jīng)緯度格點(diǎn)數(shù)值

    NCDC氣象數(shù)據(jù)的提取與處理(四):python批量讀取、寫入nc數(shù)據(jù)經(jīng)緯度格點(diǎn)數(shù)值

    1.問題描述: 2.思路: 3.實(shí)現(xiàn)過程: 3.1格點(diǎn)位置匹配 3.2寫入表格 4.運(yùn)行效果 4.1打包站點(diǎn)信息 4.2讀取nc文件列表 4.3提取對(duì)應(yīng)格點(diǎn)的nc數(shù)據(jù) 4.4數(shù)據(jù)寫入 NCDC的站點(diǎn)數(shù)據(jù)處理在之前三節(jié)里已經(jīng)介紹過了,但是NCDC的就那么幾種數(shù)據(jù)可能不能滿足日常使用,比如說輻射數(shù)據(jù)他就沒有。

    2024年02月05日
    瀏覽(35)
  • ArcGIS Pro實(shí)操寶典:地理空間數(shù)據(jù)處理全流程解析

    ArcGIS Pro實(shí)操寶典:地理空間數(shù)據(jù)處理全流程解析

    GIS是利用電子計(jì)算機(jī)及其外部設(shè)備,采集、存儲(chǔ)、分析和描述整個(gè)或部分地球表面與空間信息系統(tǒng)。簡(jiǎn)單地講,它是在一定的地域內(nèi),將地理空間信息和 一些與該地域地理信息相關(guān)的屬性信息結(jié)合起來,達(dá)到對(duì)地理和屬性信息的綜合管理。GIS的研究對(duì)象是整個(gè)地理空間,而地

    2024年04月23日
    瀏覽(33)
  • 【數(shù)據(jù)集處理】基于Python處理EAR5數(shù)據(jù)

    【數(shù)據(jù)集處理】基于Python處理EAR5數(shù)據(jù)

    ERA5是ECMWF(歐洲中期天氣預(yù)報(bào)中心)對(duì)1950年1月至今全球氣候的第五代大氣再分析數(shù)據(jù)集。 包含了四個(gè) 基本變量(日平均溫度、降水、比濕度和距離地表2米的氣壓) ,這些變量在每日時(shí)間尺度上覆蓋全球,從而可以對(duì)不同地區(qū)和時(shí)間段進(jìn)行全面和統(tǒng)一的分析 時(shí)間分辨率:194

    2024年02月05日
    瀏覽(26)
  • Java 多線程批量處理數(shù)據(jù)

    1 需求 在項(xiàng)目開發(fā)中需要處理100萬(wàn)多的數(shù)據(jù),這些數(shù)據(jù)需要從mysql數(shù)據(jù)庫(kù)中讀取出來,再通過調(diào)用其他平臺(tái)的接口推送數(shù)據(jù)。由于時(shí)間緊迫,數(shù)據(jù)需要在短時(shí)間內(nèi)完成推送,采用單線程推送很慢,所以采用多線程推送來提高效率。 2 配置多線程 2.1 application.yml 2.2 創(chuàng)建ThreadPoo

    2024年02月22日
    瀏覽(19)
  • 基于python的心臟病個(gè)人指數(shù)數(shù)據(jù)集數(shù)據(jù)處理——結(jié)課論文

    基于python的心臟病個(gè)人指數(shù)數(shù)據(jù)集數(shù)據(jù)處理——結(jié)課論文

    前言: 此論文是小趙的python數(shù)據(jù)分析與應(yīng)用的結(jié)課作業(yè) , 未上傳論文涉及的所有數(shù)據(jù)集,本論文所涉及的數(shù)據(jù)預(yù)處理,數(shù)據(jù)分析和可視化僅以這些數(shù)據(jù)集為準(zhǔn),所有處理方法,結(jié)果以及結(jié)論僅個(gè)人觀點(diǎn)。 心臟病個(gè)人指數(shù)數(shù)據(jù)集數(shù)據(jù)處理 摘要: ??? 本論文包含了對(duì)心臟病個(gè)

    2024年02月04日
    瀏覽(19)
  • 多線程處理大批量數(shù)據(jù)操作

    ?@Autowired private DataSourceTransactionManager dataSourceTransactionManager; @Autowired private TransactionDefinition transactionDefinition; @Autowired private StudentService studentService; /** ?* 對(duì)用戶而言,27s 任是一個(gè)較長(zhǎng)的時(shí)間,我們嘗試用多線程的方式來經(jīng)行修改操作看能否加快處理速度 ?* 預(yù)計(jì)創(chuàng)建10個(gè)線程

    2024年02月09日
    瀏覽(19)
  • 使用 multiprocessing 多進(jìn)程處理批量數(shù)據(jù)

    使用 multiprocessing 多進(jìn)程處理批量數(shù)據(jù)

    示例代碼 multiprocessing.Pool 創(chuàng)建進(jìn)程池, 傳入的參數(shù)是要要使用的 CPU 內(nèi)核數(shù)量, 直接用 cpu_count() 可以拿到當(dāng)前硬件配置所有的 CPU 內(nèi)核數(shù). pool.map 可以直接將處理后的結(jié)果拼接成一個(gè) list 對(duì)象 應(yīng)用在實(shí)際數(shù)據(jù)處理代碼的效果對(duì)比: 普通處理方式, 用時(shí) 221 秒 多進(jìn)程處理方式, 用時(shí)

    2024年02月09日
    瀏覽(23)
  • 【Sql Server】通過Sql語(yǔ)句批量處理數(shù)據(jù),使用變量且遍歷數(shù)據(jù)進(jìn)行邏輯處理

    【Sql Server】通過Sql語(yǔ)句批量處理數(shù)據(jù),使用變量且遍歷數(shù)據(jù)進(jìn)行邏輯處理

    歡迎來到《小5講堂》,大家好,我是全棧小5。 這是《Sql Server》系列文章,每篇文章將以博主理解的角度展開講解, 特別是針對(duì)知識(shí)點(diǎn)的概念進(jìn)行敘說,大部分文章將會(huì)對(duì)這些概念進(jìn)行實(shí)際例子驗(yàn)證,以此達(dá)到加深對(duì)知識(shí)點(diǎn)的理解和掌握。 溫馨提示:博主能力有限,理解水

    2024年03月15日
    瀏覽(21)
  • Java使用線程池批量處理數(shù)據(jù)操作

    Java使用線程池批量處理數(shù)據(jù)操作

    疑問思路: 1.如何保證數(shù)據(jù)按順序批量處理 2.如何保證數(shù)據(jù)全部處理完統(tǒng)一返回 3.如何保證是多任務(wù)異步操作 4.如何提高運(yùn)行效率,減少運(yùn)行時(shí)間 1.使用ArrayList 插入數(shù)據(jù)有序且可重復(fù) 2.CountDownLatch / Future / CompletableFuture 3.多線程 4.線程池創(chuàng)建多線程 具體流程: 獲取需要進(jìn)行批

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包