Coordinatensystem projections

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hicham
User
Beiträge: 6
Registriert: Mittwoch 23. April 2014, 14:16

Hallo zusammen,
ich bin recht neu in Python und habe hier gleich zwei Fragen?
ich baue gerade ein tools für arcgis (projizierin) und geth so:
1- wenn man feature class oder files lädt muss automatisch den koordinaten zugewiesen
2- bei projiziern muss nur 4 cooradinaten in der Liste erscheinen ( oordinatensystem (25833,3857,4326,3068)


Code: Alles auswählen

import arcpy
import os


arcpy.env.workspace = "C:\Users\chris\MEINE_DATEN"
arcpy.env.overwriteOutput = True


outWorkspace = "C:\Users\chris\MEINE_DATEN\TEST"

try:
    
    for infc in arcpy.ListFeatureClasses():
    
        
        dsc = arcpy.Describe(infc)
    
        if dsc.spatialReference.Name == "Unknown":
            print ('skipped this fc due to undefined coordinate system: ' + infc)
        else:
            # Determine the new output feature class path and name
            outfc = os.path.join(outWorkspace, infc)
            
            # Set output coordinate system
            outCS = arcpy.SpatialReference('NAD 1983 UTM Zone 11N')
            
            # run project tool
            arcpy.Project_management(infc, outfc, outCS)
            
            # check messages
            print(arcpy.GetMessages())
            
except arcpy.ExecuteError:
    print(arcpy.GetMessages(2))
    
except Exception as ex:
    print(ex.args[0])
hier habe ich die cooradinaten einzeln
1.Coordinate

Code: Alles auswählen

import arcpy

prjFile1 = "C:\Users\\chris\\MEINE_DATEN\\koordinates\\WGS 1984 Web Mercator (auxiliary sphere).prj"

spatialRef1 = arcpy.SpatialReference(prjFile1)


inPath = arcpy.GetParameterAsText(0)
outPath = arcpy.GetParameterAsText(1)

arcpy.Project_management (inPath, outPath, spatialRef1)
2.Cooradinat

Code: Alles auswählen

import arcpy

prjFile1 = "C:\Users\\chris\\MEINE_DATEN\\koordinates\\DHDN Soldner Berlin.prj"

spatialRef1 = arcpy.SpatialReference(prjFile1)


inPath = arcpy.GetParameterAsText(0)
outPath = arcpy.GetParameterAsText(1)

arcpy.Project_management (inPath, outPath, spatialRef1)
3.Coordinate

Code: Alles auswählen

import arcpy

prjFile1 = "C:\Users\\chris\\MEINE_DATEN\\koordinates\\4326.prj"

spatialRef1 = arcpy.SpatialReference(prjFile1)


inPath = arcpy.GetParameterAsText(0)
outPath = arcpy.GetParameterAsText(1)

arcpy.Project_management (inPath, outPath, spatialRef1)
4.Cooradinate

Code: Alles auswählen

import arcpy

prjFile1 = "C:\Users\\chris\\MEINE_DATEN\\koordinates\\ETRS 1989 UTM Zone 33N 7stellen.prj"

spatialRef1 = arcpy.SpatialReference(prjFile1)


inPath = arcpy.GetParameterAsText(0)
outPath = arcpy.GetParameterAsText(1)

arcpy.Project_management (inPath, outPath, spatialRef1)
wie kriege ich beim (Set output coordinate system ) nur die 4 cooradinaten gezeigt wird (25833,3857,4326,3068)

Vielen Dank schonmal
hicham
User
Beiträge: 6
Registriert: Mittwoch 23. April 2014, 14:16

Kann mir jemand bitte helfen
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hallo,

ich denke die wenigsten hier werden sich mit der fachlichen Domäne rund um arcgis auskennen. Daher musst Du Dein Problem so allgemein beschreiben, dass uns Unwissenden klar wird, was Du eigentlich lösen willst.

Du stellst lediglich folgende Frage:
hicham hat geschrieben: wie kriege ich beim (Set output coordinate system ) nur die 4 cooradinaten gezeigt wird (25833,3857,4326,3068)
Weder sehe ich irgend wo in Deinen Code-Schnipseln, etwas, was wie "set output" aussieht, noch kann ich erkennen, *woher* die speziellen vier Daten stammen.

Du musst mehr beschreiben, *was* die einzelnen Module tun, was Du jetzt als Ausgabe oder Zwischenergebnis irgend wo bekommst und *was* Du letztlich erwartest oder haben möchtest.

Zu Deinem Code kann ich nur schon anmerken, dass es mir seltsam vorkommt, dass Du für die Berechnung oder das Auslesen (?) Deiner vier Koordinaten vier mal exakt den gleichen Code als ein Modul schreibst :!:

Wieso schreibst Du nicht *ein* Modul, welches den Pfad übergeben bekommt; denn der ist ja das einzige, was sich unterscheidet.

Wenn die Pfade tatsächlich fix im Programm stehen bleiben sollen, könntest Du sie wenigstens in eine Liste stecken, so dass man diese der Reihe nach durchgeht und die Dateipfade an eine Funktion übergibt, die einem eine Koordinate zurück liefert.

Viel mehr kann ich dazu jetzt nicht sagen, da ich den Code weder laufen lassen kann (habe kein arcgis und die Datendateien ja sowieso nicht!), noch verstanden habe, worin Dein Problem eigentlich besteht.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
hicham
User
Beiträge: 6
Registriert: Mittwoch 23. April 2014, 14:16

hallo Hyperion,
vielen Dank für Ihre Antwort
Hier mal ein paar Screenshots von mir .vielleicht hilft ihnen zu verstehen .was ich bauen möchte .
tools:
Bild[/img]


Bild
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hallo,

geh davon aus, dass hier keiner weiß, wie arcgis funktioniert! Da nützen Screenshots leider nichts.

Du könntest den Code aus Screenshot 2 übrigens besser mit einem Dictionary darstellen. Mappe einfach den Konfigurationsnamen auf den Dateipfad:

Code: Alles auswählen

mapping = {
    "foo": "/path/to/some_foo_file.foo",
    "bar": "/path/to/some_bar_file.bar",
    ...
}

# alle Einträge durchgehen
for key in mapping:
    do_something_with_filename(mapping[key])
Du musst einfach mal formulieren, *was* Du erreichen willst. Und zwar komplett mit Kontext, unveränderlich gegebenen Anforderungen und Funktionalitäten, die Du irgend wie aufrufen willst. Wenn Du uns das Problem nicht beschreiben kannst, dann können wir Dir auch nicht helfen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
hicham
User
Beiträge: 6
Registriert: Mittwoch 23. April 2014, 14:16

Hallo,

ich bin der Kollege von Hicham und versuche das Problem mal ein bißchen zu erläutern.

Und zwar haben wir generell folgendes Problem:

Wir haben innerhalb eines Tools einen Parameter (String) der eine Value List mit 4 Werten besitzt (4 versch. Koordinatensysteme).

Das Tool selber ist relativ einfach:
Eingabedatei: File
Ausgabedatei: Shapefile
Ausgabe KS: String (4 versch. KS zum wählen)

Funktion: Projizieren

Wir wissen jetzt bloß nicht welche Funktion wir in der Validation eintragen müssen um diese Werte aus der Liste anwählen zu können, um genau die Datei in ein bestimmtes KS (zb. Soldner Berlin) transformieren zu können.

Wäre super, wenn uns jmd. den entscheidenen Tip geben könnte.

Danke im Vorraus!

8) Chris
Antworten