Wie können Sie mit arcpy überprüfen, ob zwei Feature-Classes denselben Raumbezug haben?
Nur zu überprüfen, ob die beiden gleich sind, funktioniert nicht:
>>> import arcpy
>>> fc1 = r"C:\Users\e1b8\Desktop\E1B8\GIS_Stackexchange\data.gdb\test"
>>> sr1 = arcpy.Describe (fc1).spatialReference
>>> sr2 = arcpy.Describe (fc1).spatialReference
>>> sr1 == sr2
False
factoryCode
funktioniert nicht, weil benutzerdefinierte Projektionen sie nicht haben.
>>> fc2 = r"C:\Users\e1b8\Desktop\E1B8\GIS_Stackexchange\data.gdb\customproj"
>>> sr2 = arcpy.Describe (fc2).spatialReference
>>> sr2.factoryCode
0
Es gibt name
, aber Namen können gleich sein, aber unterschiedliche Einheiten haben:
>>> sr1 = arcpy.Describe (fc1).spatialReference
>>> sr2 = arcpy.Describe (fc2).spatialReference
>>> sr1.name
u'NAD_1983_UTM_Zone_10N'
>>> sr2.name
u'NAD_1983_UTM_Zone_10N'
>>> sr1.linearUnitCode
9003
>>> sr2.linearUnitCode
9001
Es wird also etwas kompliziert. Das Beste, was ich mir ausgedacht habe, ist:
>>> def CompareSRs (inFc1, inFc2):
sr1 = arcpy.Describe (inFc1).spatialReference
sr2 = arcpy.Describe (inFc2).spatialReference
if not sr1.name != sr2.name:
return False
srType = sr1.type
if srType != sr2.type:
return False
if srType == "Geographic":
return sr1.angularUnitCode == sr2.angularUnitCode
return sr1.linearUnitCode == sr2.linearUnitCode
Und ich bin mir immer noch nicht sicher, ob der obige Code luftdicht ist. Gibt es einen besseren Weg?
arcpy
arcgis-10.1
coordinate-system
Emil Brundage
quelle
quelle
exportToString ()
die eine Zeichenfolge der WKT des Raumbezugs zurückgibt, könnte das Ticket sein.Antworten:
Nach Kommentaren zu urteilen, haben Sie es vielleicht schon :)
Sie können die WKT-Beschreibungen (Well-Known Text) der Raumbezüge vergleichen.
quelle
Bogenversion: 10.3
Falls dies 2019 noch jemand findet , hatte ich ähnliche Probleme und wollte so sicher wie möglich sein, ob die Projektionen übereinstimmen. Wie in den obigen Fragen / Antworten können Sie den Raumbezug mit abrufen
arcpy.Describe(dataset).spatialReference
. In einer meiner Funktionsbibliotheken integriere ich diese dann in einen Workflow, der für den Vergleich von zwei Datensätzen eingerichtet ist.Die einzelnen Attribute eines Geoverarbeitungs räumlichen Referenzobjekt sind verfügbar hier .
Die folgenden Funktionen sollen helfen - Sie können sie natürlich verwenden / ändern. Es lohnt sich zu überprüfen, was weggelassen wird - einige Attribute der Raumbezugssysteme sind harmlos, wenn sie nicht übereinstimmen, aber das liegt bei Ihnen :)
In Anbetracht der obigen Ausführungen können Sie sie wie folgt verwenden:
In Anbetracht Ihres Anwendungsfalls werden die Asserts hoffentlich nicht fehlschlagen.
Ich integriere diese Funktionen jetzt in viele Prozesse, z. B. wenn ich eine Reihe von Geodatensätzen habe, denen ich beitrete, und möchte jeden Zweifel daran beseitigen, dass die Dinge falsch ausgerichtet waren.
quelle