Entsprechen die Factory-Codes von ArcGIS SpatialReference-Objekten den EPSG-Nummern?

22

Ich habe ein Projekt, in dem ich Geometrieobjekte aus Textdateien einlese, um sie in ArcSDE einzufügen. Diesen Geometrieobjekten ist ein EPSG-Code zugeordnet, und ich suche nach einer Möglichkeit, um sicherzustellen, dass sie in der richtigen Projektion sind, wenn ich mit ihnen fertig bin.

Nach einem Blick auf die für mich interessanten Fabrikcodes (GCS GDA94; EPSG: 4283 und VicGrid 94; EPSG: 3111) für ein Projekt, an dem ich arbeite, scheint es, dass die EPSG-Codes direkt dem ESRI entsprechen Fabrikcodes für den Raumbezug ( hier und hier ). Das ist großartig, da ich mich nicht um das Navigieren zu Projektionsdateien kümmern muss, um SpatialReference- Objekte zu erstellen , zum Beispiel im folgenden Code:

import arcpy

# Create a spatial reference object using a factory code
#
sr = arcpy.SpatialReference()
sr.factoryCode = int(epsg_code.lstrip("EPSG:"))
sr.create()

Leider kann ich in der ESRI-Dokumentation nicht nachlesen, ob dies die ganze Zeit zutrifft oder nicht - ich denke schon, aber ich weiß es lieber mit Sicherheit. Weiß jemand, wo ich es herausfinden könnte?

om_henners
quelle

Antworten:

30

Wenn eine bekannte Esri-ID unter 32767 liegt, entspricht dies der EPSG-ID. WKIDs, die 32767 oder höher sind, sind Esri-definiert. Entweder befindet sich das Objekt noch nicht im EPSG-Datensatz für geodätische Parameter , oder es wird wahrscheinlich nicht hinzugefügt. Wenn dem EPSG-Datensatz später ein Objekt hinzugefügt wird, aktualisiert Esri die WKID so, dass sie mit der EPSG-ID übereinstimmt, der vorherige Wert funktioniert jedoch weiterhin.

Es gibt einige Einschränkungen. Esri folgt nicht den Achsenrichtungen, die EPSG ausführt, zumindest in ArcGIS Desktop, es ist immer Längengrad-Breitengrad oder Ost-Nord-Richtung (xy), obwohl wir die Achsenreihenfolge jetzt in Server übernehmen.

Ich bin damit bestens vertraut, da ich der Produktingenieur bin, der diese Aufgaben für Esri übernimmt.

mkennedy
quelle
9

Dies scheint in der SDK-Hilfe dokumentiert zu sein, z. B. IGeometryServer.FindSRByWKID :

AuthorityName ist normalerweise "EPSG" oder "ESRI", kann aber auch eine beliebige Zeichenfolge sein. Dies kann auch die leere Zeichenfolge sein, wenn Sie den Standardautoritätsnamen für den neuen Raumbezug verwenden möchten. Clients können ihren eigenen Berechtigungsnamen Factory-Codes zuordnen, die derzeit den EPSG- oder ESRI-Berechtigungsnamen zugeordnet sind, da nur die WKID zum Erstellen des Raumbezugs verwendet wird. Hier sind die aktuellen Regeln für die Zuordnung von WKID- Bereichen zu Standardberechtigungsnamen:

  • Eine WKID im EPSG-Codebereich (1000 - 32768) führt zu dem AUTHORITY-Namen "EPSG", und die Version ist die aktuell verwendete EPSG-Version (derzeit "6.12").
  • Eine WKID im ESRI-Codebereich (33000 - 199999) führt zu einem AUTHORITY-Namen von „ESRI“, und die Version ist die aktuelle PE-Bibliotheksversion (derzeit „9.3“).
  • Eine WKID im Benutzerbereich (objedit) (200000 - 209199) führt zu dem AUTHORITY-Namen "CUSTOM", mit dem keine Version verknüpft ist. Dieser Name wird vom OGC festgelegt.
blah238
quelle
Wenn ich im Raumbezugs-Factory-Code einen Wert 0 gefunden habe, kann ich feststellen, dass der Raumbezug nicht autorisiert / gültig ist?
Emi
2
@Emi, A 0 für den Factory-Code / wkid bedeutet normalerweise, dass ArcGIS den Raumbezug (Koordinatensystem) nicht erkennt. Ich würde es immer noch als gültigen Raumbezug bezeichnen, da es verwendet werden kann und nur keine ID hat.
Mkennedy
5

Der einzige Hinweis , den ich in Bezug auf EPSG finden konnte , war in der Was in ArcGIS 10 ist neu , die die

Kartenprojektionen und Koordinatensysteme

Neue Koordinatensysteme und Transformationen wurden hinzugefügt, einschließlich der folgenden: • Definitionen aus den Versionen 6.15 bis 7.1 des EPSG Geodetic Parameter Dataset, einschließlich 181 geografischer (Datums-) Transformationen und über 280 Koordinatensysteme ...

Ich weiß nicht, ob das die Bestätigung ist, die Sie brauchen.


quelle