introduksjon til python skriping i arc gis plattformen
TRANSCRIPT
Introduksjon til Python-skriping i ArcGIS plattformen
Hvorfor pythonskripting?
• Python: et gratis, plattformuavhenging og lettlært språk
• Brukes for å eksekvere ett eller koblinger av flere gp-verktøy
• Utvikle, eksekvere og dele geoprosesserings arbeidsflyter
• Automatisering
Intro python
• Hvor skriver jeg pythonkode?
– PythonWin, Eclipse, Wing, Idle, Pythonvinduet i ArcGIS
• Hvilke kodelinjer kjøres?
– Kommenter ut ved å bruke #
• Hva er variabler?
– Et navn som lagrer en verdi; tildeles ved å bruke =
variabel1 = “C:/Data/roads.shp”
variabel2 = 50
# Variabler fungerer som erstattere for råverdier
arcpy.Buffer_analysis(variabel1, “resultat.shp” , variabel2)
# Jeg er en kommentar og vil ikke bli kjørtimport arcpy
Intro python
• Python innehar logikk for å teste betingelser– if, else spørring
– Kolon på slutten av hver betingelse
– Indentering styrer hva som blir eksekvert
– == tester likhet; andre tegn >, <, !=
var = “a”
if var == “a” :
# Indentering etter kolon
print “variabelen er a”
else :
print “variabelen er ikke a”
Intro python
• Teknikker for iterering eller looping
– “While”-looper, telle-looper, liste-looper
x = 1
while x < 5:
print x
x = x + 1
for num in range( 1, 5):
print num
x = [ 1, 2, 3, 4]
for num in x:
print num
Intro python
• Bokstav-sensitive– Variabler, funksjoner, osv. er bokstav-sensitive
– Vanlig feil: name ‘X’ is not defined
• For stier, bruk skråstrek som deler“C:/Data/Vegnett.shp” (evt r”C:\Data\Vegnett.shp”)
• Funksjoner & Moduler– Funksjon: en definert funksjonalitet som utfører en spesifikk oppgave
– Modul: en Python-fil hvor funksjoner bor; importert
– math.sqrt(100) … 10.0
ArcPy
• Aksesseringspunktet til alle geoprosesseringsverktøy
• Et bibliotek av funksjoner, klasser og moduler, hvor alt er
relatert til skripting i ArcGIS– Funksjoner som fremmer arbeidsflyt i geoprosessering
(ListFeatureClasses, Describe, SearchCursor )
– Klasser som kan bli brukt til å lage komplekse objekter
(SpatialReference og FieldMap objekter)
– Moduler som tilføyer tilleggsfunksjonalitet (Mapping og SpatialAnalyst
moduler)
• Bygger på arcgisscripting modulen (pre-10.0)
Pythonvinduet i ArcGIS
• Interaktivt Pythonvindu som en del av ArcGIS
– Aksess til ArcPy, all python-funksjonalitet
• Effektiv for å eksperimentere med og lære pythonskripting
Eksekvere GP-verktøy med python
• ArcPy må være importert
• Syntax: arcpy.verktøynavn_toolboxalias()
• Legge til input- og output-parametere
# Importere ArcPy
import arcpy
# Sette workspace instillingen
arcpy.env.workspace = ”C:/Data”
# Eksekverer geoprosesseringsverktøy
arcpy.Buffer_analysis( “vegnett.shp" , “vegnett_buffer.shp" , “50 Meters” )
Finne rett syntaks• Resultatvinduet, ‘Copy as Python Snippet’
• Eksportere modell til pythonskript
• Trekke verktøy inn i pythonvinduet
• Dokumentasjon for verktøyene
• arcpy.Usage(“Buffer_analysis”)
Miljøinstillinger
Aksessert fra arcpy.env
Vanlige miljøinstillinger:Workspace, coordinate system, extent
Eksempler:arcpy.env.workspacearcpy.env.outputCoordinateSystemarcpy.env.extent
Beskjeder fra geoprosessering
Verktøy returnerer tre typer beskjeder:Informative meldingerAdvarslerFeilmeldinger
arcpy.GetMessages()GetMessages(): Alle beskjederGetMessages(0): Kun informative beskjederGetMessages(1): Kun advarslerGetMessages(2): Kun feilmeldinger error messages
Arcpy.getMessages()
Executing: Buffer roads.shp roads_buffer.shp ’50 Meters’ Start Time: Tue July 13 13:52:40 2010Executing (Buffer) successfully.End Time: Tue July 13 13:52:45 2010(Elapsed Time: 5.00…
# Eksekvere geoprosesseringsverktøyet
arcpy.Buffer_analysis( “roads.shp" , “roads_buffer.shp" , “50 Meters” )
# Skrive ut alle beskjedene som resultat av verkøyet
print arcpy.GetMessages()
Feilhåndtering
messagesHvorfor feiler det?• Feil bruk av verktøy• Skrivefeil• Syntax-feil
Python feilhåndteringTry…Except…
try:# Gjør noe
except: # En feil har skjedd, gjør noe
annet
Try, except
messages# Begynn med try
try:
arcpy.Buffer_analysis( “roads.shp" , “roads_buffer.shp" , “50 Meters” )
# Hvis en feil intreffer hopper den til except
except:
# Skriv til skjerm at buffer feilet og selvefeilmeldingen
print "Buffer feilet”
print arcpy.GetMessages(2)
ArcPy funksjoner
messages
ArcPy funksjoner
messages• Utføre hendige oppgaver
– Skrive ut GP-meldinger (GetMessages)
– Liste opp data for batch-processering
(ListFeatureClasses, ListFields; 12 liste-
funksjoner totalt)
– Hente egenskaper på datasett
(Describe)
• Viktig for automatisering
Batch prosessering
• Repetere geoprosesseringsrutine flere
ganger for automatisering• Eksempel: Kjøre “Clip” for hver feature-klasse i en
satt workspace mot en satt grense.
• Liste-funksjoner blir brukt i python for å
kjøre batch-prosessering
ArcPy funksjon: ListFeatureClasses
# Setter workspacearcpy.env.workspace = “C:/Data/FileGDB.gdb/FDs"
# Hente liste over alle flate-featureklassenefcList = arcpy.ListFeatureClasses( "*" ,
"polygon" )
# Skriv ut navnet på alle featureklassene somble satt i lista
for fc in fcList:print fc
DEMO
Veien videre…
• Det finnes masse pythondokumentasjon på nettet
• Head First serien er veldig intuitiv/pedagogisk
Kurs hos Geodata
• Geoprosessering med skripting i Python
– 23 - 25 februar
– 9 - 11 mai