Rumah > Artikel > pembangunan bahagian belakang > Cara Python ArcPy melaksanakan penyambungan kelompok imej raster siri jangka panjang
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.
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.
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!