从名为 Field 的模型开始,其中包含名为“多边形”的列(笛卡尔坐标为数组),我想使用 RGeo 计算以公顷为单位的面积:
class Field < ApplicationRecord
def area
factory = RGeo::Cartesian.factory(srid: 4326)
polygon = factory.polygon(self.polygon)
polygon.area
end
end
不幸的是,我总是收到此错误消息:
NoMethodError (undefined method `factory' for #<Array:0x0000aaaac742b9a0>)
我正在使用rgeo 3.0.0
听起来你正在向工厂传递一个点数组(它们本身是整数数组?),但是
rgeo
文档指定了一种不同的方式来准备#polygon
的参数:
pt1 = factory.point(1, 1, 1)
pt2 = factory.point(1, 2, 1)
pt3 = factory.point(2, 2, 1)
pt4 = factory.point(2, 1, 1)
ring = factory.linear_ring([pt1, pt2, pt3, pt4, pt1])
polygon = factory.polygon(ring)
p polygon.area
# => 1.0