Seite 1 von 1

neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 17:42
von Iorlas
Hallo, ich habe ein Problem:

Ausgangslage ist diese:
# -------------------------------------------------------------
# Dieses Script erzeugt einen 300 Meter Buffer um die
# die Fluesse Salzburgs und verbindet die gebufferten Einzelteile ("Dissolve").
# Erweitern Sie das Script, so dass 3 Buffer (50, 200 und 350 Meter) in einem
# Durchgang erzeugt werden
# -------------------------------------------------------------

# Import COM Dispatch Module
##import win32com.client
# Create the Geoprocessor Object
##gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")

#ALTERNATIVE ab ArcGIS 9.2:
import arcgisscripting
# Create the Geoprocessor Object
gp = arcgisscripting.create()

#ALTERNATIVE ab ArcGIS 9.3:
##import arcgisscripting
# Create the Geoprocessor Object
##gp = arcgisscripting.create(9.3)

# set licence
gp.SetProduct("ArcGis")

gp.OverwriteOutput = 1
gp.Workspace = "E:\\Uni Gis\\M6\\M6\\Salzburg.mdb"

# Local variables...
sbgFluesse = "sbg_fluesse"
Buff_Fluesse = "Buff_300"

# Process: Buffer...
gp.Buffer_analysis (sbgFluesse, Buff_Fluesse, "300 Meters", "FULL", "ROUND", "ALL


Aufgabe ist es nun, das Script so zu modifizieren, dass in einem Durchgang drei verschiedene Buffergrößen berechnet werden: 50, 200 und 350 Meter. Diese sollen auch in drei verschiedenen Datensätzen ausgegeben werden.
Lösungsansatz:
Versuchen Sie eine Schleife zu programmieren, um die drei Rechenoperationen mit unterschiedlichen Parametern ablaufen zu lassen. Hier bietet sich der list loop
an.
Versuchen Sie die Namen der Datensätze in die das jeweilige Ergebnis geschrieben wird innerhalb der Schleife automatisch zu generieren (Beachten Sie auch: Wenn Sie den Namen des zu berechnende Datensatzes außerhalb der Schleife definieren, wird möglicherweise dreimal derselbe Datensatz überschrieben!).
Versuchen Sie das Script möglichst benutzerfreundlich zu gestalten, in dem Sie den Scriptzweck, Datum der Programmierung, sowie den Autor / die Autorin im Header angeben. Außerdem sollten Sie das Script mit Kommentaren versehen und, wenn möglich, auch den Benutzer während der Ausführung im interaktiven Fenster über die abgearbeiteten Berechnungsschritte informieren.
Geben Sie das modifizierte Script als Lösung ab. Falls Ihr Script (wider Erwarten) auch nach intensiver Fehlersuche nicht funktioniert, geben Sie es trotzdem mit den entsprechenden (auskommentierten) Hinweisen zu den auftretenden Fehlern ab.
Zusatzaufgabe: Versuchen Sie, das Präfix für die automatische Namensgebung der Ausgabedatensätze mittels der built-in-function raw_input vom Benutzer eingeben zu lassen!


ich hab leider keinen plan... :(

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 17:51
von /me
Iorlas hat geschrieben:ich hab leider keinen plan... :(
Wenn du dich gar nicht auskennst, dann solltest du erst einmal das Python-Tutorial durcharbeiten. Danach kennst du dann zumindest die grundlegenden Sachen.

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:06
von Hyperion
Außerdem solltest Du Dir einmal die Forenregeln ansehen, speziell den angepinnten Thread, der sich mit dem Thema Hausaufgaben befasst.

Außerdem ist der Quellcode so schwer lesbar, da es bei Python u.a. auch auf die korrekte Einrückung ankommt. Das Forum bietet deswegen spezielle Code bzw auch ein spezielles Python-Tag, mit dem man Quellcode hübsch formatiert in einem Posting wiedergeben kann. Augenscheinlich hast Du Dir hier vor Deinem Posting keine anderen Beiträge angeguckt? ;-)

Der Code sieht an einigen Stellen übrigens furchtbar aus - sollte das wirklich eine Vorgabe sein, so sollte der Lehrende hier auch mal vorbeigucken und ein wenig mitlesen... :twisted:

Auch der Aufgabentext als solcher hat einige Highlights zu bieten:
Hier bietet sich der list loop an.
Bitte was? Diese Nomenklatur habe ich so noch nicht gesehen...

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:08
von Iorlas
ja genau...
und mit so nem script soll man hier dann arbeiten... :evil: :evil:

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:13
von Hyperion
Iorlas hat geschrieben:ja genau...
und mit so nem script soll man hier dann arbeiten... :evil: :evil:
Da Du mit der Aufgabe mit Deinem bisherigen Kenntnisstand überfordert bist, spielt das für Dich keine große Rolle. Allerdings sollte man auch Anfängern nicht "schmutzige" Dinge vorsetzen, selbst wenn diese die gar nicht erkennen. Im übrigen ist das Script nicht mal 100% kopiert worden von Dir ;-)

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:15
von Iorlas
Nein das Script nich. aber die aufgabe.
und wenn man sich mit den Begriffen nicht auskennt, sucht man auch nach genau diesen Begriffen (hier list loop) - da vertraut man ja auf den aufgabentext :wink:

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:29
von snafu
Vielleicht ja:

Code: Alles auswählen

while True:
    list('loop')
:o

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:33
von Hyperion
Oder so:

Code: Alles auswählen

# list_loop ist eine Liste und eine local variable
list_loop = [50, 200, 350]
for distance in list_loop:
    pass
:mrgreen:

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:34
von BlackJack
Ich denke mal es war einfach eine Schleife über die Elemente einer Liste gemeint.

Edit: Mist, Hyperion war schneller…

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:38
von Hyperion
BlackJack hat geschrieben:Ich denke mal es war einfach eine Schleife über die Elemente einer Liste gemeint.
Ok, wir kennen den Hintergrund der Veranstaltung nicht. Ist es ein Programmierkurs und das Geodatenbeispiel nur ein Gimmik, oder ist es ein Geodatenverarbeitungskurs, bei dem das Programmieren nicht im Vordergrund steht und nur Mittel zum Zweck ist. Dennoch zeugt es von relativ wenig Erfahrung / Sorgfalt des Aufgabenstellers - sofern das 1:1 wiedergeben wurde und nicht vom OP interpoliert.
BlackJack hat geschrieben: Edit: Mist, Hyperion war schneller…
Nuja, ein "verspielter" Lösungshinweis ist ja mal erlaubt denke ich ;-)

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:46
von Käptn Haddock
Iorlas hat geschrieben: # Process: Buffer...
gp.Buffer_analysis (sbgFluesse, Buff_Fluesse, "300 Meters", "FULL", "ROUND", "ALL
Wie schön, ein UniGISler, aus Solidarität helf ich dir mal bei den Hausaufgaben ;)

Ich denke du solltest die zitierte Zeile (nach Vervollständigung;)) in einer Schleife laufen lassen z.B.:

Code: Alles auswählen

for buffer in [50, 200, 350]:
    gp.Buffer_analysis (sbgFluesse, buffer, "%s Meters" %(buffer), "FULL", "ROUND", "ALL...
Die genaue Syntax und die Parameter mußt du dir in der ArcGIS-Oberfläche in der Hilfe oder der Commandline besorgen, ich hab grad leider keins hier rumliegen. Falls ich morgen ein bisschen Zeit hab, schreib ich mehr ;)

Grüssle Uwe

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:49
von Iorlas
erwischt ;)

ja das wäre super...

hast Du den Kurs auch mal gemacht?!

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:51
von Käptn Haddock
Iorlas hat geschrieben:erwischt ;)

ja das wäre super...

hast Du den Kurs auch mal gemacht?!
Jo, 2000-2002. Da durfte man sich noch über VB6 ärgern ;)


grüssle Uwe

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 18:57
von Iorlas
ich mach den xpress kurs... und ärger ich über phyton und vba ;)

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 19:03
von Dav1d
Iorlas hat geschrieben:ich mach den xpress kurs... und ärger ich über phyton und vba ;)
:shock:

"phyton" :shock:

ärgern :shock:


Du machst da was falsch! :twisted:

Re: neuling braucht hilfe

Verfasst: Mittwoch 6. Oktober 2010, 19:06
von Iorlas
Dav1d hat geschrieben:
Iorlas hat geschrieben:ich mach den xpress kurs... und ärger ich über phyton und vba ;)
:shock:

"phyton" :shock:

ärgern :shock:


Du machst da was falsch! :twisted:
naja, wenn man sich so 0 damit auskennt...

Re: neuling braucht hilfe

Verfasst: Freitag 8. Oktober 2010, 05:09
von Leonidas
Iorlas hat geschrieben:naja, wenn man sich so 0 damit auskennt...
Das man nichtmal den Namen richtig schreibt ;)

Re: neuling braucht hilfe

Verfasst: Freitag 8. Oktober 2010, 09:19
von Iorlas
ja, sorry, man wird sich ja wohl mal verschreiben dürfen... :lol:

Re: neuling braucht hilfe

Verfasst: Freitag 8. Oktober 2010, 14:36
von Käptn Haddock
Hallo!

Eigentlich könntest du dir mal in der ArcGIS-Toolbox das Multiple Ring Buffer Script anschauen :wink:
Dass ist auch in Python geschrieben und etwas besser kommentiert und geschrieben als die generierte Vorlage.
Ansonsten hier mal eine kurze Version zur Einfügung an der richtigen Stelle:

Code: Alles auswählen

 # Local variables...
mein_pfad = 'H:\\tmp'
gew_20080715_Dissolve = "gew_20080715_Dissolve"
bufferlist =["50 Meters","200 Meters", "350 Meters"]

# Process: Buffer...
for Distance__value_or_field_ in bufferlist:
    Output_Feature_Class = os.path.join(mein_pfad, 'gew_20080715_Dissolve_Buffer_%s.shp'%(Distance__value_or_field_.replace(' ','_')) 
    gp.Buffer_analysis(gew_20080715_Dissolve, Output_Feature_Class, Distance__value_or_field_, "FULL", "ROUND", "NONE", "")
Die Zusatzaufgaben, Fehlersuche und das anpassen der Pfade überlass ich dir. Sollst ja auch was lernen, über Python muß man sich nicht ärgern ;)

CU Uwe

Re: neuling braucht hilfe

Verfasst: Montag 11. Oktober 2010, 07:33
von Iorlas
Vielen Dank!!!! 8)