首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NetTopologySuite的npgsql不能写入三维点

使用NetTopologySuite的npgsql不能写入三维点
EN

Stack Overflow用户
提问于 2018-10-08 08:21:32
回答 2查看 598关注 0票数 0

我试图使用带有NetTopologySuite的npgsql将一个3d点(和linestring)写入数据库表。我使用的是上一个版本(4.0.3),显然已经解决了#1906问题。我的代码:

代码语言:javascript
复制
        NpgsqlConnection conn = new NpgsqlConnection ( "Host=localhost;Port=5433;Username=test;Password=test;Database=maindb" );
        conn.Open();
        conn.TypeMapper.UseNetTopologySuite( handleOrdinates: Ordinates.XYZ );
        NpgsqlCommand cmd = new NpgsqlCommand ( "INSERT INTO public.testtable (position) VALUES (@position)", conn );
        cmd.Parameters.Add ( "position", NpgsqlDbType.Geometry );
        NetTopologySuite.Geometries.Point pp = new NetTopologySuite.Geometries.Point ( 1, 2, 3 );
        cmd.Parameters["position"].Value = pp;
        cmd.ExecuteNonQuery();

但是这不起作用,因为在表中插入一个平面的2D点。

我正在使用这个版本的包:

  • Npgsql v4.0.3
  • Npgsql.NetTopologySuite v1.0.2
  • NetTopologySuite v1.15.1
  • NetTopologySuite.IO.PostGis v1.15.0
  • GeoApi.Core v1.7.5

配置是否有问题,或者我需要做一些其他的事情来使3D点工作?

P.S.:我找到了一个可行的解决办法,但真诚地说,这似乎很丑陋:

代码语言:javascript
复制
        NpgsqlConnection conn = new NpgsqlConnection ( "Host=localhost;Port=5433;Username=test;Password=test;Database=maindb" );
        conn.Open();
        conn.TypeMapper.UseNetTopologySuite( handleOrdinates: Ordinates.XYZ );
        NpgsqlCommand cmd = new NpgsqlCommand ( "INSERT INTO public.testtable (position) VALUES (@position)", conn );
        cmd.Parameters.Add ( "position", NpgsqlDbType.Text );
        NetTopologySuite.Geometries.Point pp = new NetTopologySuite.Geometries.Point ( 1, 2, 3 );
        cmd.Parameters["position"].Value = pp.ToString();
        cmd.ExecuteNonQuery();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-07 08:21:15

好的,最近一次发布的Npgsql (4.0.4)和Npgsql.NetTopologySuite (4.0.4)已经解决了问题

票数 0
EN

Stack Overflow用户

发布于 2018-11-19 13:17:33

似乎您忘了将Ordinates.XYZ传递给UseNetTopologySuite(),如Npgsql文档所示

代码语言:javascript
复制
conn.TypeMapper.UseNetTopologySuite(handleOrdinates: Ordinates.XYZ);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52698129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档