Vairāk

Vai atlasāt visus direktorijā esošos failus apvienošanai QGIS apstrādē?

Vai atlasāt visus direktorijā esošos failus apvienošanai QGIS apstrādē?


Es rakstu vispārēju skriptu, kas ietver formas failu rakstīšanu direktorijā, kas pēc tam tiek apvienoti. Pēc failu izrakstīšanas uz Izeja mapi, es mēģinu iegūt sāga: sapludināšanas slāņi algoritmu, lai apvienotu visus failus Izeja mape. Esmu izmantojis modeļu veidotāju, un, lai gan tas zināmā mērā ir noderīgs, es uzskatu, ka tas tiek izmantots īpašiem mērķiem, turpretī es mēģinu izveidot skriptu vispārīgiem mērķiem.

Kods:

## Tests = nosaukums ## Select_folder = mape ## Rezultāts = izvades vektora importēšana os importēšanas glob ceļš_1 = Select_folder path = path_1 os.chdir (ceļš) def funkcija (): output = glob.glob (path_1 + './*. shp ') x = 0, kamēr izvade [x]: fname glob.glob ("*. shp"): outputs_1 = processing.runandload ("qgis: fieldcalculator", output [x],' Number ', 1, 10 , 0, True, 1, "C:  Users  Me  Desktop  Output " + fname) multiple_0 = glob.glob ("*. Shp") x = x + 1, ja x + 1> len (izvade) : processing.runalg ("sāga: mergeshapeslayers", output [0], ";". join (multiple_0), Result) break else: turpināt, ja path_1: function () else: pass

Jūs varat vienkāršot savu skriptu, neizmantojotkamēr…unx,x+1: vienkāršam Python sarakstam vislabāk to izmantotpriekšvai saraksta izpratne:

## Tests = nosaukums ## Izvēlēties_mape = mape ## Rezultāts = izvades vektora importēšana os importēšanas glob #mapes ceļš Rezultāta formas faila ceļš_res = os.path.dirname (Rezultāts) #dodieties uz Izvēlēties_mapi os.chdir (Izvēlēties_mapi) #kopēt formas failus (jums nav jāielādē formas faili, tāpēc izmantojiet runalg) fname glob.glob ("*. shp"): outputs_1 = processing.runalg ("qgis: fieldcalculator", fname, 'Number', 1, 10 , 0, True, 1, path_res + "/" + fname) # formufailu ceļi mapē Rezultāti ar saraksta izpratnes izvadi = [path_res + "/" + shp for shp glob.glob ("*. Shp") ] # sapludiniet figūras failus processing.runalg ("sāga: mergeshapeslayers", izeja [0], ";". pievienoties (izvade), rezultāts)

Daži skaidrojumi:

# Results shapefile mapes ceļš # = path_res print os.path.dirname ("/Users/Shared/test.shp")/Users/Shared # saraksta izpratne print [shp for shp in glob.glob ("*. shp" )] ['shape1.shp', 'shape2.shp',…, 'shapen.shp'] print [path_res + "/" + shp shp shp glob.glob ("*. shp")] ['/Lietotāji /Shared/shape1.shp ',' /Users/Shared/shape2.shp',…, '/Users/Shared/shapen.shp']

vai labāk aros.path.join(universāls, Windows, Linux, Mac OS X):

drukāt [os.path.join (path_res, shp) shp glob.glob ("*. shp")] print [os.path.join (path_res, shp) shp glob.glob ("*. shp" )] [0] # = izvade [0]/Lietotāji/koplietoti/forma1

Atradu atbildi, pateicoties @gene, kura komentāri man palīdzēja koncentrēties uz pareizo jomu. Vienkārši vajadzēja vienkārši izmantot glob sāga: sapludināšanas slāņi izsaukšanas funkcija:

multiple_0 = glob.glob ("*. shp")

Pievienoja to iepriekš minētajam kodam, kas tagad apvieno visus mapē esošos failus.


Skatīties video: add Google Map Terrain Satellite Layer in QGIS