introduksjon til python skriping i arc gis plattformen

22
Introduksjon til Python- skriping i ArcGIS plattformen

Upload: geodata-as

Post on 06-May-2015

703 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Introduksjon til python skriping i arc gis plattformen

Introduksjon til Python-skriping i ArcGIS plattformen

Page 2: Introduksjon til python skriping i arc gis 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

Page 3: Introduksjon til python skriping i arc gis plattformen

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

Page 4: Introduksjon til python skriping i arc gis plattformen

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”

Page 5: Introduksjon til python skriping i arc gis plattformen

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

Page 6: Introduksjon til python skriping i arc gis plattformen

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

Page 7: Introduksjon til python skriping i arc gis plattformen

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)

Page 8: Introduksjon til python skriping i arc gis plattformen

Pythonvinduet i ArcGIS

• Interaktivt Pythonvindu som en del av ArcGIS

– Aksess til ArcPy, all python-funksjonalitet

• Effektiv for å eksperimentere med og lære pythonskripting

Page 9: Introduksjon til python skriping i arc gis plattformen

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” )

Page 10: Introduksjon til python skriping i arc gis plattformen

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”)

Page 11: Introduksjon til python skriping i arc gis plattformen

Miljøinstillinger

Aksessert fra arcpy.env

Vanlige miljøinstillinger:Workspace, coordinate system, extent

Eksempler:arcpy.env.workspacearcpy.env.outputCoordinateSystemarcpy.env.extent

Page 12: Introduksjon til python skriping i arc gis plattformen

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

Page 13: Introduksjon til python skriping i arc gis plattformen

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()

Page 14: Introduksjon til python skriping i arc gis plattformen

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

Page 15: Introduksjon til python skriping i arc gis plattformen

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)

Page 16: Introduksjon til python skriping i arc gis plattformen

ArcPy funksjoner

messages

Page 17: Introduksjon til python skriping i arc gis plattformen

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

Page 18: Introduksjon til python skriping i arc gis plattformen

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

Page 19: Introduksjon til python skriping i arc gis plattformen

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

Page 20: Introduksjon til python skriping i arc gis plattformen

DEMO

Page 21: Introduksjon til python skriping i arc gis plattformen

Veien videre…

• Det finnes masse pythondokumentasjon på nettet

• Head First serien er veldig intuitiv/pedagogisk

Page 22: Introduksjon til python skriping i arc gis plattformen

Kurs hos Geodata

• Geoprosessering med skripting i Python

– 23 - 25 februar

– 9 - 11 mai

[email protected]