繁体   English   中英

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

[英]Simple example on how to use Npgsql spatial types

使用程序集版本Npgsql.3.1.0-alpha6

我在Postgre中有一个带有Geometry(几何)字段的表。 数据有效。 与数据库的连接工作正常。 PostGre版本9.5

我编写了以下代码(由于使用类似于C#的Oxygene完成了代码,因此将其视为伪代码,我希望得到C#的答案):

  var connectionString: String := 'Server=192.168.0.11;User id=postgres;Password=password;Database=db';
  var queryString: String := 'select wkb_geometry as geom from link';

  using connection: NpgsqlConnection := new NpgsqlConnection(connectionString) do begin
    var command: NpgsqlCommand  := new NpgsqlCommand(queryString, connection);
    try
      connection.Open();
      var reader: NpgsqlDataReader := command.ExecuteReader();

      while reader.Read() do begin
        Console.WriteLine(' {0} {1}', reader[0].GetType(), reader[0].ToString() );
      end;

  reader.Close();

  except
  on ex: Exception do begin
    Console.WriteLine(ex.Message);
  end;
  end;
  Console.ReadLine();
end;  

此代码有效,并向我展示了来自“几何”字段的二进制数据的ascii HEX表示形式。

我制作了一个Win32软件,从PostGIS检索EWKB,然后解析“几何”字段的HEX数据。 这样,我检索了每个数据以导出为另一种格式。

然后,我使用了Microsoft ADO连接,它使用适当的GIS对象解析并检索了数据,并准备好使用坐标。

最终Npgsql已经在执行此操作,但是由于我没有看到任何示例,因此我不知道如何获取空间数据。

更新1

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

那解决了我的问题。

Npgsql具有各种内置的类型映射 ,包括PostgisGeometry 有关类方法,请参见(例如) src/Npgsql/NpgsqlTypes/PostgisTypes.cs


否则,存在各种几何图形输出几何图形访问功能。 例如

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

将以人类可读的熟知文本(WKT)返回几何。 有几种格式或方法可以将单个坐标作为double值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM