PostgreSql Rectangle DataType 用于存储 Left、Top、Width 和 Height
Posted
技术标签:
【中文标题】PostgreSql Rectangle DataType 用于存储 Left、Top、Width 和 Height【英文标题】:PostgreSql Rectangle DataType for storing Left, Top, Width and Height 【发布时间】:2016-08-14 17:06:02 【问题描述】:我正在尝试在表格中存储一个矩形。
目前我有 4 个单独的列:
顶部 左 宽度 身高我注意到 PostgreSql 提供了一个名为 box 的数据类型。
但是,此数据类型会根据以下条件自动重新排序值:
可以在输入时提供任意两个对角,但这些值将根据需要重新排序,以按该顺序存储右上角和左下角。
我尝试将 box 数据类型用于矩形,但如前所述,它有时会混合使用右上和左下,因此它不适合存储顶部、左侧、宽度和高度。
我正在编写一个处理这些值的 C# 应用程序。因此,如果我有一个等效于 C# Rectangle 类型的数据类型,那就太好了。
我想知道如何实现矩形/矩形数据类型。甚至可以根据四个整数(数组[4])编写自己的数据类型?
【问题讨论】:
什么不适用于您当前的解决方案? @Renzo 它混合了基于左下角和右上角的值 - 在处理矩形内的负值时很烦人。我也无法将其转换为原生 C# Rectangle 类型。我编辑了问题。 【参考方案1】:它不会混合点,它首先将它们与右上角的值一起存储。如果需要,您只需阅读这些内容并自己计算出其他 2 点。
这并不是很复杂的东西 - 至少您可以读取顶部/右侧点并获取顶部值,以及底部/左侧点并获取左侧点以获得您想要的顶部/左侧点。同样,阅读宽度正好是右减左。
【讨论】:
我正在编写一个处理这些值的 C# 应用程序。因此,如果我有一个等效于 C# Rectangle 类型的数据类型,那就太好了。我编辑了问题以使其更清楚。 如果坐标原点在屏幕的左下角,那么从优化的索引机制中将两个最大的数字存储在一起是很有意义的。你必须在你的 C# 代码中编写一个外观来转换,或者用新的 C# 数据类型替换你的 Rects。 感谢您提供这些知识。它为我节省了一些工作。我需要存储 pdf 裁剪的裁剪坐标。 PDF 的原点位于左下角,我需要按以上是关于PostgreSql Rectangle DataType 用于存储 Left、Top、Width 和 Height的主要内容,如果未能解决你的问题,请参考以下文章
在离散尺度上加宽 ggplot2 中的 geom_rect()-rectangle