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

C# 使用c将gml:Polygon转换为SQL几何体十六进制字符串,c#,sql-server,tsql,gml-geographic-markup-lan,C#,Sql Server,Tsql,Gml Geographic Markup Lan,我正在尝试仅使用C中的Microsoft.SqlServer.Types将gml:Polygon转换为SQL Server Geometry数据类型,因此没有SQL Server可用于此任务,在下面的示例中,我仅出于测试目的使用MSSQL Server。我已经做的是: string str = "<gml:Polygon xmlns:gml=\"http://www.opengis.net/gml\"><gml:exterior><gm

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

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());
现在我需要这样转换它: 当我在SSMS中执行此命令时

select convert(geometry, 'POLYGON ((1 2, 3 4, 5 6, 1 2))')
并在结果窗格中获得以下结果,以便将其作为字符串:

0x00000000010004000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000001840000000000000F03F000000000000004001000000020000000001000000FFFFFFFF0000000003
我怎样才能做到这一点

更新

使用SqlGeometry.GeomFromGmlstr1,4326,我已经有了几何数据类型,还有另一种方法:StatInary,它将为同一几何体WKB提供二进制表示,但我不知道如何从中获取SQL十六进制字符串

我试过这样做:

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

但结果是WKB表示。

@marc_s我更新了我的问题,需要选择转换几何体的输出,“多边形12,3 4,5 6,1 2”作为字符串。您可能需要将第一个转换几何体包裹起来。。。变成另一个ConvertVARCHARn,ConvertGeometry,…`call@marc_s谢谢,我更新了我的问题。有一个STAsBinary方法可以获取几何体数据类型的二进制表示形式,但我不知道如何将其作为所需的字符串获取。您是否可以在几何体对象上使用STAsText方法?已经做了,但这会给我多边形12,34,56,12,看看问题
var m = BitConverter.ToString(ba).Replace("-", "");