2012-12-09 37 views
2

如何使用PostGIS适配器为Rails保存多边形?在我的模型,我有:使用PostGIS/RGeo无法保存多边形

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 

如何我可以得到这个工作吗?

回答

6

这是无效的WKT,不能解析的原因有两个:

  1. 没有戒指。您需要围绕坐标数组添加另一组圆括号。
  2. 戒指未关闭。重复起点作为终点。

这是有效的WKT应该是什么样子:

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

谢谢,成功了! – Avishai

2

在纯PostGIS中,此多边形将生成geometry contains non-closed rings错误。尽量“接近”多边形(增加第一点结束)