2016-08-23 9 views
0

я бы представил себе очевидный вопрос был:Как проверить 3D-координаты против 3D-рамки в PostGIS?

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

Но это приводит к

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

В отличие от t.

Запрос, кажется, полностью утрачивает z-координату из ограничительной рамки. Это также приводит к следующему вопросу, где ограничивающий прямоугольник в пределах от г = 1 г = 2 будет возвращать t для точки при г = 0:

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

ответ

1

После часа прибегая к помощи я наконец наткнулся на e-mail conversation на список рассылки postgis-devel.

Наши коробки все сломаны. Должно быть где-то вики-страница или тикер или около вариантов улучшения ситуации.

Предлагаемые обходные, как представляется, с использованием линий (или ограничивающей диагоналей, которые я не пробовал):

SELECT ST_MakePoint(1, 2, 3) &&& ST_MakeLine(
      ST_MakePoint(-10, -10, -10), ST_MakePoint(10, 10, 10)); 
?column? 
---------- 
t 
Смежные вопросы