通过PostGIS的边界框选择


12

我在PostGIS数据库中有一个很大的数据集。我正在通过将数据加载为GeoJSON的Web界面查看它。太多的数据无法一次全部提供给客户端(价值10兆MB ...),所以我想在由窗口边缘形成的边界框内获得一个数据区域(下图中的虚线) )。获取点f和g的坐标很容易。

问题1:这是做事的好方法吗?我应该考虑将它们缓存为图块还是此方法可能足够有效?

问题2:如何仅检索此边界框中的数据?

问题3:如果形状与边界框的边缘重叠(例如下面的形状A),是否有一种简单的方法可以像在第二幅图像中一样查询它时对其进行裁剪?

在此处输入图片说明


您正在客户端上运行哪个查看器?
Underdark

Mapstraction。我目前正在使用OpenLayers作为提供程序。
Mr_Chimp

Answers:


8

只需更改问题的顺序,您就会有一个过程:

2)仅选择与bbox相交的内容(ST_Intersects)。
3)将其与bbox相交以裁剪多边形(ST_Intersection)。
1)使用结果(CREATE TABLE newtable AS SELECT...)创建一个新表。

ST_Intersection文档包含一个代码示例。您将需要对其进行调整,并使用ST_PolygonFromText作为bbox。


4

我认为大多数(所有)网络客户端(以及桌面gis)都在这样做。您无法发送整个数据集。

是否应该设置某种缓存取决于您的数据是静态变化还是正在变化。

要进行此边界框检查,获取数据将非常快(如果您有空间索引),但是当然它不是免费的。您将使用一些cpu功能进行支付。

如前所述:使用ST_Intersects在范围内查找多边形。

要仅获取扩展区中的部分,请使用ST_Intersection,但不要这样做。ST_Intersection是一个昂贵的过程。除非您有非常大的多边形,否则我认为最好发送整个多边形。

但我想您想即时执行此操作,而不是将其放在桌子上

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.