Parece que não há como converter uma geometria do ArcObjects na representação de texto conhecido (e vice-versa) na API do ArcGIS ArcObjects. A única coisa que consegui encontrar é a conversão para WKB (a interface IWkb).
Existe uma maneira de executar a conversão entre objetos de geometria e o WKT ou eu mesmo tenho que implementá-lo? Eu viso principalmente a implementação do .NET sem muitas dependências externas.
fonte
O uso da interface IWkb faz um bom trabalho na conversão entre um IGeometry e WKB. Em um WKB, você pode usar a biblioteca Microsoft.SqlServer.Types para converter um WKB em SqlGeometry e voltar ao WKT.
Neste ponto, você tem o WKB armazenado em wkb_bytes. Se você deseja ir para o próximo passo para SqlGeometry, em seguida, para WKT:
fonte
srid
aqui. Eu usei o seguinte:int srid = feature.Shape.SpatialReference.FactoryCode;
Você concorda com essa implementação?Você pode tentar fazer referência ao assembly Microsoft.SqlServer.Types (que acredito estar incluído na edição gratuita do Sql Server Express) e, em seguida, usar o método estático STGeomFromWKB para criar uma geometria da Microsoft, que pode ser convertida em WKT usando STAsText .
Observe também que, embora a Microsoft receba muitas críticas por ser proprietária, elas oferecem código fonte para muitas funções úteis em suas Ferramentas Espaciais do SqlServer no codeplex. Portanto, se o SqlServerTypes tiver muita dependência externa, você poderá encontrar o código-fonte que faz isso.
fonte
O NTS pode "falar" o WKT e possui leitores e escritores para o WKB e o WKT. Portanto, se você possui WKB, o NTS pode ler e escrever no WKT.
No entanto, você também pode criar objetos NTS usando os atributos de uma geometria do ArcObjects e, em seguida, produzir como WKT.
Para um de nossos projetos do ArcObjects, criamos métodos utilitários para o NTS mover a geometria (principalmente para aproveitar os métodos alternativos de projeção que o NTS oferece).
fonte
O projeto de código-fonte aberto DNRGPS (licenciamento aqui ) possui métodos de extensão para conversão entre
IGeometry
e WKT, embora você precise adaptá-los para não usá-losIObjectFactory
se desejar usá-los fora de um aplicativo ArcGIS.A licença parece bastante permissiva, então eu coloquei minha versão autônoma (não a usa
IObjectFactory
) dela no GitHub se alguém estivesse interessado:Atualização: fiz algumas melhorias na minha versão para oferecer suporte à aplicação de referências espaciais para os objetos de geometria de saída e ao uso de uma referência espacial padrão amigável de coordenadas inteiras (Plate Carree), se nenhuma for especificada.
fonte
Confira GeometryBridge, pode ser capaz de ajudá-lo. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//00010000039n000000
fonte