Vairāk

Partijas izvilkums pēc maskas, bet pielāgojiet atsevišķus izvades nosaukumus


Es vēlos iegūt masku (to pašu masku katru reizi) uz aptuveni 500 rastra, bet es vēlos vienkārši pievienot katra ievades rastra nosaukumu. Tātad, ja rastra nosaukums ir Landsat_010182, es tikai vēlos tam pievienot _klipu, lai es joprojām zinātu, ko katrs attēls satur. Vai tas ir kaut kas, kas man būtu jādara, izmantojot python, vai ir kāds cits veids, kā to izdarīt?

Rediģēt:

Šis ir precīzs kods, kuru mēģinu:

importēt arcpy importēt glob importēt os arcpy.CheckOutExtension ('Spatial') "" "mape, kurā ir tikai ievades rasters un nekas cits" "" indir = r'D:  Sheyenne  Atmospherically Corrected Landsat  Practice_bands '"" "absolūtais ceļš uz masku slānis "" "maska ​​= r'D:  Sheyenne  sheyenne_area_poly.shp '" "" izveidot emply sarakstu, lai turētu ceļus uz ievades rasters "" "inrasters = []" "" aizpildīt saraksta inrasters ar visiem ceļiem uz .tif in direktorijs "" "os.chdir (indir) for r glob.glob ('*. tif'): inrasters.append (r) # #" "" iterate over all input .tif from list inrasters "" "for inraster in inrasters: # # "" "izveidojiet unikālu nosaukumu katram izvades rastram" "" outraster = inraster.replace ('. tif', '_ clip.tif') # "" "Apgrieziet katru rasteri ar tā unikālo nosaukumu kā izvadi" " arcpy.sa.ExtractByMask (inraster, maska)

bet tas atgriež kļūdu:

ExecuteError: neizdevās izpildīt. Parametri nav derīgi. KĻŪDA 000865: ievades rastrs: LT50290282011268PAC01_sr_band1.tif nepastāv. Neizdevās izpildīt (ExtractByMask).

LT50290282011268PAC01_sr_band1.tif ir pirmais failsinrasterssarakstu

Rediģēt:

Viss darbojas, kā es gaidīju, līdz cilpa sākas. Kad es drukājuinrasterstie visi ir uzskaitīti. Kad es drukājuārštatstiek izdrukāts tikai otrais rastrs manā sarakstā. Tātad kaut kur cilpā ir, kad lietas sabojājas. Turklāt es nekad neizmantoju mainīgoārštatskas var būt daļa no problēmas.

Rediģēt:

Man izdevās strādāt, izmantojot šo kodu:

importēt arcpy arcpy.env.workspace = 'D:  Sheyenne  Practice_bands' arcpy.CheckOutExtension ('Spatial') "" "absolūtais ceļš uz maskas slāni" "" mask = r'D:  Sheyenne  sheyenne_area_poly.shp '" "" Loop caur rasters, pievienot nosaukumus un savefiles "" "rasters = arcpy.ListRasters () rastram rastros: outraster = raster.replace ('. Tif', '_ clip.tif') arcpy.gp.ExtractByMask_sa (raster, maska, ārštats)

Ja neizmantojat python, varat kopēt lauku no pakešu ģeneratora un ielīmēt to programmā Excel. Pēc tam to var kopēt atpakaļ partijā no Excel.

Es ļoti ieteiktu to izmantot kā iespēju izmēģināt Python, šī ir ideāla iesācēju lietojumprogramma. Kaut kas līdzīgs šim būtu jādara:

import glob import os "" "mape, kurā ir tikai jūsu ievades rasters un nekas cits" "" indir = 'c:/GIS/input_rasters/' "" "absolūtais ceļš uz jūsu maskas slāni" "" mask = 'c:/GIS/ clip_mask.shp '"" "izveidot emply sarakstu, lai turētu ceļus uz ievades rasters" "" inrasters = [] "" "aizpildīt sarakstu inrasters ar visiem ceļiem uz .tif direktorijā" "" os.chdir (indir) for r in glob.glob ('*. tif'): inrasters.append (r) "" "iterate over all input .tif from list inrasters" "" for inraster in inrasters: "" "izveidot unikālu nosaukumu katram izejas rastram" " "outraster = inraster.replace ('. tif', '_ clip.tif')" "" Izgrieziet katru rasteri ar tā unikālo nosaukumu kā izvadi "" "r = arcpy.sa.ExtractByMask (inraster, mask) r.save (outraster )

Nav nepieciešams aplūkot to raseru sarakstu, kas ģenerēti noglob.glob ()un pievienojiet tos jaunam sarakstam. Es izvēlētos šādu pieeju:

  1. Definējiet ievades un izvades darbvietas
  2. Uzskaitiet visus, kas izmantoglob
  3. Apskatiet sarakstu
  4. Definējiet izvades nosaukumu un ceļu
  5. Veikt ekstraktu ar masku
  6. Saglabājiet ekstraktu ar masku

importēt arcpy, glob, os arcpy.  Practice_bands  out ' # Ņemiet vērā jauno izvades darbvietas mapi # absolūtais ceļš uz maska ​​slāņa masku = r'D:  Sheyenne  sheyenne_area_poly.shp' # Ģenerējiet visu .tif failu sarakstu (ņemiet vērā, ka ir uzskaitīti visi ceļi) rasters = glob .glob (os.path.join (inws, "*.tif")) # iterate pār visu ievadi .tif no rastra saraksta ras in rasters: # Definējiet izvades ceļu un nosaukumu outname = os.path.join (outws, os.path.basename (ras) .split (".") [0] + "_clp.tif") # Veiciet EBM out_extract = arcpy.sa.ExtractByMask (ras, maska) # Saglabājiet izeju out_extract.save (outname) )


Skatīties video: Kas ir tie melnie, kustīgie pavedieni, ko ļaudis atklājuši sejas maskās? (Septembris 2021).