【问题标题】:Trouble inserting multipolygon into postgres db with postgis extension使用 postgis 扩展将多面体插入 postgres db 时遇到问题
【发布时间】:2017-12-15 20:57:47
【问题描述】:

我有安装了 postgis 2.4 扩展的 postgres 10。

db.none(`INSERT INTO resto_poly_sub (foo, bar geom) VALUES $1 $2, 
ST_Force2D(ST_GeomFromGeoJSON($3))`, restoPolyArray)

以上不是完整的代码,但我尝试将其最小化。

我正在使用它来将我的数据插入到数据库中。它适用于点,但不适用于 MultiPolygons 或 MultiLineStrings。它会将所有数据插入到数据库中而不会出现错误,但是当我使用 select 语句检索数据时,它会返回一个空的几何值。

正在插入的数据,正在从传单中提取。

[
   {
      type: 'Feature',
      properties: {
         foo: 17000,
         bar: null
         geom: {
            type: 'MultiPolygon',
            coordinates: [
               [
                  [ -115.35644531250001, 37.4364847574233 ],
                  [ -115.33447265625001, 36.950769770175164 ],
                  [ -114.69726562500001, 37.08673426633463 ],
                  [ -114.70825195312501, 37.27929803862557 ],
                  [ -115.35644531250001, 37.4364847574233 ]
               ]
            ], 
            crs: [Object]
         }
      }
   }
]

我只是插入属性。

【问题讨论】:

  • 提前感谢各位的帮助
  • resto_point_sub 表的定义是什么?几何的列类型是什么?来自 PostGIS 的错误是什么?你读过GeoJSON standard吗?
  • @IvanSanchez 没有错误。它将插入到表中,但检索时值变为空。
  • CREATE TABLE resto_poly_sub { foo integer NOT NULL, bar numeric(10,0), geom geometry(MultiPolygon) }
  • 尝试创建没有任何几何类型的表几何列。

标签: postgresql leaflet postgis


【解决方案1】:

我想通了。我在我的数据库中插入了一个多边形而不是一个多边形,所以它会由于某种原因导致它变空。

我用过这个ST_Force2D(ST_Multi(ST_GeomFromGeoJSON(geom)))

特别是 ST_Multi() 函数为我转换它。

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 2022-10-13
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2021-10-06
    相关资源
    最近更新 更多