2016-08-23 1 views
0

ich hätte die offensichtliche Abfrage gedacht war:Wie überprüft man 3D-Koordinaten gegen 3D-Bounding-Box in PostGIS?

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

Aber dies führt zu

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

zu t Im Gegensatz.

Die Abfrage scheint die Z-Koordinate aus der Bounding Box vollständig zu verlieren. Dies führt auch in der folgenden Ausgabe, in der ein Begrenzungsrahmen von z = 1 bis z im Bereich = 2 wird bei z = 0 t für einen Punkt zurück:

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

Antwort

1

Nach einer Stunde war ich zufällig schließlich googeln auf ein e-mail conversation auf die Mailingliste postgis-devel.

Unsere Boxen sind alle kaputt. Es sollte irgendwo eine Wiki-Seite oder einen Ticker oder etwas über Optionen geben, um die Situation zu verbessern.

Die vorgeschlagene Abhilfe scheint mit Linien (oder Begrenzungs Diagonalen, die ich versuchte nicht) zu sein:

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