Befinner du dig ofta i situationen där du skulle vilja köra flera olika iterationer i samma modell i ModelBuilder? Har du lika många gånger som jag bara bett en systemutvecklare skriva ett script och importerat in det i modellen i stället? Vill du stå på egna ben, utan att lära dig massa Python? Häng med! Nu ska vi skapa Pythonskript med ModelBuilder.
Innan vi kastar oss in i all action är det bra om jag bara kort förklarar vad ModelBuilder är och vad det är bra för.
Det här är ModelBuilder
ModelBuilder är ett visuellt programmeringsspråk för att skapa egna modeller av olika arbetsflöden. Modellerna automatiserar och dokumenterar dina geografiska analyser och din dataredigering.
Med dessa modeller kan du i ArcGIS Pro till exempel:
- Iterativt hantera varje geoobjektklass, raster, fil eller tabell i en arbetskatalog (workspace).
- Omvandla din modell till ett Pythonscript som kan delas och användas i Pythonscript och i andra modeller.
Det är den senare punkten jag ger mig på idag.

ModelBuilder är ett visuellt sätt att skapa modeller för analys och andra GIS-uppgifter.
Nyckeln till att skapa Pythonscript med ModelBuilder
Mitt ModelBuilder-hack kräver alltså väldigt begränsad Pythonkompetens, och bara precis sådär lagom med klurighet.
Nyckel till framgången är att nyttja funktionen ”Exportera till Pythonscript” från modellen.

Exportera din modell i ModelBuilder till Pythonkod.
Pythonscript för att tömma geodatabaser
I mitt fall började det med att jag ville bygga en modell att implementera i ett Tasks-flöde som skulle tömma ett par olika geodatabaser. Problemet blev ju dock att ModelBuilder bara har stöd för att iterera igenom en arbetskatalog i taget, och Tasksflödet har bara stöd för att bädda in en modell i taget.
Första tanken som slår en GIS:are som är svag på Pythonhållet är att Python skulle lösa mina problem, men jag hade helt enkelt inte kompetensen att skriva ett script som itererar igenom flera geodatabaser och sedan raderar alla geoobjektsklasser. Men! Jag kände mig tillräckligt modig den dagen för att åtminstone sätta upp en iteration i ModelBuilder och sedan exportera ut det bakomliggande scriptet som en Pythonfil.
ModelBuilder levererar fungerande Pythonscript
Tro mig när jag skriver att jag bokstavligen utropade av glädje när jag insåg att det fungerade. För mig löste det sig genom att jag satte upp ett sådant här script per geodatabas jag ville tömma, la till alla scripten i en modell och bäddade till sist in modellen i min Task.
Det är inte det snyggaste jag gjort, men det fungerar – och det viktigaste: jag kan själv!
