微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 C# 将 gml:Polygon 转换为 SQL 几何十六进制字符串

如何解决使用 C# 将 gml:Polygon 转换为 SQL 几何十六进制字符串

我正在尝试仅在 C# 中使用 Geometry 将 gml:polygon 转换为 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,1 2))')

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

0x00000000010004000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000001840000000000000F03F000000000000004001000000020000000001000000FFFFFFFF0000000003

我如何才能做到这一点?

更新

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

我试过这种方式:

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

但结果是 WKB 表示。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。