Actualmente estamos investigando PostGIS como una opción para buscar en tres dimensiones de los bloques que contienen un punto (y más tarde también las líneas). En este momento no puedo ver ninguna funcionalidad que opera en el volumen de una forma tridimensional, todas las funciones de PostGIS ofrece parecen operar en la superficie.
Aquí hay una serie de funciones que hemos probado:
SELECT
ST_Contains(p , mpoly), ST_Contains(p , ph), ST_Contains(p , box),
ST_3DIntersects(p , mpoly), ST_3DIntersects(p , ph), ST_3DIntersects(p , box),
ST_3DDWithin(p , mpoly, 0), ST_3DDWithin(p , ph, 0), ST_3DDWithin(p , box, 0)
FROM
(SELECT
'POINT Z (0.5 0.5 0.5)'::geometry AS p,
'MULTIPOLYGON Z (
((0 0 0, 0 1 0, 1 1 0, 0 1 0, 0 0 0)),
((0 0 1, 0 1 1, 1 1 1, 0 1 1, 0 0 1)),
((0 0 0, 0 0 1, 0 1 1, 0 0 1, 0 0 0)),
((1 0 0, 1 0 1, 1 1 1, 1 0 1, 1 0 0)),
((0 0 0, 0 0 1, 1 0 1, 1 0 0, 0 0 0)),
((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0))
)'::geometry AS mpoly,
'POLYHEDRALSURFACE (
((0 0 0, 0 1 0, 1 1 0, 0 1 0, 0 0 0)),
((0 0 1, 0 1 1, 1 1 1, 0 1 1, 0 0 1)),
((0 0 0, 0 0 1, 0 1 1, 0 0 1, 0 0 0)),
((1 0 0, 1 0 1, 1 1 1, 1 0 1, 1 0 0)),
((0 0 0, 0 0 1, 1 0 1, 1 0 0, 0 0 0)),
((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0))
)'::geometry AS ph,
ST_3DMakeBox('POINT Z (0 0 0)'::geometry, 'POINT Z (1 1 1)'::geometry) AS box
) AS foo
;
Todos estos devolver false. Dado que estamos utilizando polígonos y superficies poliédricas esto parece correcto, pero hay una manera de tener PostGIS aplicar volumétrica cálculos?