如何在PostGIS中检查3D边界框的3D坐标?

时间:2016-08-23 15:06:33

标签: postgresql gis postgis

我会想象显而易见的问题是:

postgres=# SELECT ST_GeomFromText( 'POINT( 1 2 3 )' ) &&&
                  'BOX3D( -5 -5 -5, 5 5 5 )'::box3d;

但这会导致

 ?column?
----------
 f

t相反。

查询似乎完全丢失了边界框中的z坐标。这也会导致以下问题:z = 1到z = 2的边界框将返回t以获得z = 0处的点:

galaxymap=# SELECT ST_GeomFromText( 'POINT( 0 0 0 )' ) &&&
                   'BOX3D( -1 -1 1, 1 1 2 )'::box3d;
 ?column?
----------
 t
(1 row)

1 个答案:

答案 0 :(得分:1)

经过一个小时的谷歌搜索后,我终于发现了postgis-devel邮件列表上的e-mail conversation

  

我们的盒子都破了。   应该有一个维基页面或自动收报机或某些东西   改善情况的选择。

建议的解决方法似乎是使用线条(或绑定对角线,我没有尝试过):

SELECT ST_MakePoint( 1, 2, 3 ) &&& ST_MakeLine(
           ST_MakePoint( -10, -10, -10 ), ST_MakePoint( 10, 10, 10 ) );
 ?column?
----------
 t