Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Python ArcPy melaksanakan penyambungan kelompok imej raster siri jangka panjang

Cara Python ArcPy melaksanakan penyambungan kelompok imej raster siri jangka panjang

PHPz
PHPzke hadapan
2023-04-28 20:16:051277semak imbas

Pertama, mari kita jelaskan keperluan khusus artikel ini. Terdapat folder yang menyimpan sejumlah besar imej penderiaan jauh dalam format .tif Nama fail bagi setiap imej penderiaan jauh mengandungi masa pengimejan imej, seperti yang ditunjukkan dalam rajah di bawah.

Cara Python ArcPy melaksanakan penyambungan kelompok imej raster siri jangka panjang

Kami berharap dapat menggabungkan imej penderiaan jauh yang diimej pada hari yang sama - contohnya, dalam gambar di atas, terdapat imej penderiaan jauh yang diimej pada hari 2001 tahun 185 10 imej, setiap imej adalah imej yang diambil di lokasi spatial yang berbeza pada hari ini; pada masa yang sama, terdapat 2001 imej penderiaan jauh yang diimej pada 193 hari 10 tahun. Kami berharap untuk mula-mula mencantumkan 185 imej penderiaan jauh yang diambil pada hari 10, dan kemudian menjahit imej penderiaan jauh 193 yang diambil pada hari 10 dan seterusnya. Apabila bilangan keseluruhan imej penderiaan jauh adalah kecil, kami mungkin boleh mencantumnya secara manual satu demi satu tetapi apabila bilangan imej adalah besar, kami perlu menggunakan kod untuk mencapainya.

Selepas menjelaskan keperluan, kami boleh memulakan operasi tertentu. Pertama, kod yang diperlukan untuk artikel ini adalah seperti berikut.

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 15 13:21:55 2022

@author: fkxxgis
"""

import os
import arcpy

tif_file_path="E:/LST/Data/NDVI/02_TIFF/"
out_file_path="E:/LST/Data/NDVI/03_Mosaic/"
arcpy.env.workspace=tif_file_path

tif_file_name=arcpy.ListRasters("*","tif")
tif_file_date=tif_file_name[0][1:8]
one_day_tif_list=[]

tif_file_example_path=tif_file_path+tif_file_name[0]
cell_size_x=arcpy.GetRasterProperties_management(tif_file_example_path,"CELLSIZEX")
cell_size=cell_size_x.getOutput(0)
value_type=arcpy.GetRasterProperties_management(tif_file_example_path,"VALUETYPE")
describe=arcpy.Describe(tif_file_example_path)
spatial_reference=describe.spatialReference

for tif_file in tif_file_name:
    if tif_file[1:8]==tif_file_date:
        one_day_tif_list.append(tif_file)
        tif_file_temp=tif_file
        if tif_file==tif_file_name[len(tif_file_name)-1]:
            out_file_name=tif_file[1:8]+".tif"
            arcpy.CreateRasterDataset_management(out_file_path,out_file_name,
                                                 cell_size,"16_BIT_SIGNED",spatial_reference,"1")
            out_file=out_file_path+out_file_name
            for tif_file_new in one_day_tif_list:
                arcpy.Mosaic_management([tif_file_path+tif_file_new],out_file)
                
    else:
        out_file_name=tif_file_temp[1:8]+".tif"
        arcpy.CreateRasterDataset_management(out_file_path,out_file_name,
                                             cell_size,"16_BIT_SIGNED",spatial_reference,"1")
        out_file=out_file_path+out_file_name
        for tif_file_new in one_day_tif_list:
            arcpy.Mosaic_management([tif_file_path+tif_file_new],out_file)
        one_day_tif_list=[]
        one_day_tif_list.append(tif_file)
        tif_file_date=tif_file[1:8]

Antaranya, tif_file_path ialah laluan menyimpan imej penderiaan jauh asal sebelum penyambungan, dan out_file_path ialah laluan penjimatan imej penderiaan jauh kami yang baru dijana selepas penyambungan.

Di sini, kita perlu mengisih fail terlebih dahulu di bawah laluan tif_file_path dalam pengurus sumber dengan "nama" kemudian, gunakan fungsi arcpy.ListRasters() , dapatkan semua imej asal fail dalam format .tif di bawah laluan, dan memintas bahagian nama fail fail pertama untuk mendapatkan masa pengimejannya seterusnya, bersedia untuk mencipta fail raster baharu, bahagian ini Makna kod telah disebut dalam artikel Python arcpy mencipta raster dan menyambung raster dalam kelompok yang disebut pada permulaan artikel ini, jadi saya tidak akan menerangkan butiran di sini.

Seterusnya, rentas semua fail imej format tif_file_path di bawah laluan .tif. Antaranya, kami menggunakan pernyataan pertimbangan mudah untuk menentukan sama ada imej penderiaan jauh pada masa pengimejan tertentu telah dibaca - jika ia telah dibaca, sebagai contoh, jika 10 imej penderiaan jauh yang diimej pada hari 185 semuanya telah dilalui Jika ia telah berlalu, maka sepuluh imej penderiaan jauh akan disambungkan jika bacaan belum selesai, contohnya, jika 10 imej penderiaan jauh yang diimej pada hari 185 hanya melintasi ke yang ke-8, maka penyambungan itu telah berlalu. tidak akan dilakukan dan terus ke Traverse seterusnya.

Saya percaya anda juga telah melihat di sini mengapa kami perlu mengisih fail dalam folder mengikut "nama" pada peringkat awal - untuk memastikan semua fail pada masa yang sama masa pengimejan Imej penderiaan jauh semuanya disusun bersama selagi masa pengimejan baharu ditemui semasa traversal, program akan mengetahui bahawa semua imej masa pengimejan sebelumnya. telah dilalui. Semua imej raster daripada masa pengimejan terakhir boleh dicantum bersama.

Akhir sekali, gunakan penghakiman tif_file==tif_file_name[len(tif_file_name)-1] untuk mengesahkan sama ada fail imej terakhir dalam folder telah dilalui. Jika ya, anda perlu mencantumkan semua imej masa pengimejan semasa dan melengkapkan jalankan kod.

Jalankan kod dalam IDLE (Python GUI). Selepas kod berjalan, mari kita lihat folder hasil. Ia boleh dilihat bahawa imej telah disambung secara berasingan mengikut masa pengimejan.

Cara Python ArcPy melaksanakan penyambungan kelompok imej raster siri jangka panjang

Atas ialah kandungan terperinci Cara Python ArcPy melaksanakan penyambungan kelompok imej raster siri jangka panjang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam