0

我正在尝试将 gml:Polygon 转换为仅在 C# 中Geometry使用的 SQL Server 数据类型Microsoft.SqlServer.Types,因此没有可用于此任务的 SQL 服务器,在以下示例中,我仅将 MSSQL 服务器用于测试目的。我已经做的是这样的:

string str = "<gml:Polygon xmlns:gml=\"http://www.opengis.net/gml\"><gml:exterior><gml:LinearRing><gml:posList>1 2 3 4 5 6 1 2</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon>";

SqlXml str1 = new SqlXml(new MemoryStream(Encoding.UTF8.GetBytes(str)));

SqlGeometry a = SqlGeometry.GeomFromGml(str1, 4326);

writer.WriteString(a.STAsText().ToSqlString().ToString());

这将输出:

POLYGON ((1 2, 3 4, 5 6, 1 2))

现在我需要像这样转换它:当我在 SSMS 中执行这个命令时

select convert(geometry, 'POLYGON ((1 2, 3 4, 5 6, 1 2))')

并在结果窗格中获得以下结果,以便我可以将其作为字符串:

0x00000000010004000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000001840000000000000F03F000000000000004001000000020000000001000000FFFFFFFF0000000003

我怎样才能做到这一点?

更新

使用 SqlGeometry.GeomFromGml(str1, 4326) 我已经有了几何数据类型,还有另一种方法:STAsBinary() 它将为我提供相同几何 (WKB) 的二进制表示,但我不知道如何获取 SQL hex从它的字符串。

我试过这样:

var m = BitConverter.ToString(ba).Replace("-", "");

但结果是 WKB 表示。

4

0 回答 0