如何在Rails中存储房间形状数据?

时间:2012-06-30 00:59:00

标签: ruby-on-rails gis polygon

我正在编写一个Rails应用程序,需要存储表示公共空间平面图的形状数据。这些空间大多是教堂和音乐厅。许多形状将非常简单(“粉丝”或“鞋盒”),但有些会更复杂(例如like this)。

我是Rails的新手,对GIS应用程序来说还是全新的。 (这是一个GIS问题吗?我不确定。)

有人可以建议我应该使用哪种数据类型将此信息存储在我的数据库中吗?房间形状应该存储为多边形吗?或者是否有更合适的数据类型,例如可以更准确地表示some venues中找到的曲面?

1 个答案:

答案 0 :(得分:1)

这可能不是最有效的方法,但您可以从定义一些模型开始,例如:

class Path
    has_many :nodes
end

class Node
    attr_accessible :x, :y, :next_id
    belongs_to :next, class_name: 'Node'
    has_one :arc_extension
end

class ArcExtension
    attr_accessible :radius, :x1, :y1, :x2, :y2
    belongs_to :node
end

路径只是节点的集合。每个节点将存储路径上一个点的坐标以及路径中下一个节点的id。如果希望节点表示弧的开头,则可以为该节点创建弧延伸。 arc_extension可以存储弧的半径以及构造弧所需的两个参考点。有关如何定义这些参考点的参考,您可以查看HTML5画布中使用的arcTo方法:http://dbp-consulting.com/tutorials/canvas/CanvasArcTo.html

如果要表示其他类型的弯曲路径(例如Bezier曲线),您应该能够稍微改变一下这个方法。