C# 关于如何使用Npgsql空间类型的简单示例

C# 关于如何使用Npgsql空间类型的简单示例,c#,postgis,npgsql,.net-4.6,C#,Postgis,Npgsql,.net 4.6,使用组件版本Npgsql.3.1.0-alpha6 我在Postgre中有一个带有几何字段的表。数据是有效的。与数据库的连接工作正常。毕业后9.5 我编写了以下代码(将其视为伪代码,因为它是使用类似于C的Oxygene完成的,我希望C的答案是正确的): 这段代码可以工作,并向我展示几何字段中二进制数据的ascii十六进制表示 我制作了一个win32软件,从PostGIS中检索EWKB,然后解析几何字段十六进制数据。通过这种方式,我检索了要导出为另一种格式的每个数据 然后,我使用Microsoft

使用组件版本Npgsql.3.1.0-alpha6

我在Postgre中有一个带有几何字段的表。数据是有效的。与数据库的连接工作正常。毕业后9.5

我编写了以下代码(将其视为伪代码,因为它是使用类似于C的Oxygene完成的,我希望C的答案是正确的):

这段代码可以工作,并向我展示几何字段中二进制数据的ascii十六进制表示

我制作了一个win32软件,从PostGIS中检索EWKB,然后解析几何字段十六进制数据。通过这种方式,我检索了要导出为另一种格式的每个数据

然后,我使用MicrosoftADO连接,它使用准备好使用的适当GIS对象和坐标来解析和检索数据

最终Npgsql已经在做了,但由于我没有看到任何示例,我不知道如何解析空间数据

更新1

我完全误解了它的工作原理。当我选中reader[0].GetType()时,我意识到Npgsql已经在根据NpgsqlTypes解析和创建适当的对象

这就解决了我的问题。

Npgsql有多种内置功能,包括
postgistgeometry
。有关类方法,请参见(例如)


除此之外,还有各种各样的功能。例如

var queryString: String := 'select ST_AsText(wkb_geometry) as geom from link';

将以可读的格式返回几何体。有几种格式或方法可以将单个坐标作为
double
值获取。

是的,但是我试图避免使用这些函数,因为在大型数据库中,这是有成本的。我的问题是如何使用Npgsql并从WKB检索此信息。@EduardoE如果您想要十六进制编码的EWKB或其他几何输出,成本是相同的;数据库有多大也无关紧要。对于客户端的几何图形,您想做什么也不清楚,所以您应该用这个更新您的问题。
var queryString: String := 'select ST_AsText(wkb_geometry) as geom from link';