将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 测试的几何形状,看来它们由于各种原因而失败。有些可能违反了绕圈顺序,而其他一些我看不出确切的问题。但关键是,这些都是我们以前能够使用的几何图形,现在正在引发错误。我想了解我们如何才能回到更宽松的模式。
笔记:
- 这只发生在我的 Macbook(GEOS 版本 3.8.0)上,而不发生在我们的 Linux 生产服务器(GEOS 版本 3.5.0)上
参考: