【问题标题】:How to check 3D coordinates against 3D bounding box in PostGIS?如何在 PostGIS 中根据 3D 边界框检查 3D 坐标?
【发布时间】:2016-08-23 15:06:32
【问题描述】:

我会想象明显的查询是:

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

但这会导致

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

相对于t

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

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

【问题讨论】:

    标签: postgresql gis postgis


    【解决方案1】:

    经过一个小时的谷歌搜索,我终于在 postgis-devel 邮件列表中找到了一个 e-mail conversation

    我们的箱子都坏了。 应该在某个地方有一个 wiki 页面或股票代码或类似的东西 改善情况的选项。

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-23
      • 1970-01-01
      • 2021-05-28
      • 2013-04-01
      • 2019-09-30
      • 2021-09-14
      • 2019-06-18
      • 2018-07-07
      • 1970-01-01
      相关资源
      最近更新 更多