Introduksjon til python skriping i arc gis plattformen
Upcoming SlideShare
Loading in...5
×
 

Introduksjon til python skriping i arc gis plattformen

on

  • 911 views

 

Statistics

Views

Total Views
911
Views on SlideShare
911
Embed Views
0

Actions

Likes
0
Downloads
19
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introduksjon til python skriping i arc gis plattformen Introduksjon til python skriping i arc gis plattformen Presentation Transcript

  • Introduksjontil Python-skriping iArcGISplattformen
  • 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 # # Jeg er en kommentar og vil ikke bli kjørt import arcpy• 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)
  • 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:DataVegnett.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øinstillingerAksessert fra arcpy.envVanlige miljøinstillinger: Workspace, coordinate system, extentEksempler: arcpy.env.workspace arcpy.env.outputCoordinateSystem arcpy.env.extent
  • Beskjeder fra geoprosesseringVerktøy returnerer tre typer beskjeder: Informative meldinger Advarsler Feilmeldingerarcpy.GetMessages() GetMessages(): Alle beskjeder GetMessages(0): Kun informative beskjeder GetMessages(1): Kun advarsler GetMessages(2): Kun feilmeldinger error messages
  • Arcpy.getMessages()# Eksekvere geoprosesseringsverktøyetarcpy.Buffer_analysis(“roads.shp", “roads_buffer.shp", “50 Meters”)# Skrive ut alle beskjedene som resultat av verkøyetprint 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…
  • Feilhåndteringmessagesfeiler det? Hvorfor • Feil bruk av verktøy • Skrivefeil • Syntax-feil Python feilhåndtering Try…Except… try: # Gjør noe except: # En feil har skjedd, gjør noe annet
  • Try, except# Begynn med try messagestry: arcpy.Buffer_analysis(“roads.shp", “roads_buffer.shp", “50 Meters”)# Hvis en feil intreffer hopper den til exceptexcept: # Skriv til skjerm at buffer feilet og selve feilmeldingen print "Buffer feilet” print arcpy.GetMessages(2)
  • ArcPy funksjonermessages
  • ArcPy funksjonermessages • 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 workspace arcpy.env.workspace = “C:/Data/FileGDB.gdb/FDs" # Hente liste over alle flate-featureklassene fcList = arcpy.ListFeatureClasses("*", "polygon") # Skriv ut navnet på alle featureklassene som ble 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 kurs@geodata.no