无法使用PostGIS / RGeo保存多边形

时间:2012-12-09 18:04:26

标签: ruby-on-rails postgresql postgis

如何使用适用于Rails的PostGIS适配器保存多边形?在我的模型中,我有:

self.rgeo_factory_generator = RGeo::Geos.factory_generator
set_rgeo_factory_for_column(:bounds, RGeo::Geographic.spherical_factory(:srid => 4326))

但是当我尝试将多边形保存到数据库时,它不会引发任何错误,但始终无法存储多边形:

1.9.3p194 :011 > n.bounds = "POLYGON(-149.737965876574 61.1952881991104, -149.71848377896 61.1953198415937, -149.718483761252 61.1952938698801, -149.718483872402 61.1951924591105)"
 => "POLYGON(-149.737965876574 61.1952881991104, -149.71848377896 61.1953198415937, -149.718483761252 61.1952938698801, -149.718483872402 61.1951924591105)" 
1.9.3p194 :012 > n.save
   (0.2ms)  BEGIN
   (0.3ms)  COMMIT
 => true 
1.9.3p194 :013 > n.bounds
 => nil 

我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:6)

它无效WKT,无法解析,原因有两个:

  1. 没有戒指。您需要在坐标数组周围添加另一组括号。
  2. 戒指未关闭。重复起点作为终点。
  3. 这就是有效的WKT应该是这样的:

    POLYGON((-149.737965876574 61.1952881991104, -149.71848377896 61.1953198415937, -149.718483761252 61.1952938698801, -149.718483872402 61.1951924591105, -149.737965876574 61.1952881991104))
    

答案 1 :(得分:2)

在纯PostGIS中,此多边形将生成geometry contains non-closed rings错误。尝试"关闭"多边形(在末尾添加第一个点)