Es scheint, als gäbe es in der ArcGIS ArcObjects-API keine Möglichkeit, eine ArcObjects-Geometrie in die bekannte Textdarstellung (und umgekehrt) zu konvertieren. Das einzige, was ich finden konnte, ist die Konvertierung in WKB (die IWkb-Schnittstelle).
Gibt es eine Möglichkeit, eine Konvertierung zwischen Geometrieobjekten und WKT durchzuführen, oder muss ich diese selbst implementieren? Ich strebe hauptsächlich eine .NET-Implementierung ohne große externe Abhängigkeiten an.
quelle
Die Verwendung der IWkb-Schnittstelle macht einen guten Job beim Konvertieren zwischen einer IGeometrie und einer WKB. Von einer WKB können Sie die Microsoft.SqlServer.Types-Bibliothek verwenden, um eine WKB in SqlGeometry und dann wieder in WKT zu konvertieren.
Zu diesem Zeitpunkt haben Sie die WKB in wkb_bytes gespeichert. Wenn Sie den nächsten Schritt zu SqlGeometry ausführen möchten, gehen Sie zu WKT:
quelle
srid
hier getroffen habe. Ich habe dies verwendet:int srid = feature.Shape.SpatialReference.FactoryCode;
Stimmen Sie dieser Implementierung zu?Sie könnten versuchen, auf die Microsoft.SqlServer.Types- Assembly zu verweisen (die meiner Meinung nach in der kostenlosen Sql Server Express-Edition enthalten ist), und dann mit der statischen STGeomFromWKB- Methode eine Microsoft-Geometrie erstellen, die dann mit STAsText in WKT konvertiert werden kann .
Beachten Sie auch, dass Microsoft eine Menge Bedenken hat , wenn es darum geht, proprietär zu sein, dass es in seinen SqlServer Spatial Tools bei codeplex Quellcode für viele nützliche Funktionen anbietet. Wenn Ihnen die Abhängigkeit von SqlServerTypes zu groß ist, können Sie möglicherweise den Quellcode finden, der dies tut.
quelle
NTS kann WKT "sprechen" und hat Leser und Schreiber für WKB und WKT. Wenn Sie also WKB haben, kann NTS das lesen und an WKT schreiben.
Sie können jedoch auch NTS-Objekte mithilfe der Attribute einer ArcObjects-Geometrie erstellen und dann als WKT ausgeben.
Für eines unserer ArcObjects-Projekte haben wir Dienstprogrammmethoden für NTS zum Verschieben von Geometrie erstellt (hauptsächlich, um die alternativen Projektionsmethoden von NTS zu nutzen).
quelle
Das Open Source-Projekt DNRGPS (Lizenzierung hier ) verfügt über Erweiterungsmethoden für die Konvertierung zwischen
IGeometry
und WKT, obwohl Sie diese anpassen müssen, um sie nicht zu verwenden,IObjectFactory
wenn Sie sie außerhalb einer ArcGIS-Anwendung verwenden möchten.Die Lizenz sieht ziemlich freizügig aus, also habe ich meine eigenständige Version (die nicht verwendet wird
IObjectFactory
) auf GitHub veröffentlicht, wenn sich jemand dafür interessierte:Update: Ich habe einige Verbesserungen an meiner Version vorgenommen, um das Anwenden von Raumbezügen für die Ausgabegeometrieobjekte und die Verwendung eines für Ganzzahlkoordinaten geeigneten Standardraumbezugs (Plate Carree) zu unterstützen, wenn keiner angegeben ist.
quelle
Schauen Sie sich GeometryBridge an, es könnte Ihnen helfen. http://help.arcgis.com/de/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//00010000039n000000
quelle