【发布时间】:2015-12-20 22:19:43
【问题描述】:
我在 SQL (Teradata) 中有以下问题。我在网格上得到了一系列(数千个)重叠的矩形。有没有一种有效的方法来存储矩形数据,以便只使用 SQL,我可以为每个点计算包含它的矩形数量?在某些情况下,我们谈论的是数千个矩形和数百万个点。一个小规模的例子:
在 5x5 网格上,在 (1,1,4,4) 和 (2,2,5,5) 处有两个坐标为 (x1,y1,x2,y2) 的矩形,生成的矩阵将是
11110
12221
12221
01111
我将如何使用 sql 进行计算?最终的数据格式将是一个包含“x”、“y”和“count”列的表格,其中 count 表示矩阵中 x,y 处的值
【问题讨论】:
-
您听说过 OGC 简单功能标准吗?它定义了在关系数据库中存储空间数据的通用模型。我记得使用 PostGIS,它是 Postgres 标准的实现,并且有内置函数可以完全满足您的要求(查找包含在其中的元素、交叉点等)。我对 Teradata 了解不多,但this article 表示它符合标准。