Wygląda na to, że nie ma możliwości przekonwertowania geometrii ArcObjects na dobrze znaną reprezentację tekstu (i odwrotnie) w ArcGIS ArcObjects API. Jedyne, co udało mi się znaleźć, to konwersja do WKB (interfejs IWkb).
Czy istnieje sposób na konwersję między obiektami geometrycznymi a WKT, czy też muszę go zaimplementować? Dążę przede wszystkim do implementacji platformy .NET bez większych zależności zewnętrznych.
źródło
Korzystanie z interfejsu IWkb ma niezłą robotę przy konwersji pomiędzy IGeometry i WKB. Z WKB możesz użyć biblioteki Microsoft.SqlServer.Types, aby przekonwertować WKB na SqlGeometry, a następnie z powrotem do WKT.
W tym momencie masz WKB zapisane w wkb_bytes. Jeśli chcesz przejść do następnego kroku do SqlGeometry, a następnie do WKT:
źródło
srid
tutaj. Użyłem tego:int srid = feature.Shape.SpatialReference.FactoryCode;
czy zgadzasz się z tym wdrożeniem?Możesz spróbować odwołać się do zestawu Microsoft.SqlServer.Types (który moim zdaniem jest dołączony do bezpłatnej wersji Sql Server Express), a następnie użyć metody statycznej STGeomFromWKB , aby utworzyć geometrię Microsoft, którą można następnie przekonwertować na WKT za pomocą STAsText .
Zauważ też, że chociaż Microsoft chwyta się wielu zarzutów dotyczących własności, oferuje kod źródłowy wielu użytecznych funkcji w SqlServer Spatial Tools w codeplex. Więc jeśli SqlServerTypes ma zbyt dużą zależność zewnętrzną, możesz być w stanie znaleźć kod źródłowy, który to robi.
źródło
NTS może „mówić” w języku WKT i ma czytniki i pisarki dla WKB i WKT. Więc jeśli masz WKB, NTS może to przeczytać i napisać do WKT.
Można jednak również tworzyć obiekty NTS przy użyciu atrybutów geometrii ArcObjects, a następnie generować je jako WKT.
Dla jednego z naszych projektów ArcObjects stworzyliśmy narzędzia do przesuwania geometrii przez NTS (głównie w celu wykorzystania alternatywnych metod projekcji oferowanych przez NTS).
źródło
Projekt open source DNRGPS ( tutaj licencjonowanie ) ma metody rozszerzeń do konwersji między
IGeometry
WKT, ale trzeba je dostosować, aby nie używać,IObjectFactory
jeśli chcesz używać ich poza aplikacją ArcGIS.Licencja wygląda dość liberalnie, więc umieściłem
IObjectFactory
ją w GitHub w wersji autonomicznej (nie używa ), jeśli ktoś był zainteresowany:Aktualizacja: Wprowadziłem kilka ulepszeń do mojej wersji, aby obsługiwać stosowanie odniesień przestrzennych do wyjściowych obiektów geometrii i używanie przyjaznego dla współrzędnych całkowitych domyślnego odniesienia przestrzennego (Plate Carree), jeśli nie jest określony.
źródło
Sprawdź GeometryBridge, może ci pomóc. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//00010000039n000000
źródło