【发布时间】:2020-03-18 15:32:43
【问题描述】:
在将rgeo gem 从 0.6.0 升级到 2.1.1 之后,我们开始对某些以前从未给我们造成问题的几何图形进行“LinearRing 环测试失败”。 (几何数据是从我们无法控制的外部来源生成的,并存储在 PostGIS 表中。)
rgeo 初始化器:
GEO_FACTORY = RGeo::Geographic.simple_mercator_factory
PROJECTION_FACTORY = GEO_FACTORY.projection_factory
RGeo::ActiveRecord::SpatialFactoryStore.instance.tap do |config|
config.default = PROJECTION_FACTORY
end
示例代码:
district = District.first
# Convert projected geometry to geographic geometry
geographic_geometry = GEO_FACTORY.unproject(district.geometry)
RGeo::Error::InvalidGeometry: LinearRing 环测试失败
我也尝试使用以下选项初始化工厂,但错误仍然存在:
FACTORY = RGeo::Geographic.simple_mercator_factory(uses_lenient_assertions:true)
FACTORY = RGeo::Geographic.simple_mercator_factory(lenient_multi_polygon_assertions:true)
我检查了其中一些未能通过 LinearRing 测试的几何形状,并且似乎由于各种原因它们未能通过。有些人可能违反ring winding order,而其他人我看不出确切的问题。但关键是,这些都是我们之前能够使用的几何图形,现在正在引发错误。我想了解我们如何才能回到更宽松的模式。
注意事项:
- 这只发生在我的 Macbook(GEOS 版本 3.8.0)上,而不是我们的 Linux 生产服务器(GEOS 版本 3.5.0)上
参考:
【问题讨论】:
标签: ruby-on-rails ruby postgis geos rgeo