Il semble qu'il n'y ait aucun moyen de convertir une géométrie ArcObjects en représentation de texte bien connu (et vice versa) dans ArcGIS ArcObjects API. La seule chose que j'ai pu trouver est la conversion en WKB (l'interface IWkb).
Existe-t-il un moyen d'effectuer une conversion entre des objets géométriques et WKT ou dois-je l'implémenter moi-même? Je vise principalement l'implémentation .NET sans trop de dépendances externes.
la source
L'utilisation de l'interface IWkb fait un bon travail lors de la conversion entre une IGeometry et WKB. À partir d'un WKB, vous pouvez utiliser la bibliothèque Microsoft.SqlServer.Types pour convertir un WKB en SqlGeometry puis revenir en WKT.
À ce stade, le WKB est stocké dans wkb_bytes. Si vous souhaitez passer à l'étape suivante vers SqlGeometry puis vers WKT:
la source
srid
ici. J'ai utilisé ceci:int srid = feature.Shape.SpatialReference.FactoryCode;
êtes-vous d'accord avec cette mise en œuvre?Vous pouvez essayer de référencer l' assembly Microsoft.SqlServer.Types (qui, je crois, est inclus dans l'édition gratuite Sql Server Express), puis utiliser la méthode statique STGeomFromWKB pour créer une géométrie microsoft, qui pourrait ensuite être convertie en WKT à l'aide de STAsText .
Notez également que bien que Microsoft attrape beaucoup de flak sur le fait d'être propriétaire, ils offrent du code source à de nombreuses fonctions utiles dans leurs outils spatiaux SqlServer sur codeplex. Donc, si le SqlServerTypes est trop de dépendance externe pour vous, vous pourriez être en mesure de trouver le code source qui fait cela.
la source
NTS peut "parler" WKT et a des lecteurs et des écrivains pour WKB et WKT. Donc, si vous avez WKB, NTS peut lire cela et écrire dans WKT.
Cependant, vous pouvez également créer des objets NTS en utilisant les attributs d'une géométrie ArcObjects, puis les afficher en tant que WKT.
Pour l'un de nos projets ArcObjects, nous avons créé des méthodes utilitaires permettant à NTS de déplacer la géométrie (principalement pour tirer parti des autres méthodes de projection proposées par NTS).
la source
Le projet open source DNRGPS (licence ici ) a des méthodes d'extension pour la conversion entre
IGeometry
et WKT, bien que vous deviez les adapter pour ne pas les utiliserIObjectFactory
si vous souhaitez les utiliser en dehors d'une application ArcGIS.La licence semble assez permissive, donc j'en ai mis ma version autonome (ne l'utilise pas
IObjectFactory
) sur GitHub si quelqu'un était intéressé:Mise à jour: j'ai apporté quelques améliorations à ma version pour prendre en charge l'application de références spatiales pour les objets de géométrie en sortie et l'utilisation d'une référence spatiale par défaut adaptée aux coordonnées entières (Plate Carree) si aucune n'est spécifiée.
la source
Découvrez GeometryBridge, il pourrait être en mesure de vous aider. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//00010000039n000000
la source