在 Ruby on Rails 中使用 RGeo 计算多边形面积

问题描述 投票:0回答:1

从名为 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

ruby-on-rails rgeo
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.