답변:
과거에는 Sharpmap의 변환기를 사용했지만 먼저 WKB를 사용해야했습니다. 이것이 최선의 선택인지는 모르겠습니다.
SharpMap.Geometries.IGeometry sharpGeom = SharpMap.Converters.WellKnownBinary.GeometryFromWKB.Parse(geombytes);
wkt = SharpMap.Converters.WellKnownText.GeometryToWKT.Write(sharpGeom);
또한 현재 SharpMap 리포지토리의 위치를 모르지만 여기에서 클래스에 대한 참조를 찾았습니다.
당시에는 Codeplex의 SharpMap을 사용하고 있다고 생각합니다.
ZigGIS를 잊어 버렸습니다. 이 코드를 기반으로 빌드 할 수 있습니다.이 링크는 이전 버전의 지그입니다. 내가 생각하는 aoPolygonToWkt, aoPointToWkt, aoPolylineToWkt 메소드입니다 : https://code.google.com/archive/p/ziggis/downloads
IWkb 인터페이스를 사용하면 IGeometry와 WKB를 변환 할 때 훌륭한 작업을 수행 할 수 있습니다. WKB에서 Microsoft.SqlServer.Types 라이브러리를 사용하여 WKB를 SqlGeometry로 변환 한 다음 다시 WKT로 변환 할 수 있습니다.
IWkb wkb = geometry as (IWkb); //(Where geometry is an instance of IGeometry)
byte[] wkb_bytes = new byte[wkb.WkbSize];
int byte_count = wkb.WkbSize;
wkb.ExportToWkb(ref byte_count, out wkb_bytes[0]);
이 시점에서 WKB는 wkb_bytes에 저장됩니다. 다음 단계를 SqlGeometry로 이동하려면 WKT로 이동하십시오.
SqlGeometry sqlGeom = SqlGeometry.STGeomFromWKB(new SqlBytes(wkb_bytes), srid);
string wkt = sqlGeom.ToString();
srid
여기에서 내가 선택한 것을 궁금 합니다. 나는 이것을 사용했다 : int srid = feature.Shape.SpatialReference.FactoryCode;
당신은 그 구현에 동의합니까?
당신은 참조 시도 할 수 있습니다 Microsoft.SqlServer.Types을 한 후 사용 (나는 자유은 SQL Server Express 버전에 포함되어 생각하는) 조립 STGeomFromWKB의 다음 사용 WKT로 변환 할 수있는 마이크로 소프트의 형상을 만들 정적 메소드를 STAsText을 .
또한 Microsoft는 독점적이라는 점에 대해 많은 단점을 가지고 있지만 코드 플렉스에서 SqlServer Spatial Tools 의 유용한 기능 에 대한 소스 코드를 제공합니다 . 따라서 SqlServerTypes가 너무 많은 외부 종속성 인 경우이를 수행하는 소스 코드를 찾을 수 있습니다.
NTS 는 WKT를 "말할 수"있으며 WKB와 WKT를위한 독자와 작가가 있습니다. 따라서 WKB가 있으면 NTS가이를 읽고 WKT에 쓸 수 있습니다.
그러나 ArcObjects 지오메트리의 속성을 사용하여 NTS 객체를 만든 다음 WKT로 출력 할 수도 있습니다.
ArcObjects 프로젝트 중 하나를 위해 NTS가 지오메트리를 이동할 수있는 유틸리티 방법을 만들었습니다 (주로 NTS가 제공하는 대체 투영 방법을 활용하기 위해).
는 DNRGPS 오픈 소스 (라이센스 프로젝트 여기 ) 사이의 변환에 대한 확장 메서드를 가지고 IGeometry
당신이 그 (것)들을 사용하지에 적응해야 할 것이다 있지만, WKT와 IObjectFactory
당신이는 ArcGIS 응용 프로그램 외부에서이를 사용하려는 경우.
라이센스는 꽤 관대 한 것처럼 보이므로 IObjectFactory
관심이 있다면 GitHub에 독립형 버전 (사용하지 않음 )을 올려 놓았습니다.
업데이트 : 출력 지오메트리 객체에 공간 참조를 적용하고 지정되지 않은 경우 정수 좌표 친화적 기본 공간 참조 (Plate Carree) 사용을 지원하도록 버전이 약간 개선되었습니다.
GeometryBridge를 확인하면 도움이 될 수 있습니다. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//00010000039n000000