我正在编写一个Rails应用程序,该应用程序需要存储代表公共空间平面图的形状数据。这些空间主要是教堂和音乐厅。许多形状将非常简单("风扇"或"鞋盒"),但有些形状会更复杂(例如像这样)。
我对 Rails 相当陌生,对 GIS 应用程序完全陌生。(这是 GIS 问题吗? 我不确定。
谁能建议我应该使用哪种数据类型来将此信息存储在我的数据库中? 房间形状是否应存储为多边形? 或者是否有更合适的数据类型,例如可以更准确地表示在某些场所发现的曲面的数据类型?
这可能不是最有效的方法,但您可以从定义一些模型开始,例如:
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 。
如果要表示其他类型的曲线路径(如贝塞尔曲线),您应该能够稍微更改此方法。