------+---------
| (1,1)
| (2,2)
+ | (-5,-4)
| (2.5,3)
| (3,3)
-(4 rows)
+(5 rows)
SELECT '' AS four, (@@ f1) AS center
FROM BOX_TBL;
------+---------
| (1,1)
| (2,2)
+ | (-5,-4)
| (2.5,3)
| (3,3)
-(4 rows)
+(5 rows)
SELECT '' AS six, point(f1) AS center
FROM CIRCLE_TBL;
| (1,2)
| (100,200)
| (100,1)
-(6 rows)
+ | (3,5)
+ | (3,5)
+(8 rows)
SELECT '' AS six, (@@ f1) AS center
FROM CIRCLE_TBL;
| (1,2)
| (100,200)
| (100,1)
-(6 rows)
+ | (3,5)
+ | (3,5)
+(8 rows)
SELECT '' AS two, (@@ f1) AS center
FROM POLYGON_TBL
-----+-------------------------------
| (1.33333333333,1.33333333333)
| (2.33333333333,1.33333333333)
-(2 rows)
+ | (4,5)
+ | (4,5)
+ | (4,3)
+(5 rows)
-- "is horizontal" function
SELECT '' AS two, p1.f1
FROM POINT_TBL p1
WHERE ishorizontal(p1.f1, point '(0,0)');
- two | f1
------+---------
+ two | f1
+-----+------------------
| (0,0)
| (-10,0)
-(2 rows)
+ | (1e-300,-1e-300)
+(3 rows)
-- "is horizontal" operator
SELECT '' AS two, p1.f1
FROM POINT_TBL p1
WHERE p1.f1 ?- point '(0,0)';
- two | f1
------+---------
+ two | f1
+-----+------------------
| (0,0)
| (-10,0)
-(2 rows)
+ | (1e-300,-1e-300)
+(3 rows)
-- "is vertical" function
SELECT '' AS one, p1.f1
| (5.1,34.5)
(1 row)
+-- Slope
+SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
+ f1 | f1 | slope
+-------------------+-------------------+--------------------
+ (0,0) | (0,0) | 1.79769313486e+308
+ (0,0) | (-10,0) | 0
+ (0,0) | (-3,4) | -1.33333333333
+ (0,0) | (5.1,34.5) | 6.76470588235
+ (0,0) | (-5,-12) | 2.4
+ (0,0) | (1e-300,-1e-300) | 1.79769313486e+308
+ (0,0) | (1e+300,Infinity) | Infinity
+ (0,0) | (NaN,NaN) | NaN
+ (0,0) | (10,10) | 1
+ (-10,0) | (0,0) | 0
+ (-10,0) | (-10,0) | 1.79769313486e+308
+ (-10,0) | (-3,4) | 0.571428571429
+ (-10,0) | (5.1,34.5) | 2.28476821192
+ (-10,0) | (-5,-12) | -2.4
+ (-10,0) | (1e-300,-1e-300) | 0
+ (-10,0) | (1e+300,Infinity) | Infinity
+ (-10,0) | (NaN,NaN) | NaN
+ (-10,0) | (10,10) | 0.5
+ (-3,4) | (0,0) | -1.33333333333
+ (-3,4) | (-10,0) | 0.571428571429
+ (-3,4) | (-3,4) | 1.79769313486e+308
+ (-3,4) | (5.1,34.5) | 3.76543209877
+ (-3,4) | (-5,-12) | 8
+ (-3,4) | (1e-300,-1e-300) | -1.33333333333
+ (-3,4) | (1e+300,Infinity) | Infinity
+ (-3,4) | (NaN,NaN) | NaN
+ (-3,4) | (10,10) | 0.461538461538
+ (5.1,34.5) | (0,0) | 6.76470588235
+ (5.1,34.5) | (-10,0) | 2.28476821192
+ (5.1,34.5) | (-3,4) | 3.76543209877
+ (5.1,34.5) | (5.1,34.5) | 1.79769313486e+308
+ (5.1,34.5) | (-5,-12) | 4.60396039604
+ (5.1,34.5) | (1e-300,-1e-300) | 6.76470588235
+ (5.1,34.5) | (1e+300,Infinity) | Infinity
+ (5.1,34.5) | (NaN,NaN) | NaN
+ (5.1,34.5) | (10,10) | -5
+ (-5,-12) | (0,0) | 2.4
+ (-5,-12) | (-10,0) | -2.4
+ (-5,-12) | (-3,4) | 8
+ (-5,-12) | (5.1,34.5) | 4.60396039604
+ (-5,-12) | (-5,-12) | 1.79769313486e+308
+ (-5,-12) | (1e-300,-1e-300) | 2.4
+ (-5,-12) | (1e+300,Infinity) | Infinity
+ (-5,-12) | (NaN,NaN) | NaN
+ (-5,-12) | (10,10) | 1.46666666667
+ (1e-300,-1e-300) | (0,0) | 1.79769313486e+308
+ (1e-300,-1e-300) | (-10,0) | 0
+ (1e-300,-1e-300) | (-3,4) | -1.33333333333
+ (1e-300,-1e-300) | (5.1,34.5) | 6.76470588235
+ (1e-300,-1e-300) | (-5,-12) | 2.4
+ (1e-300,-1e-300) | (1e-300,-1e-300) | 1.79769313486e+308
+ (1e-300,-1e-300) | (1e+300,Infinity) | Infinity
+ (1e-300,-1e-300) | (NaN,NaN) | NaN
+ (1e-300,-1e-300) | (10,10) | 1
+ (1e+300,Infinity) | (0,0) | Infinity
+ (1e+300,Infinity) | (-10,0) | Infinity
+ (1e+300,Infinity) | (-3,4) | Infinity
+ (1e+300,Infinity) | (5.1,34.5) | Infinity
+ (1e+300,Infinity) | (-5,-12) | Infinity
+ (1e+300,Infinity) | (1e-300,-1e-300) | Infinity
+ (1e+300,Infinity) | (1e+300,Infinity) | 1.79769313486e+308
+ (1e+300,Infinity) | (NaN,NaN) | NaN
+ (1e+300,Infinity) | (10,10) | Infinity
+ (NaN,NaN) | (0,0) | NaN
+ (NaN,NaN) | (-10,0) | NaN
+ (NaN,NaN) | (-3,4) | NaN
+ (NaN,NaN) | (5.1,34.5) | NaN
+ (NaN,NaN) | (-5,-12) | NaN
+ (NaN,NaN) | (1e-300,-1e-300) | NaN
+ (NaN,NaN) | (1e+300,Infinity) | NaN
+ (NaN,NaN) | (NaN,NaN) | NaN
+ (NaN,NaN) | (10,10) | NaN
+ (10,10) | (0,0) | 1
+ (10,10) | (-10,0) | 0.5
+ (10,10) | (-3,4) | 0.461538461538
+ (10,10) | (5.1,34.5) | -5
+ (10,10) | (-5,-12) | 1.46666666667
+ (10,10) | (1e-300,-1e-300) | 1
+ (10,10) | (1e+300,Infinity) | Infinity
+ (10,10) | (NaN,NaN) | NaN
+ (10,10) | (10,10) | 1.79769313486e+308
+(81 rows)
+
+-- Add point
+SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
+ f1 | f1 | ?column?
+-------------------+-------------------+-------------------
+ (0,0) | (0,0) | (0,0)
+ (0,0) | (-10,0) | (-10,0)
+ (0,0) | (-3,4) | (-3,4)
+ (0,0) | (5.1,34.5) | (5.1,34.5)
+ (0,0) | (-5,-12) | (-5,-12)
+ (0,0) | (1e-300,-1e-300) | (1e-300,-1e-300)
+ (0,0) | (1e+300,Infinity) | (1e+300,Infinity)
+ (0,0) | (NaN,NaN) | (NaN,NaN)
+ (0,0) | (10,10) | (10,10)
+ (-10,0) | (0,0) | (-10,0)
+ (-10,0) | (-10,0) | (-20,0)
+ (-10,0) | (-3,4) | (-13,4)
+ (-10,0) | (5.1,34.5) | (-4.9,34.5)
+ (-10,0) | (-5,-12) | (-15,-12)
+ (-10,0) | (1e-300,-1e-300) | (-10,-1e-300)
+ (-10,0) | (1e+300,Infinity) | (1e+300,Infinity)
+ (-10,0) | (NaN,NaN) | (NaN,NaN)
+ (-10,0) | (10,10) | (0,10)
+ (-3,4) | (0,0) | (-3,4)
+ (-3,4) | (-10,0) | (-13,4)
+ (-3,4) | (-3,4) | (-6,8)
+ (-3,4) | (5.1,34.5) | (2.1,38.5)
+ (-3,4) | (-5,-12) | (-8,-8)
+ (-3,4) | (1e-300,-1e-300) | (-3,4)
+ (-3,4) | (1e+300,Infinity) | (1e+300,Infinity)
+ (-3,4) | (NaN,NaN) | (NaN,NaN)
+ (-3,4) | (10,10) | (7,14)
+ (5.1,34.5) | (0,0) | (5.1,34.5)
+ (5.1,34.5) | (-10,0) | (-4.9,34.5)
+ (5.1,34.5) | (-3,4) | (2.1,38.5)
+ (5.1,34.5) | (5.1,34.5) | (10.2,69)
+ (5.1,34.5) | (-5,-12) | (0.1,22.5)
+ (5.1,34.5) | (1e-300,-1e-300) | (5.1,34.5)
+ (5.1,34.5) | (1e+300,Infinity) | (1e+300,Infinity)
+ (5.1,34.5) | (NaN,NaN) | (NaN,NaN)
+ (5.1,34.5) | (10,10) | (15.1,44.5)
+ (-5,-12) | (0,0) | (-5,-12)
+ (-5,-12) | (-10,0) | (-15,-12)
+ (-5,-12) | (-3,4) | (-8,-8)
+ (-5,-12) | (5.1,34.5) | (0.1,22.5)
+ (-5,-12) | (-5,-12) | (-10,-24)
+ (-5,-12) | (1e-300,-1e-300) | (-5,-12)
+ (-5,-12) | (1e+300,Infinity) | (1e+300,Infinity)
+ (-5,-12) | (NaN,NaN) | (NaN,NaN)
+ (-5,-12) | (10,10) | (5,-2)
+ (1e-300,-1e-300) | (0,0) | (1e-300,-1e-300)
+ (1e-300,-1e-300) | (-10,0) | (-10,-1e-300)
+ (1e-300,-1e-300) | (-3,4) | (-3,4)
+ (1e-300,-1e-300) | (5.1,34.5) | (5.1,34.5)
+ (1e-300,-1e-300) | (-5,-12) | (-5,-12)
+ (1e-300,-1e-300) | (1e-300,-1e-300) | (2e-300,-2e-300)
+ (1e-300,-1e-300) | (1e+300,Infinity) | (1e+300,Infinity)
+ (1e-300,-1e-300) | (NaN,NaN) | (NaN,NaN)
+ (1e-300,-1e-300) | (10,10) | (10,10)
+ (1e+300,Infinity) | (0,0) | (1e+300,Infinity)
+ (1e+300,Infinity) | (-10,0) | (1e+300,Infinity)
+ (1e+300,Infinity) | (-3,4) | (1e+300,Infinity)
+ (1e+300,Infinity) | (5.1,34.5) | (1e+300,Infinity)
+ (1e+300,Infinity) | (-5,-12) | (1e+300,Infinity)
+ (1e+300,Infinity) | (1e-300,-1e-300) | (1e+300,Infinity)
+ (1e+300,Infinity) | (1e+300,Infinity) | (2e+300,Infinity)
+ (1e+300,Infinity) | (NaN,NaN) | (NaN,NaN)
+ (1e+300,Infinity) | (10,10) | (1e+300,Infinity)
+ (NaN,NaN) | (0,0) | (NaN,NaN)
+ (NaN,NaN) | (-10,0) | (NaN,NaN)
+ (NaN,NaN) | (-3,4) | (NaN,NaN)
+ (NaN,NaN) | (5.1,34.5) | (NaN,NaN)
+ (NaN,NaN) | (-5,-12) | (NaN,NaN)
+ (NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN)
+ (NaN,NaN) | (1e+300,Infinity) | (NaN,NaN)
+ (NaN,NaN) | (NaN,NaN) | (NaN,NaN)
+ (NaN,NaN) | (10,10) | (NaN,NaN)
+ (10,10) | (0,0) | (10,10)
+ (10,10) | (-10,0) | (0,10)
+ (10,10) | (-3,4) | (7,14)
+ (10,10) | (5.1,34.5) | (15.1,44.5)
+ (10,10) | (-5,-12) | (5,-2)
+ (10,10) | (1e-300,-1e-300) | (10,10)
+ (10,10) | (1e+300,Infinity) | (1e+300,Infinity)
+ (10,10) | (NaN,NaN) | (NaN,NaN)
+ (10,10) | (10,10) | (20,20)
+(81 rows)
+
+-- Subtract point
+SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
+ f1 | f1 | ?column?
+-------------------+-------------------+---------------------
+ (0,0) | (0,0) | (0,0)
+ (0,0) | (-10,0) | (10,0)
+ (0,0) | (-3,4) | (3,-4)
+ (0,0) | (5.1,34.5) | (-5.1,-34.5)
+ (0,0) | (-5,-12) | (5,12)
+ (0,0) | (1e-300,-1e-300) | (-1e-300,1e-300)
+ (0,0) | (1e+300,Infinity) | (-1e+300,-Infinity)
+ (0,0) | (NaN,NaN) | (NaN,NaN)
+ (0,0) | (10,10) | (-10,-10)
+ (-10,0) | (0,0) | (-10,0)
+ (-10,0) | (-10,0) | (0,0)
+ (-10,0) | (-3,4) | (-7,-4)
+ (-10,0) | (5.1,34.5) | (-15.1,-34.5)
+ (-10,0) | (-5,-12) | (-5,12)
+ (-10,0) | (1e-300,-1e-300) | (-10,1e-300)
+ (-10,0) | (1e+300,Infinity) | (-1e+300,-Infinity)
+ (-10,0) | (NaN,NaN) | (NaN,NaN)
+ (-10,0) | (10,10) | (-20,-10)
+ (-3,4) | (0,0) | (-3,4)
+ (-3,4) | (-10,0) | (7,4)
+ (-3,4) | (-3,4) | (0,0)
+ (-3,4) | (5.1,34.5) | (-8.1,-30.5)
+ (-3,4) | (-5,-12) | (2,16)
+ (-3,4) | (1e-300,-1e-300) | (-3,4)
+ (-3,4) | (1e+300,Infinity) | (-1e+300,-Infinity)
+ (-3,4) | (NaN,NaN) | (NaN,NaN)
+ (-3,4) | (10,10) | (-13,-6)
+ (5.1,34.5) | (0,0) | (5.1,34.5)
+ (5.1,34.5) | (-10,0) | (15.1,34.5)
+ (5.1,34.5) | (-3,4) | (8.1,30.5)
+ (5.1,34.5) | (5.1,34.5) | (0,0)
+ (5.1,34.5) | (-5,-12) | (10.1,46.5)
+ (5.1,34.5) | (1e-300,-1e-300) | (5.1,34.5)
+ (5.1,34.5) | (1e+300,Infinity) | (-1e+300,-Infinity)
+ (5.1,34.5) | (NaN,NaN) | (NaN,NaN)
+ (5.1,34.5) | (10,10) | (-4.9,24.5)
+ (-5,-12) | (0,0) | (-5,-12)
+ (-5,-12) | (-10,0) | (5,-12)
+ (-5,-12) | (-3,4) | (-2,-16)
+ (-5,-12) | (5.1,34.5) | (-10.1,-46.5)
+ (-5,-12) | (-5,-12) | (0,0)
+ (-5,-12) | (1e-300,-1e-300) | (-5,-12)
+ (-5,-12) | (1e+300,Infinity) | (-1e+300,-Infinity)
+ (-5,-12) | (NaN,NaN) | (NaN,NaN)
+ (-5,-12) | (10,10) | (-15,-22)
+ (1e-300,-1e-300) | (0,0) | (1e-300,-1e-300)
+ (1e-300,-1e-300) | (-10,0) | (10,-1e-300)
+ (1e-300,-1e-300) | (-3,4) | (3,-4)
+ (1e-300,-1e-300) | (5.1,34.5) | (-5.1,-34.5)
+ (1e-300,-1e-300) | (-5,-12) | (5,12)
+ (1e-300,-1e-300) | (1e-300,-1e-300) | (0,0)
+ (1e-300,-1e-300) | (1e+300,Infinity) | (-1e+300,-Infinity)
+ (1e-300,-1e-300) | (NaN,NaN) | (NaN,NaN)
+ (1e-300,-1e-300) | (10,10) | (-10,-10)
+ (1e+300,Infinity) | (0,0) | (1e+300,Infinity)
+ (1e+300,Infinity) | (-10,0) | (1e+300,Infinity)
+ (1e+300,Infinity) | (-3,4) | (1e+300,Infinity)
+ (1e+300,Infinity) | (5.1,34.5) | (1e+300,Infinity)
+ (1e+300,Infinity) | (-5,-12) | (1e+300,Infinity)
+ (1e+300,Infinity) | (1e-300,-1e-300) | (1e+300,Infinity)
+ (1e+300,Infinity) | (1e+300,Infinity) | (0,NaN)
+ (1e+300,Infinity) | (NaN,NaN) | (NaN,NaN)
+ (1e+300,Infinity) | (10,10) | (1e+300,Infinity)
+ (NaN,NaN) | (0,0) | (NaN,NaN)
+ (NaN,NaN) | (-10,0) | (NaN,NaN)
+ (NaN,NaN) | (-3,4) | (NaN,NaN)
+ (NaN,NaN) | (5.1,34.5) | (NaN,NaN)
+ (NaN,NaN) | (-5,-12) | (NaN,NaN)
+ (NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN)
+ (NaN,NaN) | (1e+300,Infinity) | (NaN,NaN)
+ (NaN,NaN) | (NaN,NaN) | (NaN,NaN)
+ (NaN,NaN) | (10,10) | (NaN,NaN)
+ (10,10) | (0,0) | (10,10)
+ (10,10) | (-10,0) | (20,10)
+ (10,10) | (-3,4) | (13,6)
+ (10,10) | (5.1,34.5) | (4.9,-24.5)
+ (10,10) | (-5,-12) | (15,22)
+ (10,10) | (1e-300,-1e-300) | (10,10)
+ (10,10) | (1e+300,Infinity) | (-1e+300,-Infinity)
+ (10,10) | (NaN,NaN) | (NaN,NaN)
+ (10,10) | (10,10) | (0,0)
+(81 rows)
+
+-- Multiply with point
+SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] BETWEEN 1 AND 1000;
+ f1 | f1 | ?column?
+------------+-------------------+-----------------------
+ (5.1,34.5) | (0,0) | (0,0)
+ (10,10) | (0,0) | (0,0)
+ (5.1,34.5) | (-10,0) | (-51,-345)
+ (10,10) | (-10,0) | (-100,-100)
+ (5.1,34.5) | (-3,4) | (-153.3,-83.1)
+ (10,10) | (-3,4) | (-70,10)
+ (5.1,34.5) | (5.1,34.5) | (-1164.24,351.9)
+ (10,10) | (5.1,34.5) | (-294,396)
+ (5.1,34.5) | (-5,-12) | (388.5,-233.7)
+ (10,10) | (-5,-12) | (70,-170)
+ (5.1,34.5) | (1e-300,-1e-300) | (3.96e-299,2.94e-299)
+ (10,10) | (1e-300,-1e-300) | (2e-299,0)
+ (5.1,34.5) | (1e+300,Infinity) | (-Infinity,Infinity)
+ (10,10) | (1e+300,Infinity) | (-Infinity,Infinity)
+ (5.1,34.5) | (NaN,NaN) | (NaN,NaN)
+ (10,10) | (NaN,NaN) | (NaN,NaN)
+ (5.1,34.5) | (10,10) | (-294,396)
+ (10,10) | (10,10) | (0,200)
+(18 rows)
+
+-- Underflow error
+SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] < 1;
+ERROR: value out of range: underflow
+-- Divide by point
+SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0] BETWEEN 1 AND 1000;
+ f1 | f1 | ?column?
+-------------------+------------+-------------------------------------------
+ (0,0) | (5.1,34.5) | (0,0)
+ (0,0) | (10,10) | (0,0)
+ (-10,0) | (5.1,34.5) | (-0.0419318237877,0.283656455034)
+ (-10,0) | (10,10) | (-0.5,0.5)
+ (-3,4) | (5.1,34.5) | (0.100883034877,0.101869666025)
+ (-3,4) | (10,10) | (0.05,0.35)
+ (5.1,34.5) | (5.1,34.5) | (1,0)
+ (5.1,34.5) | (10,10) | (1.98,1.47)
+ (-5,-12) | (5.1,34.5) | (-0.361353657935,0.0915100389719)
+ (-5,-12) | (10,10) | (-0.85,-0.35)
+ (1e-300,-1e-300) | (5.1,34.5) | (-2.41724631247e-302,-3.25588278822e-302)
+ (1e-300,-1e-300) | (10,10) | (0,-1e-301)
+ (1e+300,Infinity) | (5.1,34.5) | (Infinity,Infinity)
+ (1e+300,Infinity) | (10,10) | (Infinity,Infinity)
+ (NaN,NaN) | (5.1,34.5) | (NaN,NaN)
+ (NaN,NaN) | (10,10) | (NaN,NaN)
+ (10,10) | (5.1,34.5) | (0.325588278822,-0.241724631247)
+ (10,10) | (10,10) | (1,0)
+(18 rows)
+
+-- Overflow error
+SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0] > 1000;
+ERROR: value out of range: overflow
+-- Division by 0 error
+SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1 ~= '(0,0)'::point;
+ERROR: division by zero
+-- Distance to line
+SELECT p.f1, l.s, p.f1 <-> l.s FROM POINT_TBL p, LINE_TBL l;
+ f1 | s | ?column?
+-------------------+---------------------------------------+--------------------
+ (0,0) | {0,-1,5} | 5
+ (0,0) | {1,0,5} | 5
+ (0,0) | {0,3,0} | 0
+ (0,0) | {1,-1,0} | 0
+ (0,0) | {-0.4,-1,-6} | 5.57086014531
+ (0,0) | {-0.000184615384615,-1,15.3846153846} | 15.3846151224
+ (0,0) | {3,NaN,5} | NaN
+ (0,0) | {NaN,NaN,NaN} | NaN
+ (0,0) | {0,-1,3} | 3
+ (0,0) | {-1,0,3} | 3
+ (-10,0) | {0,-1,5} | 5
+ (-10,0) | {1,0,5} | 5
+ (-10,0) | {0,3,0} | 0
+ (-10,0) | {1,-1,0} | 7.07106781187
+ (-10,0) | {-0.4,-1,-6} | 1.85695338177
+ (-10,0) | {-0.000184615384615,-1,15.3846153846} | 15.3864612763
+ (-10,0) | {3,NaN,5} | NaN
+ (-10,0) | {NaN,NaN,NaN} | NaN
+ (-10,0) | {0,-1,3} | 3
+ (-10,0) | {-1,0,3} | 13
+ (-3,4) | {0,-1,5} | 1
+ (-3,4) | {1,0,5} | 2
+ (-3,4) | {0,3,0} | 4
+ (-3,4) | {1,-1,0} | 4.94974746831
+ (-3,4) | {-0.4,-1,-6} | 8.17059487979
+ (-3,4) | {-0.000184615384615,-1,15.3846153846} | 11.3851690368
+ (-3,4) | {3,NaN,5} | NaN
+ (-3,4) | {NaN,NaN,NaN} | NaN
+ (-3,4) | {0,-1,3} | 1
+ (-3,4) | {-1,0,3} | 6
+ (5.1,34.5) | {0,-1,5} | 29.5
+ (5.1,34.5) | {1,0,5} | 10.1
+ (5.1,34.5) | {0,3,0} | 34.5
+ (5.1,34.5) | {1,-1,0} | 20.7889393669
+ (5.1,34.5) | {-0.4,-1,-6} | 39.4973984303
+ (5.1,34.5) | {-0.000184615384615,-1,15.3846153846} | 19.1163258281
+ (5.1,34.5) | {3,NaN,5} | NaN
+ (5.1,34.5) | {NaN,NaN,NaN} | NaN
+ (5.1,34.5) | {0,-1,3} | 31.5
+ (5.1,34.5) | {-1,0,3} | 2.1
+ (-5,-12) | {0,-1,5} | 17
+ (-5,-12) | {1,0,5} | 0
+ (-5,-12) | {0,3,0} | 12
+ (-5,-12) | {1,-1,0} | 4.94974746831
+ (-5,-12) | {-0.4,-1,-6} | 7.42781352708
+ (-5,-12) | {-0.000184615384615,-1,15.3846153846} | 27.3855379948
+ (-5,-12) | {3,NaN,5} | NaN
+ (-5,-12) | {NaN,NaN,NaN} | NaN
+ (-5,-12) | {0,-1,3} | 15
+ (-5,-12) | {-1,0,3} | 8
+ (1e-300,-1e-300) | {0,-1,5} | 5
+ (1e-300,-1e-300) | {1,0,5} | 5
+ (1e-300,-1e-300) | {0,3,0} | 1e-300
+ (1e-300,-1e-300) | {1,-1,0} | 1.41421356237e-300
+ (1e-300,-1e-300) | {-0.4,-1,-6} | 5.57086014531
+ (1e-300,-1e-300) | {-0.000184615384615,-1,15.3846153846} | 15.3846151224
+ (1e-300,-1e-300) | {3,NaN,5} | NaN
+ (1e-300,-1e-300) | {NaN,NaN,NaN} | NaN
+ (1e-300,-1e-300) | {0,-1,3} | 3
+ (1e-300,-1e-300) | {-1,0,3} | 3
+ (1e+300,Infinity) | {0,-1,5} | Infinity
+ (1e+300,Infinity) | {1,0,5} | NaN
+ (1e+300,Infinity) | {0,3,0} | Infinity
+ (1e+300,Infinity) | {1,-1,0} | Infinity
+ (1e+300,Infinity) | {-0.4,-1,-6} | Infinity
+ (1e+300,Infinity) | {-0.000184615384615,-1,15.3846153846} | Infinity
+ (1e+300,Infinity) | {3,NaN,5} | NaN
+ (1e+300,Infinity) | {NaN,NaN,NaN} | NaN
+ (1e+300,Infinity) | {0,-1,3} | Infinity
+ (1e+300,Infinity) | {-1,0,3} | NaN
+ (NaN,NaN) | {0,-1,5} | NaN
+ (NaN,NaN) | {1,0,5} | NaN
+ (NaN,NaN) | {0,3,0} | NaN
+ (NaN,NaN) | {1,-1,0} | NaN
+ (NaN,NaN) | {-0.4,-1,-6} | NaN
+ (NaN,NaN) | {-0.000184615384615,-1,15.3846153846} | NaN
+ (NaN,NaN) | {3,NaN,5} | NaN
+ (NaN,NaN) | {NaN,NaN,NaN} | NaN
+ (NaN,NaN) | {0,-1,3} | NaN
+ (NaN,NaN) | {-1,0,3} | NaN
+ (10,10) | {0,-1,5} | 5
+ (10,10) | {1,0,5} | 15
+ (10,10) | {0,3,0} | 10
+ (10,10) | {1,-1,0} | 0
+ (10,10) | {-0.4,-1,-6} | 18.5695338177
+ (10,10) | {-0.000184615384615,-1,15.3846153846} | 5.38276913903
+ (10,10) | {3,NaN,5} | NaN
+ (10,10) | {NaN,NaN,NaN} | NaN
+ (10,10) | {0,-1,3} | 7
+ (10,10) | {-1,0,3} | 7
+(90 rows)
+
+-- Distance to line segment
+SELECT p.f1, l.s, p.f1 <-> l.s FROM POINT_TBL p, LSEG_TBL l;
+ f1 | s | ?column?
+-------------------+-------------------------------+--------------------
+ (0,0) | [(1,2),(3,4)] | 2.2360679775
+ (0,0) | [(0,0),(6,6)] | 0
+ (0,0) | [(10,-10),(-3,-4)] | 4.88901207039
+ (0,0) | [(-1000000,200),(300000,-40)] | 15.3846151224
+ (0,0) | [(11,22),(33,44)] | 24.5967477525
+ (0,0) | [(-10,2),(-10,3)] | 10.1980390272
+ (0,0) | [(0,-20),(30,-20)] | 20
+ (0,0) | [(NaN,1),(NaN,90)] | NaN
+ (-10,0) | [(1,2),(3,4)] | 11.1803398875
+ (-10,0) | [(0,0),(6,6)] | 10
+ (-10,0) | [(10,-10),(-3,-4)] | 8.0622577483
+ (-10,0) | [(-1000000,200),(300000,-40)] | 15.3864612763
+ (-10,0) | [(11,22),(33,44)] | 30.4138126515
+ (-10,0) | [(-10,2),(-10,3)] | 2
+ (-10,0) | [(0,-20),(30,-20)] | 22.360679775
+ (-10,0) | [(NaN,1),(NaN,90)] | NaN
+ (-3,4) | [(1,2),(3,4)] | 4.472135955
+ (-3,4) | [(0,0),(6,6)] | 4.94974746831
+ (-3,4) | [(10,-10),(-3,-4)] | 8
+ (-3,4) | [(-1000000,200),(300000,-40)] | 11.3851690367
+ (-3,4) | [(11,22),(33,44)] | 22.803508502
+ (-3,4) | [(-10,2),(-10,3)] | 7.07106781187
+ (-3,4) | [(0,-20),(30,-20)] | 24.1867732449
+ (-3,4) | [(NaN,1),(NaN,90)] | NaN
+ (5.1,34.5) | [(1,2),(3,4)] | 30.5722096028
+ (5.1,34.5) | [(0,0),(6,6)] | 28.5142069853
+ (5.1,34.5) | [(10,-10),(-3,-4)] | 39.3428519556
+ (5.1,34.5) | [(-1000000,200),(300000,-40)] | 19.1163258281
+ (5.1,34.5) | [(11,22),(33,44)] | 13.0107647738
+ (5.1,34.5) | [(-10,2),(-10,3)] | 34.932220084
+ (5.1,34.5) | [(0,-20),(30,-20)] | 54.5
+ (5.1,34.5) | [(NaN,1),(NaN,90)] | NaN
+ (-5,-12) | [(1,2),(3,4)] | 15.2315462117
+ (-5,-12) | [(0,0),(6,6)] | 13
+ (-5,-12) | [(10,-10),(-3,-4)] | 8.10179143093
+ (-5,-12) | [(-1000000,200),(300000,-40)] | 27.3855379949
+ (-5,-12) | [(11,22),(33,44)] | 37.5765884561
+ (-5,-12) | [(-10,2),(-10,3)] | 14.8660687473
+ (-5,-12) | [(0,-20),(30,-20)] | 9.43398113206
+ (-5,-12) | [(NaN,1),(NaN,90)] | NaN
+ (1e-300,-1e-300) | [(1,2),(3,4)] | 2.2360679775
+ (1e-300,-1e-300) | [(0,0),(6,6)] | 1.41421356237e-300
+ (1e-300,-1e-300) | [(10,-10),(-3,-4)] | 4.88901207039
+ (1e-300,-1e-300) | [(-1000000,200),(300000,-40)] | 15.3846151224
+ (1e-300,-1e-300) | [(11,22),(33,44)] | 24.5967477525
+ (1e-300,-1e-300) | [(-10,2),(-10,3)] | 10.1980390272
+ (1e-300,-1e-300) | [(0,-20),(30,-20)] | 20
+ (1e-300,-1e-300) | [(NaN,1),(NaN,90)] | NaN
+ (1e+300,Infinity) | [(1,2),(3,4)] | Infinity
+ (1e+300,Infinity) | [(0,0),(6,6)] | Infinity
+ (1e+300,Infinity) | [(10,-10),(-3,-4)] | Infinity
+ (1e+300,Infinity) | [(-1000000,200),(300000,-40)] | Infinity
+ (1e+300,Infinity) | [(11,22),(33,44)] | Infinity
+ (1e+300,Infinity) | [(-10,2),(-10,3)] | Infinity
+ (1e+300,Infinity) | [(0,-20),(30,-20)] | Infinity
+ (1e+300,Infinity) | [(NaN,1),(NaN,90)] | Infinity
+ (NaN,NaN) | [(1,2),(3,4)] | NaN
+ (NaN,NaN) | [(0,0),(6,6)] | NaN
+ (NaN,NaN) | [(10,-10),(-3,-4)] | NaN
+ (NaN,NaN) | [(-1000000,200),(300000,-40)] | NaN
+ (NaN,NaN) | [(11,22),(33,44)] | NaN
+ (NaN,NaN) | [(-10,2),(-10,3)] | NaN
+ (NaN,NaN) | [(0,-20),(30,-20)] | NaN
+ (NaN,NaN) | [(NaN,1),(NaN,90)] | NaN
+ (10,10) | [(1,2),(3,4)] | 9.21954445729
+ (10,10) | [(0,0),(6,6)] | 5.65685424949
+ (10,10) | [(10,-10),(-3,-4)] | 18.15918769
+ (10,10) | [(-1000000,200),(300000,-40)] | 5.38276913904
+ (10,10) | [(11,22),(33,44)] | 12.0415945788
+ (10,10) | [(-10,2),(-10,3)] | 21.1896201004
+ (10,10) | [(0,-20),(30,-20)] | 30
+ (10,10) | [(NaN,1),(NaN,90)] | NaN
+(72 rows)
+
+-- Distance to box
+SELECT p.f1, b.f1, p.f1 <-> b.f1 FROM POINT_TBL p, BOX_TBL b;
+ f1 | f1 | ?column?
+-------------------+---------------------+--------------------
+ (0,0) | (2,2),(0,0) | 0
+ (0,0) | (3,3),(1,1) | 1.41421356237
+ (0,0) | (-2,2),(-8,-10) | 2
+ (0,0) | (2.5,3.5),(2.5,2.5) | 3.53553390593
+ (0,0) | (3,3),(3,3) | 4.24264068712
+ (-10,0) | (2,2),(0,0) | 10
+ (-10,0) | (3,3),(1,1) | 11.0453610172
+ (-10,0) | (-2,2),(-8,-10) | 2
+ (-10,0) | (2.5,3.5),(2.5,2.5) | 12.747548784
+ (-10,0) | (3,3),(3,3) | 13.3416640641
+ (-3,4) | (2,2),(0,0) | 3.60555127546
+ (-3,4) | (3,3),(1,1) | 4.12310562562
+ (-3,4) | (-2,2),(-8,-10) | 2
+ (-3,4) | (2.5,3.5),(2.5,2.5) | 5.52268050859
+ (-3,4) | (3,3),(3,3) | 6.0827625303
+ (5.1,34.5) | (2,2),(0,0) | 32.6475113906
+ (5.1,34.5) | (3,3),(1,1) | 31.5699223946
+ (5.1,34.5) | (-2,2),(-8,-10) | 33.2664996656
+ (5.1,34.5) | (2.5,3.5),(2.5,2.5) | 31.108841187
+ (5.1,34.5) | (3,3),(3,3) | 31.5699223946
+ (-5,-12) | (2,2),(0,0) | 13
+ (-5,-12) | (3,3),(1,1) | 14.3178210633
+ (-5,-12) | (-2,2),(-8,-10) | 2
+ (-5,-12) | (2.5,3.5),(2.5,2.5) | 16.3248277173
+ (-5,-12) | (3,3),(3,3) | 17
+ (1e-300,-1e-300) | (2,2),(0,0) | 1.41421356237e-300
+ (1e-300,-1e-300) | (3,3),(1,1) | 1.41421356237
+ (1e-300,-1e-300) | (-2,2),(-8,-10) | 2
+ (1e-300,-1e-300) | (2.5,3.5),(2.5,2.5) | 3.53553390593
+ (1e-300,-1e-300) | (3,3),(3,3) | 4.24264068712
+ (1e+300,Infinity) | (2,2),(0,0) | Infinity
+ (1e+300,Infinity) | (3,3),(1,1) | Infinity
+ (1e+300,Infinity) | (-2,2),(-8,-10) | Infinity
+ (1e+300,Infinity) | (2.5,3.5),(2.5,2.5) | Infinity
+ (1e+300,Infinity) | (3,3),(3,3) | Infinity
+ (NaN,NaN) | (2,2),(0,0) | NaN
+ (NaN,NaN) | (3,3),(1,1) | NaN
+ (NaN,NaN) | (-2,2),(-8,-10) | NaN
+ (NaN,NaN) | (2.5,3.5),(2.5,2.5) | NaN
+ (NaN,NaN) | (3,3),(3,3) | NaN
+ (10,10) | (2,2),(0,0) | 11.313708499
+ (10,10) | (3,3),(1,1) | 9.89949493661
+ (10,10) | (-2,2),(-8,-10) | 14.4222051019
+ (10,10) | (2.5,3.5),(2.5,2.5) | 9.92471662064
+ (10,10) | (3,3),(3,3) | 9.89949493661
+(45 rows)
+
+-- Distance to path
+SELECT p.f1, p1.f1, p.f1 <-> p1.f1 FROM POINT_TBL p, PATH_TBL p1;
+ f1 | f1 | ?column?
+-------------------+---------------------------+--------------------
+ (0,0) | [(1,2),(3,4)] | 2.2360679775
+ (0,0) | ((1,2),(3,4)) | 2.2360679775
+ (0,0) | [(0,0),(3,0),(4,5),(1,6)] | 0
+ (0,0) | ((1,2),(3,4)) | 2.2360679775
+ (0,0) | ((1,2),(3,4)) | 2.2360679775
+ (0,0) | [(1,2),(3,4)] | 2.2360679775
+ (0,0) | ((10,20)) | 22.360679775
+ (0,0) | [(11,12),(13,14)] | 16.2788205961
+ (0,0) | ((11,12),(13,14)) | 16.2788205961
+ (-10,0) | [(1,2),(3,4)] | 11.1803398875
+ (-10,0) | ((1,2),(3,4)) | 11.1803398875
+ (-10,0) | [(0,0),(3,0),(4,5),(1,6)] | 10
+ (-10,0) | ((1,2),(3,4)) | 11.1803398875
+ (-10,0) | ((1,2),(3,4)) | 11.1803398875
+ (-10,0) | [(1,2),(3,4)] | 11.1803398875
+ (-10,0) | ((10,20)) | 28.2842712475
+ (-10,0) | [(11,12),(13,14)] | 24.1867732449
+ (-10,0) | ((11,12),(13,14)) | 24.1867732449
+ (-3,4) | [(1,2),(3,4)] | 4.472135955
+ (-3,4) | ((1,2),(3,4)) | 4.472135955
+ (-3,4) | [(0,0),(3,0),(4,5),(1,6)] | 4.472135955
+ (-3,4) | ((1,2),(3,4)) | 4.472135955
+ (-3,4) | ((1,2),(3,4)) | 4.472135955
+ (-3,4) | [(1,2),(3,4)] | 4.472135955
+ (-3,4) | ((10,20)) | 20.6155281281
+ (-3,4) | [(11,12),(13,14)] | 16.1245154966
+ (-3,4) | ((11,12),(13,14)) | 16.1245154966
+ (5.1,34.5) | [(1,2),(3,4)] | 30.5722096028
+ (5.1,34.5) | ((1,2),(3,4)) | 30.5722096028
+ (5.1,34.5) | [(0,0),(3,0),(4,5),(1,6)] | 28.793402022
+ (5.1,34.5) | ((1,2),(3,4)) | 30.5722096028
+ (5.1,34.5) | ((1,2),(3,4)) | 30.5722096028
+ (5.1,34.5) | [(1,2),(3,4)] | 30.5722096028
+ (5.1,34.5) | ((10,20)) | 15.3055545473
+ (5.1,34.5) | [(11,12),(13,14)] | 21.9695243462
+ (5.1,34.5) | ((11,12),(13,14)) | 21.9695243462
+ (-5,-12) | [(1,2),(3,4)] | 15.2315462117
+ (-5,-12) | ((1,2),(3,4)) | 15.2315462117
+ (-5,-12) | [(0,0),(3,0),(4,5),(1,6)] | 13
+ (-5,-12) | ((1,2),(3,4)) | 15.2315462117
+ (-5,-12) | ((1,2),(3,4)) | 15.2315462117
+ (-5,-12) | [(1,2),(3,4)] | 15.2315462117
+ (-5,-12) | ((10,20)) | 35.3411940941
+ (-5,-12) | [(11,12),(13,14)] | 28.8444102037
+ (-5,-12) | ((11,12),(13,14)) | 28.8444102037
+ (1e-300,-1e-300) | [(1,2),(3,4)] | 2.2360679775
+ (1e-300,-1e-300) | ((1,2),(3,4)) | 2.2360679775
+ (1e-300,-1e-300) | [(0,0),(3,0),(4,5),(1,6)] | 1.41421356237e-300
+ (1e-300,-1e-300) | ((1,2),(3,4)) | 2.2360679775
+ (1e-300,-1e-300) | ((1,2),(3,4)) | 2.2360679775
+ (1e-300,-1e-300) | [(1,2),(3,4)] | 2.2360679775
+ (1e-300,-1e-300) | ((10,20)) | 22.360679775
+ (1e-300,-1e-300) | [(11,12),(13,14)] | 16.2788205961
+ (1e-300,-1e-300) | ((11,12),(13,14)) | 16.2788205961
+ (1e+300,Infinity) | [(1,2),(3,4)] | Infinity
+ (1e+300,Infinity) | ((1,2),(3,4)) | Infinity
+ (1e+300,Infinity) | [(0,0),(3,0),(4,5),(1,6)] | Infinity
+ (1e+300,Infinity) | ((1,2),(3,4)) | Infinity
+ (1e+300,Infinity) | ((1,2),(3,4)) | Infinity
+ (1e+300,Infinity) | [(1,2),(3,4)] | Infinity
+ (1e+300,Infinity) | ((10,20)) | Infinity
+ (1e+300,Infinity) | [(11,12),(13,14)] | Infinity
+ (1e+300,Infinity) | ((11,12),(13,14)) | Infinity
+ (NaN,NaN) | [(1,2),(3,4)] | NaN
+ (NaN,NaN) | ((1,2),(3,4)) | NaN
+ (NaN,NaN) | [(0,0),(3,0),(4,5),(1,6)] | NaN
+ (NaN,NaN) | ((1,2),(3,4)) | NaN
+ (NaN,NaN) | ((1,2),(3,4)) | NaN
+ (NaN,NaN) | [(1,2),(3,4)] | NaN
+ (NaN,NaN) | ((10,20)) | NaN
+ (NaN,NaN) | [(11,12),(13,14)] | NaN
+ (NaN,NaN) | ((11,12),(13,14)) | NaN
+ (10,10) | [(1,2),(3,4)] | 9.21954445729
+ (10,10) | ((1,2),(3,4)) | 9.21954445729
+ (10,10) | [(0,0),(3,0),(4,5),(1,6)] | 7.81024967591
+ (10,10) | ((1,2),(3,4)) | 9.21954445729
+ (10,10) | ((1,2),(3,4)) | 9.21954445729
+ (10,10) | [(1,2),(3,4)] | 9.21954445729
+ (10,10) | ((10,20)) | 10
+ (10,10) | [(11,12),(13,14)] | 2.2360679775
+ (10,10) | ((11,12),(13,14)) | 2.2360679775
+(81 rows)
+
+-- Distance to polygon
+SELECT p.f1, p1.f1, p.f1 <-> p1.f1 FROM POINT_TBL p, POLYGON_TBL p1;
+ f1 | f1 | ?column?
+-------------------+----------------------------+---------------
+ (0,0) | ((2,0),(2,4),(0,0)) | 0
+ (0,0) | ((3,1),(3,3),(1,0)) | 1
+ (0,0) | ((1,2),(3,4),(5,6),(7,8)) | 2.2360679775
+ (0,0) | ((7,8),(5,6),(3,4),(1,2)) | 2.2360679775
+ (0,0) | ((1,2),(7,8),(5,6),(3,-4)) | 1.58113883008
+ (0,0) | ((0,0)) | 0
+ (0,0) | ((0,1),(0,1)) | 1
+ (-10,0) | ((2,0),(2,4),(0,0)) | 10
+ (-10,0) | ((3,1),(3,3),(1,0)) | 11
+ (-10,0) | ((1,2),(3,4),(5,6),(7,8)) | 11.1803398875
+ (-10,0) | ((7,8),(5,6),(3,4),(1,2)) | 11.1803398875
+ (-10,0) | ((1,2),(7,8),(5,6),(3,-4)) | 11.1803398875
+ (-10,0) | ((0,0)) | 10
+ (-10,0) | ((0,1),(0,1)) | 10.0498756211
+ (-3,4) | ((2,0),(2,4),(0,0)) | 4.472135955
+ (-3,4) | ((3,1),(3,3),(1,0)) | 5.54700196225
+ (-3,4) | ((1,2),(3,4),(5,6),(7,8)) | 4.472135955
+ (-3,4) | ((7,8),(5,6),(3,4),(1,2)) | 4.472135955
+ (-3,4) | ((1,2),(7,8),(5,6),(3,-4)) | 4.472135955
+ (-3,4) | ((0,0)) | 5
+ (-3,4) | ((0,1),(0,1)) | 4.24264068712
+ (5.1,34.5) | ((2,0),(2,4),(0,0)) | 30.6571362002
+ (5.1,34.5) | ((3,1),(3,3),(1,0)) | 31.5699223946
+ (5.1,34.5) | ((1,2),(3,4),(5,6),(7,8)) | 26.5680258958
+ (5.1,34.5) | ((7,8),(5,6),(3,4),(1,2)) | 26.5680258958
+ (5.1,34.5) | ((1,2),(7,8),(5,6),(3,-4)) | 26.5680258958
+ (5.1,34.5) | ((0,0)) | 34.8749193547
+ (5.1,34.5) | ((0,1),(0,1)) | 33.8859853037
+ (-5,-12) | ((2,0),(2,4),(0,0)) | 13
+ (-5,-12) | ((3,1),(3,3),(1,0)) | 13.416407865
+ (-5,-12) | ((1,2),(3,4),(5,6),(7,8)) | 15.2315462117
+ (-5,-12) | ((7,8),(5,6),(3,4),(1,2)) | 15.2315462117
+ (-5,-12) | ((1,2),(7,8),(5,6),(3,-4)) | 11.313708499
+ (-5,-12) | ((0,0)) | 13
+ (-5,-12) | ((0,1),(0,1)) | 13.9283882772
+ (1e-300,-1e-300) | ((2,0),(2,4),(0,0)) | 0
+ (1e-300,-1e-300) | ((3,1),(3,3),(1,0)) | 1
+ (1e-300,-1e-300) | ((1,2),(3,4),(5,6),(7,8)) | 2.2360679775
+ (1e-300,-1e-300) | ((7,8),(5,6),(3,4),(1,2)) | 2.2360679775
+ (1e-300,-1e-300) | ((1,2),(7,8),(5,6),(3,-4)) | 1.58113883008
+ (1e-300,-1e-300) | ((0,0)) | 0
+ (1e-300,-1e-300) | ((0,1),(0,1)) | 1
+ (1e+300,Infinity) | ((2,0),(2,4),(0,0)) | Infinity
+ (1e+300,Infinity) | ((3,1),(3,3),(1,0)) | Infinity
+ (1e+300,Infinity) | ((1,2),(3,4),(5,6),(7,8)) | Infinity
+ (1e+300,Infinity) | ((7,8),(5,6),(3,4),(1,2)) | Infinity
+ (1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | Infinity
+ (1e+300,Infinity) | ((0,0)) | Infinity
+ (1e+300,Infinity) | ((0,1),(0,1)) | Infinity
+ (NaN,NaN) | ((2,0),(2,4),(0,0)) | 0
+ (NaN,NaN) | ((3,1),(3,3),(1,0)) | 0
+ (NaN,NaN) | ((1,2),(3,4),(5,6),(7,8)) | 0
+ (NaN,NaN) | ((7,8),(5,6),(3,4),(1,2)) | 0
+ (NaN,NaN) | ((1,2),(7,8),(5,6),(3,-4)) | 0
+ (NaN,NaN) | ((0,0)) | 0
+ (NaN,NaN) | ((0,1),(0,1)) | 0
+ (10,10) | ((2,0),(2,4),(0,0)) | 10
+ (10,10) | ((3,1),(3,3),(1,0)) | 9.89949493661
+ (10,10) | ((1,2),(3,4),(5,6),(7,8)) | 3.60555127546
+ (10,10) | ((7,8),(5,6),(3,4),(1,2)) | 3.60555127546
+ (10,10) | ((1,2),(7,8),(5,6),(3,-4)) | 3.60555127546
+ (10,10) | ((0,0)) | 14.1421356237
+ (10,10) | ((0,1),(0,1)) | 13.4536240471
+(63 rows)
+
+-- Closest point to line
+SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l;
+ f1 | s | ?column?
+-------------------+---------------------------------------+----------------------------------
+ (0,0) | {0,-1,5} | (0,5)
+ (0,0) | {1,0,5} | (-5,0)
+ (0,0) | {0,3,0} | (0,0)
+ (0,0) | {1,-1,0} | (0,0)
+ (0,0) | {-0.4,-1,-6} | (-2.06896551724,-5.1724137931)
+ (0,0) | {-0.000184615384615,-1,15.3846153846} | (0.00284023658959,15.3846148603)
+ (0,0) | {3,NaN,5} |
+ (0,0) | {NaN,NaN,NaN} |
+ (0,0) | {0,-1,3} | (0,3)
+ (0,0) | {-1,0,3} | (3,0)
+ (-10,0) | {0,-1,5} | (-10,5)
+ (-10,0) | {1,0,5} | (-5,0)
+ (-10,0) | {0,3,0} | (-10,0)
+ (-10,0) | {1,-1,0} | (-5,-5)
+ (-10,0) | {-0.4,-1,-6} | (-10.6896551724,-1.72413793103)
+ (-10,0) | {-0.000184615384615,-1,15.3846153846} | (-9.99715942258,15.386461014)
+ (-10,0) | {3,NaN,5} |
+ (-10,0) | {NaN,NaN,NaN} |
+ (-10,0) | {0,-1,3} | (-10,3)
+ (-10,0) | {-1,0,3} | (3,0)
+ (-3,4) | {0,-1,5} | (-3,5)
+ (-3,4) | {1,0,5} | (-5,4)
+ (-3,4) | {0,3,0} | (-3,0)
+ (-3,4) | {1,-1,0} | (0.5,0.5)
+ (-3,4) | {-0.4,-1,-6} | (-6.03448275862,-3.58620689655)
+ (-3,4) | {-0.000184615384615,-1,15.3846153846} | (-2.99789812268,15.3851688427)
+ (-3,4) | {3,NaN,5} |
+ (-3,4) | {NaN,NaN,NaN} |
+ (-3,4) | {0,-1,3} | (-3,3)
+ (-3,4) | {-1,0,3} | (3,4)
+ (5.1,34.5) | {0,-1,5} | (5.1,5)
+ (5.1,34.5) | {1,0,5} | (-5,34.5)
+ (5.1,34.5) | {0,3,0} | (5.1,0)
+ (5.1,34.5) | {1,-1,0} | (19.8,19.8)
+ (5.1,34.5) | {-0.4,-1,-6} | (-9.56896551724,-2.1724137931)
+ (5.1,34.5) | {-0.000184615384615,-1,15.3846153846} | (5.09647083221,15.3836744977)
+ (5.1,34.5) | {3,NaN,5} |
+ (5.1,34.5) | {NaN,NaN,NaN} |
+ (5.1,34.5) | {0,-1,3} | (5.1,3)
+ (5.1,34.5) | {-1,0,3} | (3,34.5)
+ (-5,-12) | {0,-1,5} | (-5,5)
+ (-5,-12) | {1,0,5} | (-5,-12)
+ (-5,-12) | {0,3,0} | (-5,0)
+ (-5,-12) | {1,-1,0} | (-8.5,-8.5)
+ (-5,-12) | {-0.4,-1,-6} | (-2.24137931034,-5.10344827586)
+ (-5,-12) | {-0.000184615384615,-1,15.3846153846} | (-4.99494420846,15.3855375282)
+ (-5,-12) | {3,NaN,5} |
+ (-5,-12) | {NaN,NaN,NaN} |
+ (-5,-12) | {0,-1,3} | (-5,3)
+ (-5,-12) | {-1,0,3} | (3,-12)
+ (1e-300,-1e-300) | {0,-1,5} | (1e-300,5)
+ (1e-300,-1e-300) | {1,0,5} | (-5,-1e-300)
+ (1e-300,-1e-300) | {0,3,0} | (1e-300,0)
+ (1e-300,-1e-300) | {1,-1,0} | (0,0)
+ (1e-300,-1e-300) | {-0.4,-1,-6} | (-2.06896551724,-5.1724137931)
+ (1e-300,-1e-300) | {-0.000184615384615,-1,15.3846153846} | (0.00284023658959,15.3846148603)
+ (1e-300,-1e-300) | {3,NaN,5} |
+ (1e-300,-1e-300) | {NaN,NaN,NaN} |
+ (1e-300,-1e-300) | {0,-1,3} | (1e-300,3)
+ (1e-300,-1e-300) | {-1,0,3} | (3,-1e-300)
+ (1e+300,Infinity) | {0,-1,5} | (1e+300,5)
+ (1e+300,Infinity) | {1,0,5} |
+ (1e+300,Infinity) | {0,3,0} | (1e+300,0)
+ (1e+300,Infinity) | {1,-1,0} | (Infinity,NaN)
+ (1e+300,Infinity) | {-0.4,-1,-6} | (-Infinity,NaN)
+ (1e+300,Infinity) | {-0.000184615384615,-1,15.3846153846} | (-Infinity,NaN)
+ (1e+300,Infinity) | {3,NaN,5} |
+ (1e+300,Infinity) | {NaN,NaN,NaN} |
+ (1e+300,Infinity) | {0,-1,3} | (1e+300,3)
+ (1e+300,Infinity) | {-1,0,3} |
+ (NaN,NaN) | {0,-1,5} |
+ (NaN,NaN) | {1,0,5} |
+ (NaN,NaN) | {0,3,0} |
+ (NaN,NaN) | {1,-1,0} |
+ (NaN,NaN) | {-0.4,-1,-6} |
+ (NaN,NaN) | {-0.000184615384615,-1,15.3846153846} |
+ (NaN,NaN) | {3,NaN,5} |
+ (NaN,NaN) | {NaN,NaN,NaN} |
+ (NaN,NaN) | {0,-1,3} |
+ (NaN,NaN) | {-1,0,3} |
+ (10,10) | {0,-1,5} | (10,5)
+ (10,10) | {1,0,5} | (-5,10)
+ (10,10) | {0,3,0} | (10,0)
+ (10,10) | {1,-1,0} | (10,10)
+ (10,10) | {-0.4,-1,-6} | (3.10344827586,-7.24137931034)
+ (10,10) | {-0.000184615384615,-1,15.3846153846} | (10.000993742,15.3827690473)
+ (10,10) | {3,NaN,5} |
+ (10,10) | {NaN,NaN,NaN} |
+ (10,10) | {0,-1,3} | (10,3)
+ (10,10) | {-1,0,3} | (3,10)
+(90 rows)
+
+-- Closest point to line segment
+SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LSEG_TBL l;
+ f1 | s | ?column?
+-------------------+-------------------------------+----------------------------------
+ (0,0) | [(1,2),(3,4)] | (1,2)
+ (0,0) | [(0,0),(6,6)] | (0,0)
+ (0,0) | [(10,-10),(-3,-4)] | (-2.0487804878,-4.43902439024)
+ (0,0) | [(-1000000,200),(300000,-40)] | (0.00284023658959,15.3846148603)
+ (0,0) | [(11,22),(33,44)] | (11,22)
+ (0,0) | [(-10,2),(-10,3)] | (-10,2)
+ (0,0) | [(0,-20),(30,-20)] | (0,-20)
+ (0,0) | [(NaN,1),(NaN,90)] |
+ (-10,0) | [(1,2),(3,4)] | (1,2)
+ (-10,0) | [(0,0),(6,6)] | (0,0)
+ (-10,0) | [(10,-10),(-3,-4)] | (-3,-4)
+ (-10,0) | [(-1000000,200),(300000,-40)] | (-9.99715942258,15.386461014)
+ (-10,0) | [(11,22),(33,44)] | (11,22)
+ (-10,0) | [(-10,2),(-10,3)] | (-10,2)
+ (-10,0) | [(0,-20),(30,-20)] | (0,-20)
+ (-10,0) | [(NaN,1),(NaN,90)] |
+ (-3,4) | [(1,2),(3,4)] | (1,2)
+ (-3,4) | [(0,0),(6,6)] | (0.5,0.5)
+ (-3,4) | [(10,-10),(-3,-4)] | (-3,-4)
+ (-3,4) | [(-1000000,200),(300000,-40)] | (-2.99789812268,15.3851688427)
+ (-3,4) | [(11,22),(33,44)] | (11,22)
+ (-3,4) | [(-10,2),(-10,3)] | (-10,3)
+ (-3,4) | [(0,-20),(30,-20)] | (0,-20)
+ (-3,4) | [(NaN,1),(NaN,90)] |
+ (5.1,34.5) | [(1,2),(3,4)] | (3,4)
+ (5.1,34.5) | [(0,0),(6,6)] | (6,6)
+ (5.1,34.5) | [(10,-10),(-3,-4)] | (-3,-4)
+ (5.1,34.5) | [(-1000000,200),(300000,-40)] | (5.09647083221,15.3836744977)
+ (5.1,34.5) | [(11,22),(33,44)] | (14.3,25.3)
+ (5.1,34.5) | [(-10,2),(-10,3)] | (-10,3)
+ (5.1,34.5) | [(0,-20),(30,-20)] | (5.1,-20)
+ (5.1,34.5) | [(NaN,1),(NaN,90)] |
+ (-5,-12) | [(1,2),(3,4)] | (1,2)
+ (-5,-12) | [(0,0),(6,6)] | (0,0)
+ (-5,-12) | [(10,-10),(-3,-4)] | (-1.60487804878,-4.64390243902)
+ (-5,-12) | [(-1000000,200),(300000,-40)] | (-4.99494420846,15.3855375282)
+ (-5,-12) | [(11,22),(33,44)] | (11,22)
+ (-5,-12) | [(-10,2),(-10,3)] | (-10,2)
+ (-5,-12) | [(0,-20),(30,-20)] | (0,-20)
+ (-5,-12) | [(NaN,1),(NaN,90)] |
+ (1e-300,-1e-300) | [(1,2),(3,4)] | (1,2)
+ (1e-300,-1e-300) | [(0,0),(6,6)] | (0,0)
+ (1e-300,-1e-300) | [(10,-10),(-3,-4)] | (-2.0487804878,-4.43902439024)
+ (1e-300,-1e-300) | [(-1000000,200),(300000,-40)] | (0.00284023658959,15.3846148603)
+ (1e-300,-1e-300) | [(11,22),(33,44)] | (11,22)
+ (1e-300,-1e-300) | [(-10,2),(-10,3)] | (-10,2)
+ (1e-300,-1e-300) | [(0,-20),(30,-20)] | (0,-20)
+ (1e-300,-1e-300) | [(NaN,1),(NaN,90)] |
+ (1e+300,Infinity) | [(1,2),(3,4)] | (3,4)
+ (1e+300,Infinity) | [(0,0),(6,6)] | (6,6)
+ (1e+300,Infinity) | [(10,-10),(-3,-4)] | (-3,-4)
+ (1e+300,Infinity) | [(-1000000,200),(300000,-40)] | (300000,-40)
+ (1e+300,Infinity) | [(11,22),(33,44)] | (33,44)
+ (1e+300,Infinity) | [(-10,2),(-10,3)] | (-10,3)
+ (1e+300,Infinity) | [(0,-20),(30,-20)] | (30,-20)
+ (1e+300,Infinity) | [(NaN,1),(NaN,90)] | (NaN,90)
+ (NaN,NaN) | [(1,2),(3,4)] |
+ (NaN,NaN) | [(0,0),(6,6)] |
+ (NaN,NaN) | [(10,-10),(-3,-4)] |
+ (NaN,NaN) | [(-1000000,200),(300000,-40)] |
+ (NaN,NaN) | [(11,22),(33,44)] |
+ (NaN,NaN) | [(-10,2),(-10,3)] |
+ (NaN,NaN) | [(0,-20),(30,-20)] |
+ (NaN,NaN) | [(NaN,1),(NaN,90)] |
+ (10,10) | [(1,2),(3,4)] | (3,4)
+ (10,10) | [(0,0),(6,6)] | (6,6)
+ (10,10) | [(10,-10),(-3,-4)] | (2.39024390244,-6.48780487805)
+ (10,10) | [(-1000000,200),(300000,-40)] | (10.000993742,15.3827690473)
+ (10,10) | [(11,22),(33,44)] | (11,22)
+ (10,10) | [(-10,2),(-10,3)] | (-10,3)
+ (10,10) | [(0,-20),(30,-20)] | (10,-20)
+ (10,10) | [(NaN,1),(NaN,90)] |
+(72 rows)
+
+-- Closest point to box
+SELECT p.f1, b.f1, p.f1 ## b.f1 FROM POINT_TBL p, BOX_TBL b;
+ f1 | f1 | ?column?
+-------------------+---------------------+--------------
+ (0,0) | (2,2),(0,0) | (0,0)
+ (0,0) | (3,3),(1,1) | (1,1)
+ (0,0) | (-2,2),(-8,-10) | (-2,0)
+ (0,0) | (2.5,3.5),(2.5,2.5) | (2.5,2.5)
+ (0,0) | (3,3),(3,3) | (3,3)
+ (-10,0) | (2,2),(0,0) | (0,0)
+ (-10,0) | (3,3),(1,1) | (1,1)
+ (-10,0) | (-2,2),(-8,-10) | (-8,0)
+ (-10,0) | (2.5,3.5),(2.5,2.5) | (2.5,2.5)
+ (-10,0) | (3,3),(3,3) | (3,3)
+ (-3,4) | (2,2),(0,0) | (0,2)
+ (-3,4) | (3,3),(1,1) | (1,3)
+ (-3,4) | (-2,2),(-8,-10) | (-3,2)
+ (-3,4) | (2.5,3.5),(2.5,2.5) | (2.5,3.5)
+ (-3,4) | (3,3),(3,3) | (3,3)
+ (5.1,34.5) | (2,2),(0,0) | (2,2)
+ (5.1,34.5) | (3,3),(1,1) | (3,3)
+ (5.1,34.5) | (-2,2),(-8,-10) | (-2,2)
+ (5.1,34.5) | (2.5,3.5),(2.5,2.5) | (2.5,3.5)
+ (5.1,34.5) | (3,3),(3,3) | (3,3)
+ (-5,-12) | (2,2),(0,0) | (0,0)
+ (-5,-12) | (3,3),(1,1) | (1,1)
+ (-5,-12) | (-2,2),(-8,-10) | (-5,-10)
+ (-5,-12) | (2.5,3.5),(2.5,2.5) | (2.5,2.5)
+ (-5,-12) | (3,3),(3,3) | (3,3)
+ (1e-300,-1e-300) | (2,2),(0,0) | (0,0)
+ (1e-300,-1e-300) | (3,3),(1,1) | (1,1)
+ (1e-300,-1e-300) | (-2,2),(-8,-10) | (-2,-1e-300)
+ (1e-300,-1e-300) | (2.5,3.5),(2.5,2.5) | (2.5,2.5)
+ (1e-300,-1e-300) | (3,3),(3,3) | (3,3)
+ (1e+300,Infinity) | (2,2),(0,0) | (0,2)
+ (1e+300,Infinity) | (3,3),(1,1) | (1,3)
+ (1e+300,Infinity) | (-2,2),(-8,-10) | (-8,2)
+ (1e+300,Infinity) | (2.5,3.5),(2.5,2.5) | (2.5,3.5)
+ (1e+300,Infinity) | (3,3),(3,3) | (3,3)
+ (NaN,NaN) | (2,2),(0,0) |
+ (NaN,NaN) | (3,3),(1,1) |
+ (NaN,NaN) | (-2,2),(-8,-10) |
+ (NaN,NaN) | (2.5,3.5),(2.5,2.5) |
+ (NaN,NaN) | (3,3),(3,3) |
+ (10,10) | (2,2),(0,0) | (2,2)
+ (10,10) | (3,3),(1,1) | (3,3)
+ (10,10) | (-2,2),(-8,-10) | (-2,2)
+ (10,10) | (2.5,3.5),(2.5,2.5) | (2.5,3.5)
+ (10,10) | (3,3),(3,3) | (3,3)
+(45 rows)
+
+-- On line
+SELECT p.f1, l.s FROM POINT_TBL p, LINE_TBL l WHERE p.f1 <@ l.s;
+ f1 | s
+------------------+----------
+ (0,0) | {0,3,0}
+ (0,0) | {1,-1,0}
+ (-10,0) | {0,3,0}
+ (-5,-12) | {1,0,5}
+ (1e-300,-1e-300) | {0,3,0}
+ (1e-300,-1e-300) | {1,-1,0}
+ (10,10) | {1,-1,0}
+(7 rows)
+
+-- On line segment
+SELECT p.f1, l.s FROM POINT_TBL p, LSEG_TBL l WHERE p.f1 <@ l.s;
+ f1 | s
+------------------+---------------
+ (0,0) | [(0,0),(6,6)]
+ (1e-300,-1e-300) | [(0,0),(6,6)]
+(2 rows)
+
+-- On path
+SELECT p.f1, p1.f1 FROM POINT_TBL p, PATH_TBL p1 WHERE p.f1 <@ p1.f1;
+ f1 | f1
+------------------+---------------------------
+ (0,0) | [(0,0),(3,0),(4,5),(1,6)]
+ (1e-300,-1e-300) | [(0,0),(3,0),(4,5),(1,6)]
+ (NaN,NaN) | ((1,2),(3,4))
+ (NaN,NaN) | ((1,2),(3,4))
+ (NaN,NaN) | ((1,2),(3,4))
+ (NaN,NaN) | ((10,20))
+ (NaN,NaN) | ((11,12),(13,14))
+(7 rows)
+
+--
+-- Lines
+--
+-- Vertical
+SELECT s FROM LINE_TBL WHERE ?| s;
+ s
+----------
+ {1,0,5}
+ {-1,0,3}
+(2 rows)
+
+-- Horizontal
+SELECT s FROM LINE_TBL WHERE ?- s;
+ s
+----------
+ {0,-1,5}
+ {0,3,0}
+ {0,-1,3}
+(3 rows)
+
+-- Same as line
+SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s = l2.s;
+ s | s
+---------------------------------------+---------------------------------------
+ {0,-1,5} | {0,-1,5}
+ {1,0,5} | {1,0,5}
+ {0,3,0} | {0,3,0}
+ {1,-1,0} | {1,-1,0}
+ {-0.4,-1,-6} | {-0.4,-1,-6}
+ {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846}
+ {3,NaN,5} | {3,NaN,5}
+ {NaN,NaN,NaN} | {NaN,NaN,NaN}
+ {0,-1,3} | {0,-1,3}
+ {-1,0,3} | {-1,0,3}
+(10 rows)
+
+-- Parallel to line
+SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?|| l2.s;
+ s | s
+---------------------------------------+---------------------------------------
+ {0,-1,5} | {0,-1,5}
+ {0,-1,5} | {0,3,0}
+ {0,-1,5} | {0,-1,3}
+ {1,0,5} | {1,0,5}
+ {1,0,5} | {-1,0,3}
+ {0,3,0} | {0,-1,5}
+ {0,3,0} | {0,3,0}
+ {0,3,0} | {0,-1,3}
+ {1,-1,0} | {1,-1,0}
+ {-0.4,-1,-6} | {-0.4,-1,-6}
+ {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846}
+ {0,-1,3} | {0,-1,5}
+ {0,-1,3} | {0,3,0}
+ {0,-1,3} | {0,-1,3}
+ {-1,0,3} | {1,0,5}
+ {-1,0,3} | {-1,0,3}
+(16 rows)
+
+-- Perpendicular to line
+SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?-| l2.s;
+ s | s
+----------+----------
+ {0,-1,5} | {1,0,5}
+ {0,-1,5} | {-1,0,3}
+ {1,0,5} | {0,-1,5}
+ {1,0,5} | {0,3,0}
+ {1,0,5} | {0,-1,3}
+ {0,3,0} | {1,0,5}
+ {0,3,0} | {-1,0,3}
+ {0,-1,3} | {1,0,5}
+ {0,-1,3} | {-1,0,3}
+ {-1,0,3} | {0,-1,5}
+ {-1,0,3} | {0,3,0}
+ {-1,0,3} | {0,-1,3}
+(12 rows)
+
+-- Distance to line
+SELECT l1.s, l2.s, l1.s <-> l2.s FROM LINE_TBL l1, LINE_TBL l2;
+ s | s | ?column?
+---------------------------------------+---------------------------------------+----------
+ {0,-1,5} | {0,-1,5} | 0
+ {0,-1,5} | {1,0,5} | 0
+ {0,-1,5} | {0,3,0} | 5
+ {0,-1,5} | {1,-1,0} | 0
+ {0,-1,5} | {-0.4,-1,-6} | 0
+ {0,-1,5} | {-0.000184615384615,-1,15.3846153846} | 0
+ {0,-1,5} | {3,NaN,5} | 0
+ {0,-1,5} | {NaN,NaN,NaN} | 0
+ {0,-1,5} | {0,-1,3} | 2
+ {0,-1,5} | {-1,0,3} | 0
+ {1,0,5} | {0,-1,5} | 0
+ {1,0,5} | {1,0,5} | 0
+ {1,0,5} | {0,3,0} | 0
+ {1,0,5} | {1,-1,0} | 0
+ {1,0,5} | {-0.4,-1,-6} | 0
+ {1,0,5} | {-0.000184615384615,-1,15.3846153846} | 0
+ {1,0,5} | {3,NaN,5} | 0
+ {1,0,5} | {NaN,NaN,NaN} | 0
+ {1,0,5} | {0,-1,3} | 0
+ {1,0,5} | {-1,0,3} | 8
+ {0,3,0} | {0,-1,5} | 5
+ {0,3,0} | {1,0,5} | 0
+ {0,3,0} | {0,3,0} | 0
+ {0,3,0} | {1,-1,0} | 0
+ {0,3,0} | {-0.4,-1,-6} | 0
+ {0,3,0} | {-0.000184615384615,-1,15.3846153846} | 0
+ {0,3,0} | {3,NaN,5} | 0
+ {0,3,0} | {NaN,NaN,NaN} | 0
+ {0,3,0} | {0,-1,3} | 3
+ {0,3,0} | {-1,0,3} | 0
+ {1,-1,0} | {0,-1,5} | 0
+ {1,-1,0} | {1,0,5} | 0
+ {1,-1,0} | {0,3,0} | 0
+ {1,-1,0} | {1,-1,0} | 0
+ {1,-1,0} | {-0.4,-1,-6} | 0
+ {1,-1,0} | {-0.000184615384615,-1,15.3846153846} | 0
+ {1,-1,0} | {3,NaN,5} | 0
+ {1,-1,0} | {NaN,NaN,NaN} | 0
+ {1,-1,0} | {0,-1,3} | 0
+ {1,-1,0} | {-1,0,3} | 0
+ {-0.4,-1,-6} | {0,-1,5} | 0
+ {-0.4,-1,-6} | {1,0,5} | 0
+ {-0.4,-1,-6} | {0,3,0} | 0
+ {-0.4,-1,-6} | {1,-1,0} | 0
+ {-0.4,-1,-6} | {-0.4,-1,-6} | 0
+ {-0.4,-1,-6} | {-0.000184615384615,-1,15.3846153846} | 0
+ {-0.4,-1,-6} | {3,NaN,5} | 0
+ {-0.4,-1,-6} | {NaN,NaN,NaN} | 0
+ {-0.4,-1,-6} | {0,-1,3} | 0
+ {-0.4,-1,-6} | {-1,0,3} | 0
+ {-0.000184615384615,-1,15.3846153846} | {0,-1,5} | 0
+ {-0.000184615384615,-1,15.3846153846} | {1,0,5} | 0
+ {-0.000184615384615,-1,15.3846153846} | {0,3,0} | 0
+ {-0.000184615384615,-1,15.3846153846} | {1,-1,0} | 0
+ {-0.000184615384615,-1,15.3846153846} | {-0.4,-1,-6} | 0
+ {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846} | 0
+ {-0.000184615384615,-1,15.3846153846} | {3,NaN,5} | 0
+ {-0.000184615384615,-1,15.3846153846} | {NaN,NaN,NaN} | 0
+ {-0.000184615384615,-1,15.3846153846} | {0,-1,3} | 0
+ {-0.000184615384615,-1,15.3846153846} | {-1,0,3} | 0
+ {3,NaN,5} | {0,-1,5} | 0
+ {3,NaN,5} | {1,0,5} | 0
+ {3,NaN,5} | {0,3,0} | 0
+ {3,NaN,5} | {1,-1,0} | 0
+ {3,NaN,5} | {-0.4,-1,-6} | 0
+ {3,NaN,5} | {-0.000184615384615,-1,15.3846153846} | 0
+ {3,NaN,5} | {3,NaN,5} | 0
+ {3,NaN,5} | {NaN,NaN,NaN} | 0
+ {3,NaN,5} | {0,-1,3} | 0
+ {3,NaN,5} | {-1,0,3} | 0
+ {NaN,NaN,NaN} | {0,-1,5} | 0
+ {NaN,NaN,NaN} | {1,0,5} | 0
+ {NaN,NaN,NaN} | {0,3,0} | 0
+ {NaN,NaN,NaN} | {1,-1,0} | 0
+ {NaN,NaN,NaN} | {-0.4,-1,-6} | 0
+ {NaN,NaN,NaN} | {-0.000184615384615,-1,15.3846153846} | 0
+ {NaN,NaN,NaN} | {3,NaN,5} | 0
+ {NaN,NaN,NaN} | {NaN,NaN,NaN} | 0
+ {NaN,NaN,NaN} | {0,-1,3} | 0
+ {NaN,NaN,NaN} | {-1,0,3} | 0
+ {0,-1,3} | {0,-1,5} | 2
+ {0,-1,3} | {1,0,5} | 0
+ {0,-1,3} | {0,3,0} | 3
+ {0,-1,3} | {1,-1,0} | 0
+ {0,-1,3} | {-0.4,-1,-6} | 0
+ {0,-1,3} | {-0.000184615384615,-1,15.3846153846} | 0
+ {0,-1,3} | {3,NaN,5} | 0
+ {0,-1,3} | {NaN,NaN,NaN} | 0
+ {0,-1,3} | {0,-1,3} | 0
+ {0,-1,3} | {-1,0,3} | 0
+ {-1,0,3} | {0,-1,5} | 0
+ {-1,0,3} | {1,0,5} | 8
+ {-1,0,3} | {0,3,0} | 0
+ {-1,0,3} | {1,-1,0} | 0
+ {-1,0,3} | {-0.4,-1,-6} | 0
+ {-1,0,3} | {-0.000184615384615,-1,15.3846153846} | 0
+ {-1,0,3} | {3,NaN,5} | 0
+ {-1,0,3} | {NaN,NaN,NaN} | 0
+ {-1,0,3} | {0,-1,3} | 0
+ {-1,0,3} | {-1,0,3} | 0
+(100 rows)
+
+-- Distance to box
+SELECT l.s, b.f1, l.s <-> b.f1 FROM LINE_TBL l, BOX_TBL b;
+ERROR: function "dist_lb" not implemented
+-- Intersect with line
+SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?# l2.s;
+ s | s
+---------------------------------------+---------------------------------------
+ {0,-1,5} | {1,0,5}
+ {0,-1,5} | {1,-1,0}
+ {0,-1,5} | {-0.4,-1,-6}
+ {0,-1,5} | {-0.000184615384615,-1,15.3846153846}
+ {0,-1,5} | {3,NaN,5}
+ {0,-1,5} | {NaN,NaN,NaN}
+ {0,-1,5} | {-1,0,3}
+ {1,0,5} | {0,-1,5}
+ {1,0,5} | {0,3,0}
+ {1,0,5} | {1,-1,0}
+ {1,0,5} | {-0.4,-1,-6}
+ {1,0,5} | {-0.000184615384615,-1,15.3846153846}
+ {1,0,5} | {3,NaN,5}
+ {1,0,5} | {NaN,NaN,NaN}
+ {1,0,5} | {0,-1,3}
+ {0,3,0} | {1,0,5}
+ {0,3,0} | {1,-1,0}
+ {0,3,0} | {-0.4,-1,-6}
+ {0,3,0} | {-0.000184615384615,-1,15.3846153846}
+ {0,3,0} | {3,NaN,5}
+ {0,3,0} | {NaN,NaN,NaN}
+ {0,3,0} | {-1,0,3}
+ {1,-1,0} | {0,-1,5}
+ {1,-1,0} | {1,0,5}
+ {1,-1,0} | {0,3,0}
+ {1,-1,0} | {-0.4,-1,-6}
+ {1,-1,0} | {-0.000184615384615,-1,15.3846153846}
+ {1,-1,0} | {3,NaN,5}
+ {1,-1,0} | {NaN,NaN,NaN}
+ {1,-1,0} | {0,-1,3}
+ {1,-1,0} | {-1,0,3}
+ {-0.4,-1,-6} | {0,-1,5}
+ {-0.4,-1,-6} | {1,0,5}
+ {-0.4,-1,-6} | {0,3,0}
+ {-0.4,-1,-6} | {1,-1,0}
+ {-0.4,-1,-6} | {-0.000184615384615,-1,15.3846153846}
+ {-0.4,-1,-6} | {3,NaN,5}
+ {-0.4,-1,-6} | {NaN,NaN,NaN}
+ {-0.4,-1,-6} | {0,-1,3}
+ {-0.4,-1,-6} | {-1,0,3}
+ {-0.000184615384615,-1,15.3846153846} | {0,-1,5}
+ {-0.000184615384615,-1,15.3846153846} | {1,0,5}
+ {-0.000184615384615,-1,15.3846153846} | {0,3,0}
+ {-0.000184615384615,-1,15.3846153846} | {1,-1,0}
+ {-0.000184615384615,-1,15.3846153846} | {-0.4,-1,-6}
+ {-0.000184615384615,-1,15.3846153846} | {3,NaN,5}
+ {-0.000184615384615,-1,15.3846153846} | {NaN,NaN,NaN}
+ {-0.000184615384615,-1,15.3846153846} | {0,-1,3}
+ {-0.000184615384615,-1,15.3846153846} | {-1,0,3}
+ {3,NaN,5} | {0,-1,5}
+ {3,NaN,5} | {1,0,5}
+ {3,NaN,5} | {0,3,0}
+ {3,NaN,5} | {1,-1,0}
+ {3,NaN,5} | {-0.4,-1,-6}
+ {3,NaN,5} | {-0.000184615384615,-1,15.3846153846}
+ {3,NaN,5} | {3,NaN,5}
+ {3,NaN,5} | {NaN,NaN,NaN}
+ {3,NaN,5} | {0,-1,3}
+ {3,NaN,5} | {-1,0,3}
+ {NaN,NaN,NaN} | {0,-1,5}
+ {NaN,NaN,NaN} | {1,0,5}
+ {NaN,NaN,NaN} | {0,3,0}
+ {NaN,NaN,NaN} | {1,-1,0}
+ {NaN,NaN,NaN} | {-0.4,-1,-6}
+ {NaN,NaN,NaN} | {-0.000184615384615,-1,15.3846153846}
+ {NaN,NaN,NaN} | {3,NaN,5}
+ {NaN,NaN,NaN} | {NaN,NaN,NaN}
+ {NaN,NaN,NaN} | {0,-1,3}
+ {NaN,NaN,NaN} | {-1,0,3}
+ {0,-1,3} | {1,0,5}
+ {0,-1,3} | {1,-1,0}
+ {0,-1,3} | {-0.4,-1,-6}
+ {0,-1,3} | {-0.000184615384615,-1,15.3846153846}
+ {0,-1,3} | {3,NaN,5}
+ {0,-1,3} | {NaN,NaN,NaN}
+ {0,-1,3} | {-1,0,3}
+ {-1,0,3} | {0,-1,5}
+ {-1,0,3} | {0,3,0}
+ {-1,0,3} | {1,-1,0}
+ {-1,0,3} | {-0.4,-1,-6}
+ {-1,0,3} | {-0.000184615384615,-1,15.3846153846}
+ {-1,0,3} | {3,NaN,5}
+ {-1,0,3} | {NaN,NaN,NaN}
+ {-1,0,3} | {0,-1,3}
+(84 rows)
+
+-- Intersect with box
+SELECT l.s, b.f1 FROM LINE_TBL l, BOX_TBL b WHERE l.s ?# b.f1;
+ s | f1
+--------------+---------------------
+ {1,0,5} | (-2,2),(-8,-10)
+ {0,3,0} | (2,2),(0,0)
+ {0,3,0} | (-2,2),(-8,-10)
+ {1,-1,0} | (2,2),(0,0)
+ {1,-1,0} | (3,3),(1,1)
+ {1,-1,0} | (-2,2),(-8,-10)
+ {1,-1,0} | (2.5,3.5),(2.5,2.5)
+ {1,-1,0} | (3,3),(3,3)
+ {-0.4,-1,-6} | (-2,2),(-8,-10)
+ {0,-1,3} | (3,3),(1,1)
+ {0,-1,3} | (2.5,3.5),(2.5,2.5)
+ {0,-1,3} | (3,3),(3,3)
+ {-1,0,3} | (3,3),(1,1)
+(13 rows)
+
+-- Intersection point with line
+SELECT l1.s, l2.s, l1.s # l2.s FROM LINE_TBL l1, LINE_TBL l2;
+ s | s | ?column?
+---------------------------------------+---------------------------------------+-----------------------------------
+ {0,-1,5} | {0,-1,5} |
+ {0,-1,5} | {1,0,5} | (-5,5)
+ {0,-1,5} | {0,3,0} |
+ {0,-1,5} | {1,-1,0} | (5,5)
+ {0,-1,5} | {-0.4,-1,-6} | (-27.5,5)
+ {0,-1,5} | {-0.000184615384615,-1,15.3846153846} | (56250,5)
+ {0,-1,5} | {3,NaN,5} | (NaN,NaN)
+ {0,-1,5} | {NaN,NaN,NaN} | (NaN,NaN)
+ {0,-1,5} | {0,-1,3} |
+ {0,-1,5} | {-1,0,3} | (3,5)
+ {1,0,5} | {0,-1,5} | (-5,5)
+ {1,0,5} | {1,0,5} |
+ {1,0,5} | {0,3,0} | (-5,0)
+ {1,0,5} | {1,-1,0} | (-5,-5)
+ {1,0,5} | {-0.4,-1,-6} | (-5,-4)
+ {1,0,5} | {-0.000184615384615,-1,15.3846153846} | (-5,15.3855384615)
+ {1,0,5} | {3,NaN,5} | (NaN,NaN)
+ {1,0,5} | {NaN,NaN,NaN} | (NaN,NaN)
+ {1,0,5} | {0,-1,3} | (-5,3)
+ {1,0,5} | {-1,0,3} |
+ {0,3,0} | {0,-1,5} |
+ {0,3,0} | {1,0,5} | (-5,0)
+ {0,3,0} | {0,3,0} |
+ {0,3,0} | {1,-1,0} | (0,0)
+ {0,3,0} | {-0.4,-1,-6} | (-15,0)
+ {0,3,0} | {-0.000184615384615,-1,15.3846153846} | (83333.3333333,0)
+ {0,3,0} | {3,NaN,5} | (NaN,NaN)
+ {0,3,0} | {NaN,NaN,NaN} | (NaN,NaN)
+ {0,3,0} | {0,-1,3} |
+ {0,3,0} | {-1,0,3} | (3,0)
+ {1,-1,0} | {0,-1,5} | (5,5)
+ {1,-1,0} | {1,0,5} | (-5,-5)
+ {1,-1,0} | {0,3,0} | (0,0)
+ {1,-1,0} | {1,-1,0} |
+ {1,-1,0} | {-0.4,-1,-6} | (-4.28571428571,-4.28571428571)
+ {1,-1,0} | {-0.000184615384615,-1,15.3846153846} | (15.3817756722,15.3817756722)
+ {1,-1,0} | {3,NaN,5} | (NaN,NaN)
+ {1,-1,0} | {NaN,NaN,NaN} | (NaN,NaN)
+ {1,-1,0} | {0,-1,3} | (3,3)
+ {1,-1,0} | {-1,0,3} | (3,3)
+ {-0.4,-1,-6} | {0,-1,5} | (-27.5,5)
+ {-0.4,-1,-6} | {1,0,5} | (-5,-4)
+ {-0.4,-1,-6} | {0,3,0} | (-15,0)
+ {-0.4,-1,-6} | {1,-1,0} | (-4.28571428571,-4.28571428571)
+ {-0.4,-1,-6} | {-0.4,-1,-6} |
+ {-0.4,-1,-6} | {-0.000184615384615,-1,15.3846153846} | (-53.4862244113,15.3944897645)
+ {-0.4,-1,-6} | {3,NaN,5} | (NaN,NaN)
+ {-0.4,-1,-6} | {NaN,NaN,NaN} | (NaN,NaN)
+ {-0.4,-1,-6} | {0,-1,3} | (-22.5,3)
+ {-0.4,-1,-6} | {-1,0,3} | (3,-7.2)
+ {-0.000184615384615,-1,15.3846153846} | {0,-1,5} | (56250,5)
+ {-0.000184615384615,-1,15.3846153846} | {1,0,5} | (-5,15.3855384615)
+ {-0.000184615384615,-1,15.3846153846} | {0,3,0} | (83333.3333333,-1.7763568394e-15)
+ {-0.000184615384615,-1,15.3846153846} | {1,-1,0} | (15.3817756722,15.3817756722)
+ {-0.000184615384615,-1,15.3846153846} | {-0.4,-1,-6} | (-53.4862244113,15.3944897645)
+ {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846} |
+ {-0.000184615384615,-1,15.3846153846} | {3,NaN,5} | (NaN,NaN)
+ {-0.000184615384615,-1,15.3846153846} | {NaN,NaN,NaN} | (NaN,NaN)
+ {-0.000184615384615,-1,15.3846153846} | {0,-1,3} | (67083.3333333,3)
+ {-0.000184615384615,-1,15.3846153846} | {-1,0,3} | (3,15.3840615385)
+ {3,NaN,5} | {0,-1,5} | (NaN,NaN)
+ {3,NaN,5} | {1,0,5} | (NaN,NaN)
+ {3,NaN,5} | {0,3,0} | (NaN,NaN)
+ {3,NaN,5} | {1,-1,0} | (NaN,NaN)
+ {3,NaN,5} | {-0.4,-1,-6} | (NaN,NaN)
+ {3,NaN,5} | {-0.000184615384615,-1,15.3846153846} | (NaN,NaN)
+ {3,NaN,5} | {3,NaN,5} | (NaN,NaN)
+ {3,NaN,5} | {NaN,NaN,NaN} | (NaN,NaN)
+ {3,NaN,5} | {0,-1,3} | (NaN,NaN)
+ {3,NaN,5} | {-1,0,3} | (NaN,NaN)
+ {NaN,NaN,NaN} | {0,-1,5} | (NaN,NaN)
+ {NaN,NaN,NaN} | {1,0,5} | (NaN,NaN)
+ {NaN,NaN,NaN} | {0,3,0} | (NaN,NaN)
+ {NaN,NaN,NaN} | {1,-1,0} | (NaN,NaN)
+ {NaN,NaN,NaN} | {-0.4,-1,-6} | (NaN,NaN)
+ {NaN,NaN,NaN} | {-0.000184615384615,-1,15.3846153846} | (NaN,NaN)
+ {NaN,NaN,NaN} | {3,NaN,5} | (NaN,NaN)
+ {NaN,NaN,NaN} | {NaN,NaN,NaN} | (NaN,NaN)
+ {NaN,NaN,NaN} | {0,-1,3} | (NaN,NaN)
+ {NaN,NaN,NaN} | {-1,0,3} | (NaN,NaN)
+ {0,-1,3} | {0,-1,5} |
+ {0,-1,3} | {1,0,5} | (-5,3)
+ {0,-1,3} | {0,3,0} |
+ {0,-1,3} | {1,-1,0} | (3,3)
+ {0,-1,3} | {-0.4,-1,-6} | (-22.5,3)
+ {0,-1,3} | {-0.000184615384615,-1,15.3846153846} | (67083.3333333,3)
+ {0,-1,3} | {3,NaN,5} | (NaN,NaN)
+ {0,-1,3} | {NaN,NaN,NaN} | (NaN,NaN)
+ {0,-1,3} | {0,-1,3} |
+ {0,-1,3} | {-1,0,3} | (3,3)
+ {-1,0,3} | {0,-1,5} | (3,5)
+ {-1,0,3} | {1,0,5} |
+ {-1,0,3} | {0,3,0} | (3,0)
+ {-1,0,3} | {1,-1,0} | (3,3)
+ {-1,0,3} | {-0.4,-1,-6} | (3,-7.2)
+ {-1,0,3} | {-0.000184615384615,-1,15.3846153846} | (3,15.3840615385)
+ {-1,0,3} | {3,NaN,5} | (NaN,NaN)
+ {-1,0,3} | {NaN,NaN,NaN} | (NaN,NaN)
+ {-1,0,3} | {0,-1,3} | (3,3)
+ {-1,0,3} | {-1,0,3} |
+(100 rows)
+
+-- Closest point to line segment
+SELECT l.s, l1.s, l.s ## l1.s FROM LINE_TBL l, LSEG_TBL l1;
+ s | s | ?column?
+---------------------------------------+-------------------------------+-----------------------------------
+ {0,-1,5} | [(1,2),(3,4)] | (3,4)
+ {0,-1,5} | [(0,0),(6,6)] | (5,5)
+ {0,-1,5} | [(10,-10),(-3,-4)] | (-3,-4)
+ {0,-1,5} | [(-1000000,200),(300000,-40)] | (56250,5)
+ {0,-1,5} | [(11,22),(33,44)] | (11,22)
+ {0,-1,5} | [(-10,2),(-10,3)] | (-10,3)
+ {0,-1,5} | [(0,-20),(30,-20)] |
+ {0,-1,5} | [(NaN,1),(NaN,90)] |
+ {1,0,5} | [(1,2),(3,4)] | (1,2)
+ {1,0,5} | [(0,0),(6,6)] | (0,0)
+ {1,0,5} | [(10,-10),(-3,-4)] | (-3,-4)
+ {1,0,5} | [(-1000000,200),(300000,-40)] | (-5,15.3855384615)
+ {1,0,5} | [(11,22),(33,44)] | (11,22)
+ {1,0,5} | [(-10,2),(-10,3)] |
+ {1,0,5} | [(0,-20),(30,-20)] | (0,-20)
+ {1,0,5} | [(NaN,1),(NaN,90)] |
+ {0,3,0} | [(1,2),(3,4)] | (1,2)
+ {0,3,0} | [(0,0),(6,6)] | (0,0)
+ {0,3,0} | [(10,-10),(-3,-4)] | (-3,-4)
+ {0,3,0} | [(-1000000,200),(300000,-40)] | (83333.3333333,-1.7763568394e-15)
+ {0,3,0} | [(11,22),(33,44)] | (11,22)
+ {0,3,0} | [(-10,2),(-10,3)] | (-10,2)
+ {0,3,0} | [(0,-20),(30,-20)] |
+ {0,3,0} | [(NaN,1),(NaN,90)] |
+ {1,-1,0} | [(1,2),(3,4)] |
+ {1,-1,0} | [(0,0),(6,6)] |
+ {1,-1,0} | [(10,-10),(-3,-4)] | (-3,-4)
+ {1,-1,0} | [(-1000000,200),(300000,-40)] | (15.3817756722,15.3817756722)
+ {1,-1,0} | [(11,22),(33,44)] |
+ {1,-1,0} | [(-10,2),(-10,3)] | (-10,2)
+ {1,-1,0} | [(0,-20),(30,-20)] | (0,-20)
+ {1,-1,0} | [(NaN,1),(NaN,90)] |
+ {-0.4,-1,-6} | [(1,2),(3,4)] | (1,2)
+ {-0.4,-1,-6} | [(0,0),(6,6)] | (0,0)
+ {-0.4,-1,-6} | [(10,-10),(-3,-4)] | (10,-10)
+ {-0.4,-1,-6} | [(-1000000,200),(300000,-40)] | (-53.4862244113,15.3944897645)
+ {-0.4,-1,-6} | [(11,22),(33,44)] | (11,22)
+ {-0.4,-1,-6} | [(-10,2),(-10,3)] | (-10,2)
+ {-0.4,-1,-6} | [(0,-20),(30,-20)] | (30,-20)
+ {-0.4,-1,-6} | [(NaN,1),(NaN,90)] |
+ {-0.000184615384615,-1,15.3846153846} | [(1,2),(3,4)] | (3,4)
+ {-0.000184615384615,-1,15.3846153846} | [(0,0),(6,6)] | (6,6)
+ {-0.000184615384615,-1,15.3846153846} | [(10,-10),(-3,-4)] | (-3,-4)
+ {-0.000184615384615,-1,15.3846153846} | [(-1000000,200),(300000,-40)] |
+ {-0.000184615384615,-1,15.3846153846} | [(11,22),(33,44)] | (11,22)
+ {-0.000184615384615,-1,15.3846153846} | [(-10,2),(-10,3)] | (-10,3)
+ {-0.000184615384615,-1,15.3846153846} | [(0,-20),(30,-20)] | (30,-20)
+ {-0.000184615384615,-1,15.3846153846} | [(NaN,1),(NaN,90)] |
+ {3,NaN,5} | [(1,2),(3,4)] |
+ {3,NaN,5} | [(0,0),(6,6)] |
+ {3,NaN,5} | [(10,-10),(-3,-4)] |
+ {3,NaN,5} | [(-1000000,200),(300000,-40)] |
+ {3,NaN,5} | [(11,22),(33,44)] |
+ {3,NaN,5} | [(-10,2),(-10,3)] |
+ {3,NaN,5} | [(0,-20),(30,-20)] |
+ {3,NaN,5} | [(NaN,1),(NaN,90)] |
+ {NaN,NaN,NaN} | [(1,2),(3,4)] |
+ {NaN,NaN,NaN} | [(0,0),(6,6)] |
+ {NaN,NaN,NaN} | [(10,-10),(-3,-4)] |
+ {NaN,NaN,NaN} | [(-1000000,200),(300000,-40)] |
+ {NaN,NaN,NaN} | [(11,22),(33,44)] |
+ {NaN,NaN,NaN} | [(-10,2),(-10,3)] |
+ {NaN,NaN,NaN} | [(0,-20),(30,-20)] |
+ {NaN,NaN,NaN} | [(NaN,1),(NaN,90)] |
+ {0,-1,3} | [(1,2),(3,4)] | (2,3)
+ {0,-1,3} | [(0,0),(6,6)] | (3,3)
+ {0,-1,3} | [(10,-10),(-3,-4)] | (-3,-4)
+ {0,-1,3} | [(-1000000,200),(300000,-40)] | (67083.3333333,3)
+ {0,-1,3} | [(11,22),(33,44)] | (11,22)
+ {0,-1,3} | [(-10,2),(-10,3)] | (-10,3)
+ {0,-1,3} | [(0,-20),(30,-20)] |
+ {0,-1,3} | [(NaN,1),(NaN,90)] |
+ {-1,0,3} | [(1,2),(3,4)] | (3,4)
+ {-1,0,3} | [(0,0),(6,6)] | (3,3)
+ {-1,0,3} | [(10,-10),(-3,-4)] | (3,-6.76923076923)
+ {-1,0,3} | [(-1000000,200),(300000,-40)] | (3,15.3840615385)
+ {-1,0,3} | [(11,22),(33,44)] | (11,22)
+ {-1,0,3} | [(-10,2),(-10,3)] |
+ {-1,0,3} | [(0,-20),(30,-20)] | (3,-20)
+ {-1,0,3} | [(NaN,1),(NaN,90)] |
+(80 rows)
+
+-- Closest point to box
+SELECT l.s, b.f1, l.s ## b.f1 FROM LINE_TBL l, BOX_TBL b;
+ERROR: function "close_lb" not implemented
--
-- Line segments
--
LINE 1: SELECT '' AS count, p.f1, l.s, l.s # p.f1 AS intersection
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
--- closest point
-SELECT '' AS thirty, p.f1, l.s, p.f1 ## l.s AS closest
- FROM LSEG_TBL l, POINT_TBL p;
- thirty | f1 | s | closest
---------+------------+-------------------------------+----------------------------------
- | (0,0) | [(1,2),(3,4)] | (1,2)
- | (0,0) | [(0,0),(6,6)] | (-0,0)
- | (0,0) | [(10,-10),(-3,-4)] | (-2.0487804878,-4.43902439024)
- | (0,0) | [(-1000000,200),(300000,-40)] | (0.00284023658959,15.3846148603)
- | (0,0) | [(11,22),(33,44)] | (11,22)
- | (-10,0) | [(1,2),(3,4)] | (1,2)
- | (-10,0) | [(0,0),(6,6)] | (0,0)
- | (-10,0) | [(10,-10),(-3,-4)] | (-3,-4)
- | (-10,0) | [(-1000000,200),(300000,-40)] | (-9.99715942258,15.386461014)
- | (-10,0) | [(11,22),(33,44)] | (11,22)
- | (-3,4) | [(1,2),(3,4)] | (1,2)
- | (-3,4) | [(0,0),(6,6)] | (0.5,0.5)
- | (-3,4) | [(10,-10),(-3,-4)] | (-3,-4)
- | (-3,4) | [(-1000000,200),(300000,-40)] | (-2.99789812268,15.3851688427)
- | (-3,4) | [(11,22),(33,44)] | (11,22)
- | (5.1,34.5) | [(1,2),(3,4)] | (3,4)
- | (5.1,34.5) | [(0,0),(6,6)] | (6,6)
- | (5.1,34.5) | [(10,-10),(-3,-4)] | (-3,-4)
- | (5.1,34.5) | [(-1000000,200),(300000,-40)] | (5.09647083221,15.3836744977)
- | (5.1,34.5) | [(11,22),(33,44)] | (14.3,25.3)
- | (-5,-12) | [(1,2),(3,4)] | (1,2)
- | (-5,-12) | [(0,0),(6,6)] | (0,0)
- | (-5,-12) | [(10,-10),(-3,-4)] | (-1.60487804878,-4.64390243902)
- | (-5,-12) | [(-1000000,200),(300000,-40)] | (-4.99494420846,15.3855375282)
- | (-5,-12) | [(11,22),(33,44)] | (11,22)
- | (10,10) | [(1,2),(3,4)] | (3,4)
- | (10,10) | [(0,0),(6,6)] | (6,6)
- | (10,10) | [(10,-10),(-3,-4)] | (2.39024390244,-6.48780487805)
- | (10,10) | [(-1000000,200),(300000,-40)] | (10.000993742,15.3827690473)
- | (10,10) | [(11,22),(33,44)] | (11,22)
-(30 rows)
+-- Length
+SELECT s, @-@ s FROM LSEG_TBL;
+ s | ?column?
+-------------------------------+---------------
+ [(1,2),(3,4)] | 2.82842712475
+ [(0,0),(6,6)] | 8.48528137424
+ [(10,-10),(-3,-4)] | 14.3178210633
+ [(-1000000,200),(300000,-40)] | 1300000.02215
+ [(11,22),(33,44)] | 31.1126983722
+ [(-10,2),(-10,3)] | 1
+ [(0,-20),(30,-20)] | 30
+ [(NaN,1),(NaN,90)] | NaN
+(8 rows)
+
+-- Vertical
+SELECT s FROM LSEG_TBL WHERE ?| s;
+ s
+-------------------
+ [(-10,2),(-10,3)]
+(1 row)
+
+-- Horizontal
+SELECT s FROM LSEG_TBL WHERE ?- s;
+ s
+--------------------
+ [(0,-20),(30,-20)]
+(1 row)
+
+-- Center
+SELECT s, @@ s FROM LSEG_TBL;
+ s | ?column?
+-------------------------------+--------------
+ [(1,2),(3,4)] | (2,3)
+ [(0,0),(6,6)] | (3,3)
+ [(10,-10),(-3,-4)] | (3.5,-7)
+ [(-1000000,200),(300000,-40)] | (-350000,80)
+ [(11,22),(33,44)] | (22,33)
+ [(-10,2),(-10,3)] | (-10,2.5)
+ [(0,-20),(30,-20)] | (15,-20)
+ [(NaN,1),(NaN,90)] | (NaN,45.5)
+(8 rows)
+
+-- To point
+SELECT s, s::point FROM LSEG_TBL;
+ s | s
+-------------------------------+--------------
+ [(1,2),(3,4)] | (2,3)
+ [(0,0),(6,6)] | (3,3)
+ [(10,-10),(-3,-4)] | (3.5,-7)
+ [(-1000000,200),(300000,-40)] | (-350000,80)
+ [(11,22),(33,44)] | (22,33)
+ [(-10,2),(-10,3)] | (-10,2.5)
+ [(0,-20),(30,-20)] | (15,-20)
+ [(NaN,1),(NaN,90)] | (NaN,45.5)
+(8 rows)
+
+-- Has points less than line segment
+SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s < l2.s;
+ s | s
+--------------------+-------------------------------
+ [(1,2),(3,4)] | [(0,0),(6,6)]
+ [(1,2),(3,4)] | [(10,-10),(-3,-4)]
+ [(1,2),(3,4)] | [(-1000000,200),(300000,-40)]
+ [(1,2),(3,4)] | [(11,22),(33,44)]
+ [(1,2),(3,4)] | [(0,-20),(30,-20)]
+ [(0,0),(6,6)] | [(10,-10),(-3,-4)]
+ [(0,0),(6,6)] | [(-1000000,200),(300000,-40)]
+ [(0,0),(6,6)] | [(11,22),(33,44)]
+ [(0,0),(6,6)] | [(0,-20),(30,-20)]
+ [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)]
+ [(10,-10),(-3,-4)] | [(11,22),(33,44)]
+ [(10,-10),(-3,-4)] | [(0,-20),(30,-20)]
+ [(11,22),(33,44)] | [(-1000000,200),(300000,-40)]
+ [(-10,2),(-10,3)] | [(1,2),(3,4)]
+ [(-10,2),(-10,3)] | [(0,0),(6,6)]
+ [(-10,2),(-10,3)] | [(10,-10),(-3,-4)]
+ [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)]
+ [(-10,2),(-10,3)] | [(11,22),(33,44)]
+ [(-10,2),(-10,3)] | [(0,-20),(30,-20)]
+ [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)]
+ [(0,-20),(30,-20)] | [(11,22),(33,44)]
+(21 rows)
+
+-- Has points less than or equal to line segment
+SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s <= l2.s;
+ s | s
+-------------------------------+-------------------------------
+ [(1,2),(3,4)] | [(1,2),(3,4)]
+ [(1,2),(3,4)] | [(0,0),(6,6)]
+ [(1,2),(3,4)] | [(10,-10),(-3,-4)]
+ [(1,2),(3,4)] | [(-1000000,200),(300000,-40)]
+ [(1,2),(3,4)] | [(11,22),(33,44)]
+ [(1,2),(3,4)] | [(0,-20),(30,-20)]
+ [(0,0),(6,6)] | [(0,0),(6,6)]
+ [(0,0),(6,6)] | [(10,-10),(-3,-4)]
+ [(0,0),(6,6)] | [(-1000000,200),(300000,-40)]
+ [(0,0),(6,6)] | [(11,22),(33,44)]
+ [(0,0),(6,6)] | [(0,-20),(30,-20)]
+ [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)]
+ [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)]
+ [(10,-10),(-3,-4)] | [(11,22),(33,44)]
+ [(10,-10),(-3,-4)] | [(0,-20),(30,-20)]
+ [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)]
+ [(11,22),(33,44)] | [(-1000000,200),(300000,-40)]
+ [(11,22),(33,44)] | [(11,22),(33,44)]
+ [(-10,2),(-10,3)] | [(1,2),(3,4)]
+ [(-10,2),(-10,3)] | [(0,0),(6,6)]
+ [(-10,2),(-10,3)] | [(10,-10),(-3,-4)]
+ [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)]
+ [(-10,2),(-10,3)] | [(11,22),(33,44)]
+ [(-10,2),(-10,3)] | [(-10,2),(-10,3)]
+ [(-10,2),(-10,3)] | [(0,-20),(30,-20)]
+ [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)]
+ [(0,-20),(30,-20)] | [(11,22),(33,44)]
+ [(0,-20),(30,-20)] | [(0,-20),(30,-20)]
+(28 rows)
+
+-- Has points equal to line segment
+SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s = l2.s;
+ s | s
+-------------------------------+-------------------------------
+ [(1,2),(3,4)] | [(1,2),(3,4)]
+ [(0,0),(6,6)] | [(0,0),(6,6)]
+ [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)]
+ [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)]
+ [(11,22),(33,44)] | [(11,22),(33,44)]
+ [(-10,2),(-10,3)] | [(-10,2),(-10,3)]
+ [(0,-20),(30,-20)] | [(0,-20),(30,-20)]
+ [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)]
+(8 rows)
+
+-- Has points greater than or equal to line segment
+SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s >= l2.s;
+ s | s
+-------------------------------+-------------------------------
+ [(1,2),(3,4)] | [(1,2),(3,4)]
+ [(1,2),(3,4)] | [(-10,2),(-10,3)]
+ [(0,0),(6,6)] | [(1,2),(3,4)]
+ [(0,0),(6,6)] | [(0,0),(6,6)]
+ [(0,0),(6,6)] | [(-10,2),(-10,3)]
+ [(10,-10),(-3,-4)] | [(1,2),(3,4)]
+ [(10,-10),(-3,-4)] | [(0,0),(6,6)]
+ [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)]
+ [(10,-10),(-3,-4)] | [(-10,2),(-10,3)]
+ [(-1000000,200),(300000,-40)] | [(1,2),(3,4)]
+ [(-1000000,200),(300000,-40)] | [(0,0),(6,6)]
+ [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)]
+ [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)]
+ [(-1000000,200),(300000,-40)] | [(11,22),(33,44)]
+ [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)]
+ [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)]
+ [(11,22),(33,44)] | [(1,2),(3,4)]
+ [(11,22),(33,44)] | [(0,0),(6,6)]
+ [(11,22),(33,44)] | [(10,-10),(-3,-4)]
+ [(11,22),(33,44)] | [(11,22),(33,44)]
+ [(11,22),(33,44)] | [(-10,2),(-10,3)]
+ [(11,22),(33,44)] | [(0,-20),(30,-20)]
+ [(-10,2),(-10,3)] | [(-10,2),(-10,3)]
+ [(0,-20),(30,-20)] | [(1,2),(3,4)]
+ [(0,-20),(30,-20)] | [(0,0),(6,6)]
+ [(0,-20),(30,-20)] | [(10,-10),(-3,-4)]
+ [(0,-20),(30,-20)] | [(-10,2),(-10,3)]
+ [(0,-20),(30,-20)] | [(0,-20),(30,-20)]
+(28 rows)
+
+-- Has points greater than line segment
+SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s > l2.s;
+ s | s
+-------------------------------+--------------------
+ [(1,2),(3,4)] | [(-10,2),(-10,3)]
+ [(0,0),(6,6)] | [(1,2),(3,4)]
+ [(0,0),(6,6)] | [(-10,2),(-10,3)]
+ [(10,-10),(-3,-4)] | [(1,2),(3,4)]
+ [(10,-10),(-3,-4)] | [(0,0),(6,6)]
+ [(10,-10),(-3,-4)] | [(-10,2),(-10,3)]
+ [(-1000000,200),(300000,-40)] | [(1,2),(3,4)]
+ [(-1000000,200),(300000,-40)] | [(0,0),(6,6)]
+ [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)]
+ [(-1000000,200),(300000,-40)] | [(11,22),(33,44)]
+ [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)]
+ [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)]
+ [(11,22),(33,44)] | [(1,2),(3,4)]
+ [(11,22),(33,44)] | [(0,0),(6,6)]
+ [(11,22),(33,44)] | [(10,-10),(-3,-4)]
+ [(11,22),(33,44)] | [(-10,2),(-10,3)]
+ [(11,22),(33,44)] | [(0,-20),(30,-20)]
+ [(0,-20),(30,-20)] | [(1,2),(3,4)]
+ [(0,-20),(30,-20)] | [(0,0),(6,6)]
+ [(0,-20),(30,-20)] | [(10,-10),(-3,-4)]
+ [(0,-20),(30,-20)] | [(-10,2),(-10,3)]
+(21 rows)
+
+-- Has points not equal to line segment
+SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s != l2.s;
+ s | s
+-------------------------------+-------------------------------
+ [(1,2),(3,4)] | [(0,0),(6,6)]
+ [(1,2),(3,4)] | [(10,-10),(-3,-4)]
+ [(1,2),(3,4)] | [(-1000000,200),(300000,-40)]
+ [(1,2),(3,4)] | [(11,22),(33,44)]
+ [(1,2),(3,4)] | [(-10,2),(-10,3)]
+ [(1,2),(3,4)] | [(0,-20),(30,-20)]
+ [(1,2),(3,4)] | [(NaN,1),(NaN,90)]
+ [(0,0),(6,6)] | [(1,2),(3,4)]
+ [(0,0),(6,6)] | [(10,-10),(-3,-4)]
+ [(0,0),(6,6)] | [(-1000000,200),(300000,-40)]
+ [(0,0),(6,6)] | [(11,22),(33,44)]
+ [(0,0),(6,6)] | [(-10,2),(-10,3)]
+ [(0,0),(6,6)] | [(0,-20),(30,-20)]
+ [(0,0),(6,6)] | [(NaN,1),(NaN,90)]
+ [(10,-10),(-3,-4)] | [(1,2),(3,4)]
+ [(10,-10),(-3,-4)] | [(0,0),(6,6)]
+ [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)]
+ [(10,-10),(-3,-4)] | [(11,22),(33,44)]
+ [(10,-10),(-3,-4)] | [(-10,2),(-10,3)]
+ [(10,-10),(-3,-4)] | [(0,-20),(30,-20)]
+ [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)]
+ [(-1000000,200),(300000,-40)] | [(1,2),(3,4)]
+ [(-1000000,200),(300000,-40)] | [(0,0),(6,6)]
+ [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)]
+ [(-1000000,200),(300000,-40)] | [(11,22),(33,44)]
+ [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)]
+ [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)]
+ [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)]
+ [(11,22),(33,44)] | [(1,2),(3,4)]
+ [(11,22),(33,44)] | [(0,0),(6,6)]
+ [(11,22),(33,44)] | [(10,-10),(-3,-4)]
+ [(11,22),(33,44)] | [(-1000000,200),(300000,-40)]
+ [(11,22),(33,44)] | [(-10,2),(-10,3)]
+ [(11,22),(33,44)] | [(0,-20),(30,-20)]
+ [(11,22),(33,44)] | [(NaN,1),(NaN,90)]
+ [(-10,2),(-10,3)] | [(1,2),(3,4)]
+ [(-10,2),(-10,3)] | [(0,0),(6,6)]
+ [(-10,2),(-10,3)] | [(10,-10),(-3,-4)]
+ [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)]
+ [(-10,2),(-10,3)] | [(11,22),(33,44)]
+ [(-10,2),(-10,3)] | [(0,-20),(30,-20)]
+ [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)]
+ [(0,-20),(30,-20)] | [(1,2),(3,4)]
+ [(0,-20),(30,-20)] | [(0,0),(6,6)]
+ [(0,-20),(30,-20)] | [(10,-10),(-3,-4)]
+ [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)]
+ [(0,-20),(30,-20)] | [(11,22),(33,44)]
+ [(0,-20),(30,-20)] | [(-10,2),(-10,3)]
+ [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)]
+ [(NaN,1),(NaN,90)] | [(1,2),(3,4)]
+ [(NaN,1),(NaN,90)] | [(0,0),(6,6)]
+ [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)]
+ [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)]
+ [(NaN,1),(NaN,90)] | [(11,22),(33,44)]
+ [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)]
+ [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)]
+(56 rows)
+
+-- Parallel with line segment
+SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s ?|| l2.s;
+ s | s
+-------------------------------+-------------------------------
+ [(1,2),(3,4)] | [(1,2),(3,4)]
+ [(1,2),(3,4)] | [(0,0),(6,6)]
+ [(1,2),(3,4)] | [(11,22),(33,44)]
+ [(0,0),(6,6)] | [(1,2),(3,4)]
+ [(0,0),(6,6)] | [(0,0),(6,6)]
+ [(0,0),(6,6)] | [(11,22),(33,44)]
+ [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)]
+ [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)]
+ [(11,22),(33,44)] | [(1,2),(3,4)]
+ [(11,22),(33,44)] | [(0,0),(6,6)]
+ [(11,22),(33,44)] | [(11,22),(33,44)]
+ [(-10,2),(-10,3)] | [(-10,2),(-10,3)]
+ [(0,-20),(30,-20)] | [(0,-20),(30,-20)]
+(13 rows)
+
+-- Perpendicular with line segment
+SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s ?-| l2.s;
+ s | s
+--------------------+--------------------
+ [(-10,2),(-10,3)] | [(0,-20),(30,-20)]
+ [(0,-20),(30,-20)] | [(-10,2),(-10,3)]
+(2 rows)
+
+-- Distance to line
+SELECT l.s, l1.s, l.s <-> l1.s FROM LSEG_TBL l, LINE_TBL l1;
+ s | s | ?column?
+-------------------------------+---------------------------------------+----------------
+ [(1,2),(3,4)] | {0,-1,5} | 1
+ [(0,0),(6,6)] | {0,-1,5} | 0
+ [(10,-10),(-3,-4)] | {0,-1,5} | 9
+ [(-1000000,200),(300000,-40)] | {0,-1,5} | 0
+ [(11,22),(33,44)] | {0,-1,5} | 17
+ [(-10,2),(-10,3)] | {0,-1,5} | 2
+ [(0,-20),(30,-20)] | {0,-1,5} | 25
+ [(NaN,1),(NaN,90)] | {0,-1,5} | NaN
+ [(1,2),(3,4)] | {1,0,5} | 6
+ [(0,0),(6,6)] | {1,0,5} | 5
+ [(10,-10),(-3,-4)] | {1,0,5} | 2
+ [(-1000000,200),(300000,-40)] | {1,0,5} | 0
+ [(11,22),(33,44)] | {1,0,5} | 16
+ [(-10,2),(-10,3)] | {1,0,5} | 5
+ [(0,-20),(30,-20)] | {1,0,5} | 5
+ [(NaN,1),(NaN,90)] | {1,0,5} | NaN
+ [(1,2),(3,4)] | {0,3,0} | 2
+ [(0,0),(6,6)] | {0,3,0} | 0
+ [(10,-10),(-3,-4)] | {0,3,0} | 4
+ [(-1000000,200),(300000,-40)] | {0,3,0} | 0
+ [(11,22),(33,44)] | {0,3,0} | 22
+ [(-10,2),(-10,3)] | {0,3,0} | 2
+ [(0,-20),(30,-20)] | {0,3,0} | 20
+ [(NaN,1),(NaN,90)] | {0,3,0} | NaN
+ [(1,2),(3,4)] | {1,-1,0} | 0.707106781187
+ [(0,0),(6,6)] | {1,-1,0} | 0
+ [(10,-10),(-3,-4)] | {1,-1,0} | 0.707106781187
+ [(-1000000,200),(300000,-40)] | {1,-1,0} | 0
+ [(11,22),(33,44)] | {1,-1,0} | 7.77817459305
+ [(-10,2),(-10,3)] | {1,-1,0} | 8.48528137424
+ [(0,-20),(30,-20)] | {1,-1,0} | 14.1421356237
+ [(NaN,1),(NaN,90)] | {1,-1,0} | NaN
+ [(1,2),(3,4)] | {-0.4,-1,-6} | 7.79920420344
+ [(0,0),(6,6)] | {-0.4,-1,-6} | 5.57086014531
+ [(10,-10),(-3,-4)] | {-0.4,-1,-6} | 0
+ [(-1000000,200),(300000,-40)] | {-0.4,-1,-6} | 0
+ [(11,22),(33,44)] | {-0.4,-1,-6} | 30.0826447847
+ [(-10,2),(-10,3)] | {-0.4,-1,-6} | 3.71390676354
+ [(0,-20),(30,-20)] | {-0.4,-1,-6} | 1.85695338177
+ [(NaN,1),(NaN,90)] | {-0.4,-1,-6} | NaN
+ [(1,2),(3,4)] | {-0.000184615384615,-1,15.3846153846} | 11.3840613445
+ [(0,0),(6,6)] | {-0.000184615384615,-1,15.3846153846} | 9.3835075324
+ [(10,-10),(-3,-4)] | {-0.000184615384615,-1,15.3846153846} | 19.3851689004
+ [(-1000000,200),(300000,-40)] | {-0.000184615384615,-1,15.3846153846} | 0
+ [(11,22),(33,44)] | {-0.000184615384615,-1,15.3846153846} | 6.61741527185
+ [(-10,2),(-10,3)] | {-0.000184615384615,-1,15.3846153846} | 12.3864613274
+ [(0,-20),(30,-20)] | {-0.000184615384615,-1,15.3846153846} | 35.3790763202
+ [(NaN,1),(NaN,90)] | {-0.000184615384615,-1,15.3846153846} | NaN
+ [(1,2),(3,4)] | {3,NaN,5} | NaN
+ [(0,0),(6,6)] | {3,NaN,5} | NaN
+ [(10,-10),(-3,-4)] | {3,NaN,5} | NaN
+ [(-1000000,200),(300000,-40)] | {3,NaN,5} | NaN
+ [(11,22),(33,44)] | {3,NaN,5} | NaN
+ [(-10,2),(-10,3)] | {3,NaN,5} | NaN
+ [(0,-20),(30,-20)] | {3,NaN,5} | NaN
+ [(NaN,1),(NaN,90)] | {3,NaN,5} | NaN
+ [(1,2),(3,4)] | {NaN,NaN,NaN} | NaN
+ [(0,0),(6,6)] | {NaN,NaN,NaN} | NaN
+ [(10,-10),(-3,-4)] | {NaN,NaN,NaN} | NaN
+ [(-1000000,200),(300000,-40)] | {NaN,NaN,NaN} | NaN
+ [(11,22),(33,44)] | {NaN,NaN,NaN} | NaN
+ [(-10,2),(-10,3)] | {NaN,NaN,NaN} | NaN
+ [(0,-20),(30,-20)] | {NaN,NaN,NaN} | NaN
+ [(NaN,1),(NaN,90)] | {NaN,NaN,NaN} | NaN
+ [(1,2),(3,4)] | {0,-1,3} | 0
+ [(0,0),(6,6)] | {0,-1,3} | 0
+ [(10,-10),(-3,-4)] | {0,-1,3} | 7
+ [(-1000000,200),(300000,-40)] | {0,-1,3} | 0
+ [(11,22),(33,44)] | {0,-1,3} | 19
+ [(-10,2),(-10,3)] | {0,-1,3} | 0
+ [(0,-20),(30,-20)] | {0,-1,3} | 23
+ [(NaN,1),(NaN,90)] | {0,-1,3} | NaN
+ [(1,2),(3,4)] | {-1,0,3} | 0
+ [(0,0),(6,6)] | {-1,0,3} | 0
+ [(10,-10),(-3,-4)] | {-1,0,3} | 0
+ [(-1000000,200),(300000,-40)] | {-1,0,3} | 0
+ [(11,22),(33,44)] | {-1,0,3} | 8
+ [(-10,2),(-10,3)] | {-1,0,3} | 13
+ [(0,-20),(30,-20)] | {-1,0,3} | 0
+ [(NaN,1),(NaN,90)] | {-1,0,3} | NaN
+(80 rows)
+
+-- Distance to line segment
+SELECT l1.s, l2.s, l1.s <-> l2.s FROM LSEG_TBL l1, LSEG_TBL l2;
+ s | s | ?column?
+-------------------------------+-------------------------------+----------------
+ [(1,2),(3,4)] | [(1,2),(3,4)] | 0
+ [(1,2),(3,4)] | [(0,0),(6,6)] | 0.707106781187
+ [(1,2),(3,4)] | [(10,-10),(-3,-4)] | 7.12398901685
+ [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] | 11.3840613445
+ [(1,2),(3,4)] | [(11,22),(33,44)] | 19.6977156036
+ [(1,2),(3,4)] | [(-10,2),(-10,3)] | 11
+ [(1,2),(3,4)] | [(0,-20),(30,-20)] | 22
+ [(1,2),(3,4)] | [(NaN,1),(NaN,90)] | NaN
+ [(0,0),(6,6)] | [(1,2),(3,4)] | 0.707106781187
+ [(0,0),(6,6)] | [(0,0),(6,6)] | 0
+ [(0,0),(6,6)] | [(10,-10),(-3,-4)] | 4.88901207039
+ [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] | 9.3835075324
+ [(0,0),(6,6)] | [(11,22),(33,44)] | 16.7630546142
+ [(0,0),(6,6)] | [(-10,2),(-10,3)] | 10.1980390272
+ [(0,0),(6,6)] | [(0,-20),(30,-20)] | 20
+ [(0,0),(6,6)] | [(NaN,1),(NaN,90)] | NaN
+ [(10,-10),(-3,-4)] | [(1,2),(3,4)] | 7.12398901685
+ [(10,-10),(-3,-4)] | [(0,0),(6,6)] | 4.88901207039
+ [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] | 0
+ [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] | 19.3851689004
+ [(10,-10),(-3,-4)] | [(11,22),(33,44)] | 29.4737584815
+ [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] | 9.21954445729
+ [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] | 10
+ [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] | NaN
+ [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] | 11.3840613445
+ [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] | 9.3835075324
+ [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] | 19.3851689004
+ [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] | 0
+ [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] | 6.61741527185
+ [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] | 12.3864613274
+ [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] | 35.3790763202
+ [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] | NaN
+ [(11,22),(33,44)] | [(1,2),(3,4)] | 19.6977156036
+ [(11,22),(33,44)] | [(0,0),(6,6)] | 16.7630546142
+ [(11,22),(33,44)] | [(10,-10),(-3,-4)] | 29.4737584815
+ [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] | 6.61741527185
+ [(11,22),(33,44)] | [(11,22),(33,44)] | 0
+ [(11,22),(33,44)] | [(-10,2),(-10,3)] | 28.319604517
+ [(11,22),(33,44)] | [(0,-20),(30,-20)] | 42
+ [(11,22),(33,44)] | [(NaN,1),(NaN,90)] | NaN
+ [(-10,2),(-10,3)] | [(1,2),(3,4)] | 11
+ [(-10,2),(-10,3)] | [(0,0),(6,6)] | 10.1980390272
+ [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] | 9.21954445729
+ [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] | 12.3864613274
+ [(-10,2),(-10,3)] | [(11,22),(33,44)] | 28.319604517
+ [(-10,2),(-10,3)] | [(-10,2),(-10,3)] | 0
+ [(-10,2),(-10,3)] | [(0,-20),(30,-20)] | 24.1660919472
+ [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] | NaN
+ [(0,-20),(30,-20)] | [(1,2),(3,4)] | 22
+ [(0,-20),(30,-20)] | [(0,0),(6,6)] | 20
+ [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] | 10
+ [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] | 35.3790763202
+ [(0,-20),(30,-20)] | [(11,22),(33,44)] | 42
+ [(0,-20),(30,-20)] | [(-10,2),(-10,3)] | 24.1660919472
+ [(0,-20),(30,-20)] | [(0,-20),(30,-20)] | 0
+ [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] | NaN
+ [(NaN,1),(NaN,90)] | [(1,2),(3,4)] | NaN
+ [(NaN,1),(NaN,90)] | [(0,0),(6,6)] | NaN
+ [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] | NaN
+ [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] | NaN
+ [(NaN,1),(NaN,90)] | [(11,22),(33,44)] | NaN
+ [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] | NaN
+ [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] | NaN
+ [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] | NaN
+(64 rows)
+
+-- Distance to box
+SELECT l.s, b.f1, l.s <-> b.f1 FROM LSEG_TBL l, BOX_TBL b;
+ s | f1 | ?column?
+-------------------------------+---------------------+----------------
+ [(1,2),(3,4)] | (2,2),(0,0) | 0
+ [(1,2),(3,4)] | (3,3),(1,1) | 0
+ [(1,2),(3,4)] | (-2,2),(-8,-10) | 3
+ [(1,2),(3,4)] | (2.5,3.5),(2.5,2.5) | 0
+ [(1,2),(3,4)] | (3,3),(3,3) | 0.707106781187
+ [(0,0),(6,6)] | (2,2),(0,0) | 0
+ [(0,0),(6,6)] | (3,3),(1,1) | 0
+ [(0,0),(6,6)] | (-2,2),(-8,-10) | 2
+ [(0,0),(6,6)] | (2.5,3.5),(2.5,2.5) | 0
+ [(0,0),(6,6)] | (3,3),(3,3) | 0
+ [(10,-10),(-3,-4)] | (2,2),(0,0) | 4.88901207039
+ [(10,-10),(-3,-4)] | (3,3),(1,1) | 6.21602963235
+ [(10,-10),(-3,-4)] | (-2,2),(-8,-10) | 0
+ [(10,-10),(-3,-4)] | (2.5,3.5),(2.5,2.5) | 8.20655597529
+ [(10,-10),(-3,-4)] | (3,3),(3,3) | 8.87006475627
+ [(-1000000,200),(300000,-40)] | (2,2),(0,0) | 13.3842459258
+ [(-1000000,200),(300000,-40)] | (3,3),(1,1) | 12.3840613274
+ [(-1000000,200),(300000,-40)] | (-2,2),(-8,-10) | 13.3849843873
+ [(-1000000,200),(300000,-40)] | (2.5,3.5),(2.5,2.5) | 11.8841536436
+ [(-1000000,200),(300000,-40)] | (3,3),(3,3) | 12.3840613274
+ [(11,22),(33,44)] | (2,2),(0,0) | 21.9317121995
+ [(11,22),(33,44)] | (3,3),(1,1) | 20.6155281281
+ [(11,22),(33,44)] | (-2,2),(-8,-10) | 23.8537208838
+ [(11,22),(33,44)] | (2.5,3.5),(2.5,2.5) | 20.3592730715
+ [(11,22),(33,44)] | (3,3),(3,3) | 20.6155281281
+ [(-10,2),(-10,3)] | (2,2),(0,0) | 10
+ [(-10,2),(-10,3)] | (3,3),(1,1) | 11
+ [(-10,2),(-10,3)] | (-2,2),(-8,-10) | 2
+ [(-10,2),(-10,3)] | (2.5,3.5),(2.5,2.5) | 12.5
+ [(-10,2),(-10,3)] | (3,3),(3,3) | 13
+ [(0,-20),(30,-20)] | (2,2),(0,0) | 20
+ [(0,-20),(30,-20)] | (3,3),(1,1) | 21
+ [(0,-20),(30,-20)] | (-2,2),(-8,-10) | 10.1980390272
+ [(0,-20),(30,-20)] | (2.5,3.5),(2.5,2.5) | 22.5
+ [(0,-20),(30,-20)] | (3,3),(3,3) | 23
+ [(NaN,1),(NaN,90)] | (2,2),(0,0) | NaN
+ [(NaN,1),(NaN,90)] | (3,3),(1,1) | NaN
+ [(NaN,1),(NaN,90)] | (-2,2),(-8,-10) | NaN
+ [(NaN,1),(NaN,90)] | (2.5,3.5),(2.5,2.5) | NaN
+ [(NaN,1),(NaN,90)] | (3,3),(3,3) | NaN
+(40 rows)
+
+-- Intersect with line segment
+SELECT l.s, l1.s FROM LSEG_TBL l, LINE_TBL l1 WHERE l.s ?# l1.s;
+ s | s
+-------------------------------+--------------
+ [(0,0),(6,6)] | {0,-1,5}
+ [(-1000000,200),(300000,-40)] | {0,-1,5}
+ [(-1000000,200),(300000,-40)] | {1,0,5}
+ [(0,0),(6,6)] | {0,3,0}
+ [(-1000000,200),(300000,-40)] | {0,3,0}
+ [(-1000000,200),(300000,-40)] | {1,-1,0}
+ [(10,-10),(-3,-4)] | {-0.4,-1,-6}
+ [(-1000000,200),(300000,-40)] | {-0.4,-1,-6}
+ [(1,2),(3,4)] | {0,-1,3}
+ [(0,0),(6,6)] | {0,-1,3}
+ [(-1000000,200),(300000,-40)] | {0,-1,3}
+ [(-10,2),(-10,3)] | {0,-1,3}
+ [(1,2),(3,4)] | {-1,0,3}
+ [(0,0),(6,6)] | {-1,0,3}
+ [(10,-10),(-3,-4)] | {-1,0,3}
+ [(-1000000,200),(300000,-40)] | {-1,0,3}
+ [(0,-20),(30,-20)] | {-1,0,3}
+(17 rows)
+
+-- Intersect with box
+SELECT l.s, b.f1 FROM LSEG_TBL l, BOX_TBL b WHERE l.s ?# b.f1;
+ s | f1
+--------------------+---------------------
+ [(1,2),(3,4)] | (2,2),(0,0)
+ [(1,2),(3,4)] | (3,3),(1,1)
+ [(1,2),(3,4)] | (2.5,3.5),(2.5,2.5)
+ [(0,0),(6,6)] | (2,2),(0,0)
+ [(0,0),(6,6)] | (3,3),(1,1)
+ [(0,0),(6,6)] | (2.5,3.5),(2.5,2.5)
+ [(0,0),(6,6)] | (3,3),(3,3)
+ [(10,-10),(-3,-4)] | (-2,2),(-8,-10)
+(8 rows)
+
+-- Intersection point with line segment
+SELECT l1.s, l2.s, l1.s # l2.s FROM LSEG_TBL l1, LSEG_TBL l2;
+ s | s | ?column?
+-------------------------------+-------------------------------+----------
+ [(1,2),(3,4)] | [(1,2),(3,4)] |
+ [(1,2),(3,4)] | [(0,0),(6,6)] |
+ [(1,2),(3,4)] | [(10,-10),(-3,-4)] |
+ [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] |
+ [(1,2),(3,4)] | [(11,22),(33,44)] |
+ [(1,2),(3,4)] | [(-10,2),(-10,3)] |
+ [(1,2),(3,4)] | [(0,-20),(30,-20)] |
+ [(1,2),(3,4)] | [(NaN,1),(NaN,90)] |
+ [(0,0),(6,6)] | [(1,2),(3,4)] |
+ [(0,0),(6,6)] | [(0,0),(6,6)] |
+ [(0,0),(6,6)] | [(10,-10),(-3,-4)] |
+ [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] |
+ [(0,0),(6,6)] | [(11,22),(33,44)] |
+ [(0,0),(6,6)] | [(-10,2),(-10,3)] |
+ [(0,0),(6,6)] | [(0,-20),(30,-20)] |
+ [(0,0),(6,6)] | [(NaN,1),(NaN,90)] |
+ [(10,-10),(-3,-4)] | [(1,2),(3,4)] |
+ [(10,-10),(-3,-4)] | [(0,0),(6,6)] |
+ [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] |
+ [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] |
+ [(10,-10),(-3,-4)] | [(11,22),(33,44)] |
+ [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] |
+ [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] |
+ [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] |
+ [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] |
+ [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] |
+ [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] |
+ [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] |
+ [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] |
+ [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] |
+ [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] |
+ [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] |
+ [(11,22),(33,44)] | [(1,2),(3,4)] |
+ [(11,22),(33,44)] | [(0,0),(6,6)] |
+ [(11,22),(33,44)] | [(10,-10),(-3,-4)] |
+ [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] |
+ [(11,22),(33,44)] | [(11,22),(33,44)] |
+ [(11,22),(33,44)] | [(-10,2),(-10,3)] |
+ [(11,22),(33,44)] | [(0,-20),(30,-20)] |
+ [(11,22),(33,44)] | [(NaN,1),(NaN,90)] |
+ [(-10,2),(-10,3)] | [(1,2),(3,4)] |
+ [(-10,2),(-10,3)] | [(0,0),(6,6)] |
+ [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] |
+ [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] |
+ [(-10,2),(-10,3)] | [(11,22),(33,44)] |
+ [(-10,2),(-10,3)] | [(-10,2),(-10,3)] |
+ [(-10,2),(-10,3)] | [(0,-20),(30,-20)] |
+ [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] |
+ [(0,-20),(30,-20)] | [(1,2),(3,4)] |
+ [(0,-20),(30,-20)] | [(0,0),(6,6)] |
+ [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] |
+ [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] |
+ [(0,-20),(30,-20)] | [(11,22),(33,44)] |
+ [(0,-20),(30,-20)] | [(-10,2),(-10,3)] |
+ [(0,-20),(30,-20)] | [(0,-20),(30,-20)] |
+ [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] |
+ [(NaN,1),(NaN,90)] | [(1,2),(3,4)] |
+ [(NaN,1),(NaN,90)] | [(0,0),(6,6)] |
+ [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] |
+ [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] |
+ [(NaN,1),(NaN,90)] | [(11,22),(33,44)] |
+ [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] |
+ [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] |
+ [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] |
+(64 rows)
+
+-- Closest point to line
+SELECT l.s, l1.s, l.s ## l1.s FROM LSEG_TBL l, LINE_TBL l1;
+ERROR: function "close_sl" not implemented
+-- Closest point to line segment
+SELECT l1.s, l2.s, l1.s ## l2.s FROM LSEG_TBL l1, LSEG_TBL l2;
+ s | s | ?column?
+-------------------------------+-------------------------------+---------------------------------
+ [(1,2),(3,4)] | [(1,2),(3,4)] |
+ [(1,2),(3,4)] | [(0,0),(6,6)] |
+ [(1,2),(3,4)] | [(10,-10),(-3,-4)] | (-1.98536585366,-4.46829268293)
+ [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] | (3.00210167283,15.3840611505)
+ [(1,2),(3,4)] | [(11,22),(33,44)] |
+ [(1,2),(3,4)] | [(-10,2),(-10,3)] | (-10,2)
+ [(1,2),(3,4)] | [(0,-20),(30,-20)] | (1,-20)
+ [(1,2),(3,4)] | [(NaN,1),(NaN,90)] |
+ [(0,0),(6,6)] | [(1,2),(3,4)] |
+ [(0,0),(6,6)] | [(0,0),(6,6)] |
+ [(0,0),(6,6)] | [(10,-10),(-3,-4)] | (-2.0487804878,-4.43902439024)
+ [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] | (6.00173233982,15.3835073725)
+ [(0,0),(6,6)] | [(11,22),(33,44)] |
+ [(0,0),(6,6)] | [(-10,2),(-10,3)] | (-10,2)
+ [(0,0),(6,6)] | [(0,-20),(30,-20)] | (0,-20)
+ [(0,0),(6,6)] | [(NaN,1),(NaN,90)] |
+ [(10,-10),(-3,-4)] | [(1,2),(3,4)] | (1,2)
+ [(10,-10),(-3,-4)] | [(0,0),(6,6)] | (0,0)
+ [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] |
+ [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] | (-2.99642119965,15.3851685701)
+ [(10,-10),(-3,-4)] | [(11,22),(33,44)] | (11,22)
+ [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] | (-10,2)
+ [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] | (10,-20)
+ [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] |
+ [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] | (3,4)
+ [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] | (6,6)
+ [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] | (-3,-4)
+ [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] |
+ [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] | (11,22)
+ [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] | (-10,3)
+ [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] | (30,-20)
+ [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] |
+ [(11,22),(33,44)] | [(1,2),(3,4)] |
+ [(11,22),(33,44)] | [(0,0),(6,6)] |
+ [(11,22),(33,44)] | [(10,-10),(-3,-4)] | (-1.3512195122,-4.76097560976)
+ [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] | (10.9987783234,15.3825848409)
+ [(11,22),(33,44)] | [(11,22),(33,44)] |
+ [(11,22),(33,44)] | [(-10,2),(-10,3)] | (-10,3)
+ [(11,22),(33,44)] | [(0,-20),(30,-20)] | (11,-20)
+ [(11,22),(33,44)] | [(NaN,1),(NaN,90)] |
+ [(-10,2),(-10,3)] | [(1,2),(3,4)] | (1,2)
+ [(-10,2),(-10,3)] | [(0,0),(6,6)] | (0,0)
+ [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] | (-3,-4)
+ [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] | (-9.99771326872,15.3864611163)
+ [(-10,2),(-10,3)] | [(11,22),(33,44)] | (11,22)
+ [(-10,2),(-10,3)] | [(-10,2),(-10,3)] |
+ [(-10,2),(-10,3)] | [(0,-20),(30,-20)] | (0,-20)
+ [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] |
+ [(0,-20),(30,-20)] | [(1,2),(3,4)] | (1,2)
+ [(0,-20),(30,-20)] | [(0,0),(6,6)] | (0,0)
+ [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] | (10,-10)
+ [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] | (30.0065315217,15.3790757173)
+ [(0,-20),(30,-20)] | [(11,22),(33,44)] | (11,22)
+ [(0,-20),(30,-20)] | [(-10,2),(-10,3)] | (-10,2)
+ [(0,-20),(30,-20)] | [(0,-20),(30,-20)] |
+ [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] |
+ [(NaN,1),(NaN,90)] | [(1,2),(3,4)] |
+ [(NaN,1),(NaN,90)] | [(0,0),(6,6)] |
+ [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] |
+ [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] |
+ [(NaN,1),(NaN,90)] | [(11,22),(33,44)] |
+ [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] |
+ [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] |
+ [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] |
+(64 rows)
+
+-- Closest point to box
+SELECT l.s, b.f1, l.s ## b.f1 FROM LSEG_TBL l, BOX_TBL b;
+ s | f1 | ?column?
+-------------------------------+---------------------+-------------
+ [(1,2),(3,4)] | (2,2),(0,0) | (1,2)
+ [(1,2),(3,4)] | (3,3),(1,1) | (1.5,2.5)
+ [(1,2),(3,4)] | (-2,2),(-8,-10) | (-2,2)
+ [(1,2),(3,4)] | (2.5,3.5),(2.5,2.5) | (2.25,3.25)
+ [(1,2),(3,4)] | (3,3),(3,3) | (3,3)
+ [(0,0),(6,6)] | (2,2),(0,0) | (1,1)
+ [(0,0),(6,6)] | (3,3),(1,1) | (2,2)
+ [(0,0),(6,6)] | (-2,2),(-8,-10) | (-2,0)
+ [(0,0),(6,6)] | (2.5,3.5),(2.5,2.5) | (2.75,2.75)
+ [(0,0),(6,6)] | (3,3),(3,3) | (3,3)
+ [(10,-10),(-3,-4)] | (2,2),(0,0) | (0,0)
+ [(10,-10),(-3,-4)] | (3,3),(1,1) | (1,1)
+ [(10,-10),(-3,-4)] | (-2,2),(-8,-10) | (-3,-4)
+ [(10,-10),(-3,-4)] | (2.5,3.5),(2.5,2.5) | (2.5,2.5)
+ [(10,-10),(-3,-4)] | (3,3),(3,3) | (3,3)
+ [(-1000000,200),(300000,-40)] | (2,2),(0,0) | (2,2)
+ [(-1000000,200),(300000,-40)] | (3,3),(1,1) | (3,3)
+ [(-1000000,200),(300000,-40)] | (-2,2),(-8,-10) | (-2,2)
+ [(-1000000,200),(300000,-40)] | (2.5,3.5),(2.5,2.5) | (2.5,3.5)
+ [(-1000000,200),(300000,-40)] | (3,3),(3,3) | (3,3)
+ [(11,22),(33,44)] | (2,2),(0,0) | (2,2)
+ [(11,22),(33,44)] | (3,3),(1,1) | (3,3)
+ [(11,22),(33,44)] | (-2,2),(-8,-10) | (-2,2)
+ [(11,22),(33,44)] | (2.5,3.5),(2.5,2.5) | (2.5,3.5)
+ [(11,22),(33,44)] | (3,3),(3,3) | (3,3)
+ [(-10,2),(-10,3)] | (2,2),(0,0) | (0,2)
+ [(-10,2),(-10,3)] | (3,3),(1,1) | (1,2)
+ [(-10,2),(-10,3)] | (-2,2),(-8,-10) | (-8,2)
+ [(-10,2),(-10,3)] | (2.5,3.5),(2.5,2.5) | (2.5,3)
+ [(-10,2),(-10,3)] | (3,3),(3,3) | (3,3)
+ [(0,-20),(30,-20)] | (2,2),(0,0) | (0,0)
+ [(0,-20),(30,-20)] | (3,3),(1,1) | (1,1)
+ [(0,-20),(30,-20)] | (-2,2),(-8,-10) | (-2,-10)
+ [(0,-20),(30,-20)] | (2.5,3.5),(2.5,2.5) | (2.5,2.5)
+ [(0,-20),(30,-20)] | (3,3),(3,3) | (3,3)
+ [(NaN,1),(NaN,90)] | (2,2),(0,0) |
+ [(NaN,1),(NaN,90)] | (3,3),(1,1) |
+ [(NaN,1),(NaN,90)] | (-2,2),(-8,-10) |
+ [(NaN,1),(NaN,90)] | (2.5,3.5),(2.5,2.5) |
+ [(NaN,1),(NaN,90)] | (3,3),(3,3) |
+(40 rows)
+
+-- On line
+SELECT l.s, l1.s FROM LSEG_TBL l, LINE_TBL l1 WHERE l.s <@ l1.s;
+ s | s
+-------------------------------+---------------------------------------
+ [(0,0),(6,6)] | {1,-1,0}
+ [(-1000000,200),(300000,-40)] | {-0.000184615384615,-1,15.3846153846}
+(2 rows)
+
+-- On box
+SELECT l.s, b.f1 FROM LSEG_TBL l, BOX_TBL b WHERE l.s <@ b.f1;
+ s | f1
+---+----
+(0 rows)
--
-- Boxes
| (3.12132034356,4.12132034356),(-1.12132034356,-0.12132034356)
| (107.071067812,207.071067812),(92.9289321881,192.928932188)
| (181.317279836,82.3172798365),(18.6827201635,-80.3172798365)
-(6 rows)
+ | (3,5),(3,5)
+ | (NaN,NaN),(NaN,NaN)
+(8 rows)
-- translation
SELECT '' AS twentyfour, b.f1 + p.f1 AS translation
FROM BOX_TBL b, POINT_TBL p;
- twentyfour | translation
-------------+-------------------------
+ twentyfour | translation
+------------+-------------------------------------
| (2,2),(0,0)
| (3,3),(1,1)
+ | (-2,2),(-8,-10)
| (2.5,3.5),(2.5,2.5)
| (3,3),(3,3)
| (-8,2),(-10,0)
| (-7,3),(-9,1)
+ | (-12,2),(-18,-10)
| (-7.5,3.5),(-7.5,2.5)
| (-7,3),(-7,3)
| (-1,6),(-3,4)
| (0,7),(-2,5)
+ | (-5,6),(-11,-6)
| (-0.5,7.5),(-0.5,6.5)
| (0,7),(0,7)
| (7.1,36.5),(5.1,34.5)
| (8.1,37.5),(6.1,35.5)
+ | (3.1,36.5),(-2.9,24.5)
| (7.6,38),(7.6,37)
| (8.1,37.5),(8.1,37.5)
| (-3,-10),(-5,-12)
| (-2,-9),(-4,-11)
+ | (-7,-10),(-13,-22)
| (-2.5,-8.5),(-2.5,-9.5)
| (-2,-9),(-2,-9)
+ | (2,2),(1e-300,-1e-300)
+ | (3,3),(1,1)
+ | (-2,2),(-8,-10)
+ | (2.5,3.5),(2.5,2.5)
+ | (3,3),(3,3)
+ | (1e+300,Infinity),(1e+300,Infinity)
+ | (1e+300,Infinity),(1e+300,Infinity)
+ | (1e+300,Infinity),(1e+300,Infinity)
+ | (1e+300,Infinity),(1e+300,Infinity)
+ | (1e+300,Infinity),(1e+300,Infinity)
+ | (NaN,NaN),(NaN,NaN)
+ | (NaN,NaN),(NaN,NaN)
+ | (NaN,NaN),(NaN,NaN)
+ | (NaN,NaN),(NaN,NaN)
+ | (NaN,NaN),(NaN,NaN)
| (12,12),(10,10)
| (13,13),(11,11)
+ | (8,12),(2,0)
| (12.5,13.5),(12.5,12.5)
| (13,13),(13,13)
-(24 rows)
+(45 rows)
SELECT '' AS twentyfour, b.f1 - p.f1 AS translation
FROM BOX_TBL b, POINT_TBL p;
- twentyfour | translation
-------------+---------------------------
+ twentyfour | translation
+------------+-----------------------------------------
| (2,2),(0,0)
| (3,3),(1,1)
+ | (-2,2),(-8,-10)
| (2.5,3.5),(2.5,2.5)
| (3,3),(3,3)
| (12,2),(10,0)
| (13,3),(11,1)
+ | (8,2),(2,-10)
| (12.5,3.5),(12.5,2.5)
| (13,3),(13,3)
| (5,-2),(3,-4)
| (6,-1),(4,-3)
+ | (1,-2),(-5,-14)
| (5.5,-0.5),(5.5,-1.5)
| (6,-1),(6,-1)
| (-3.1,-32.5),(-5.1,-34.5)
| (-2.1,-31.5),(-4.1,-33.5)
+ | (-7.1,-32.5),(-13.1,-44.5)
| (-2.6,-31),(-2.6,-32)
| (-2.1,-31.5),(-2.1,-31.5)
| (7,14),(5,12)
| (8,15),(6,13)
+ | (3,14),(-3,2)
| (7.5,15.5),(7.5,14.5)
| (8,15),(8,15)
+ | (2,2),(-1e-300,1e-300)
+ | (3,3),(1,1)
+ | (-2,2),(-8,-10)
+ | (2.5,3.5),(2.5,2.5)
+ | (3,3),(3,3)
+ | (-1e+300,-Infinity),(-1e+300,-Infinity)
+ | (-1e+300,-Infinity),(-1e+300,-Infinity)
+ | (-1e+300,-Infinity),(-1e+300,-Infinity)
+ | (-1e+300,-Infinity),(-1e+300,-Infinity)
+ | (-1e+300,-Infinity),(-1e+300,-Infinity)
+ | (NaN,NaN),(NaN,NaN)
+ | (NaN,NaN),(NaN,NaN)
+ | (NaN,NaN),(NaN,NaN)
+ | (NaN,NaN),(NaN,NaN)
+ | (NaN,NaN),(NaN,NaN)
| (-8,-8),(-10,-10)
| (-7,-7),(-9,-9)
+ | (-12,-8),(-18,-20)
| (-7.5,-6.5),(-7.5,-7.5)
| (-7,-7),(-7,-7)
-(24 rows)
+(45 rows)
--- scaling and rotation
-SELECT '' AS twentyfour, b.f1 * p.f1 AS rotation
- FROM BOX_TBL b, POINT_TBL p;
- twentyfour | rotation
-------------+-----------------------------
- | (0,0),(0,0)
- | (0,0),(0,0)
- | (0,0),(0,0)
- | (0,0),(0,0)
- | (-0,0),(-20,-20)
- | (-10,-10),(-30,-30)
- | (-25,-25),(-25,-35)
- | (-30,-30),(-30,-30)
- | (-0,2),(-14,0)
- | (-7,3),(-21,1)
- | (-17.5,2.5),(-21.5,-0.5)
- | (-21,3),(-21,3)
- | (0,79.2),(-58.8,0)
- | (-29.4,118.8),(-88.2,39.6)
- | (-73.5,104.1),(-108,99)
- | (-88.2,118.8),(-88.2,118.8)
- | (14,-0),(0,-34)
- | (21,-17),(7,-51)
- | (29.5,-42.5),(17.5,-47.5)
- | (21,-51),(21,-51)
- | (0,40),(0,0)
- | (0,60),(0,20)
- | (0,60),(-10,50)
- | (0,60),(0,60)
-(24 rows)
-
-SELECT '' AS twenty, b.f1 / p.f1 AS rotation
- FROM BOX_TBL b, POINT_TBL p
- WHERE (p.f1 <-> point '(0,0)') >= 1;
- twenty | rotation
---------+----------------------------------------------------------------------
- | (0,-0),(-0.2,-0.2)
- | (0.08,-0),(0,-0.56)
- | (0.0651176557644,0),(0,-0.0483449262493)
- | (-0,0.0828402366864),(-0.201183431953,0)
- | (0.2,0),(0,0)
- | (-0.1,-0.1),(-0.3,-0.3)
- | (0.12,-0.28),(0.04,-0.84)
- | (0.0976764836466,-0.0241724631247),(0.0325588278822,-0.072517389374)
- | (-0.100591715976,0.12426035503),(-0.301775147929,0.0414201183432)
- | (0.3,0),(0.1,0)
- | (-0.25,-0.25),(-0.25,-0.35)
- | (0.26,-0.7),(0.1,-0.82)
- | (0.109762715209,-0.0562379754329),(0.0813970697055,-0.0604311578117)
- | (-0.251479289941,0.103550295858),(-0.322485207101,0.0739644970414)
- | (0.3,0.05),(0.25,0)
- | (-0.3,-0.3),(-0.3,-0.3)
- | (0.12,-0.84),(0.12,-0.84)
- | (0.0976764836466,-0.072517389374),(0.0976764836466,-0.072517389374)
- | (-0.301775147929,0.12426035503),(-0.301775147929,0.12426035503)
- | (0.3,0),(0.3,0)
-(20 rows)
+-- Multiply with point
+SELECT b.f1, p.f1, b.f1 * p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000;
+ f1 | f1 | ?column?
+---------------------+------------+-----------------------------
+ (2,2),(0,0) | (5.1,34.5) | (0,79.2),(-58.8,0)
+ (2,2),(0,0) | (10,10) | (0,40),(0,0)
+ (3,3),(1,1) | (5.1,34.5) | (-29.4,118.8),(-88.2,39.6)
+ (3,3),(1,1) | (10,10) | (0,60),(0,20)
+ (-2,2),(-8,-10) | (5.1,34.5) | (304.2,-58.8),(-79.2,-327)
+ (-2,2),(-8,-10) | (10,10) | (20,0),(-40,-180)
+ (2.5,3.5),(2.5,2.5) | (5.1,34.5) | (-73.5,104.1),(-108,99)
+ (2.5,3.5),(2.5,2.5) | (10,10) | (0,60),(-10,50)
+ (3,3),(3,3) | (5.1,34.5) | (-88.2,118.8),(-88.2,118.8)
+ (3,3),(3,3) | (10,10) | (0,60),(0,60)
+(10 rows)
+
+-- Overflow error
+SELECT b.f1, p.f1, b.f1 * p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] > 1000;
+ f1 | f1 | ?column?
+---------------------+-------------------+--------------------------------------------
+ (2,2),(0,0) | (1e+300,Infinity) | (NaN,NaN),(-Infinity,Infinity)
+ (2,2),(0,0) | (NaN,NaN) | (NaN,NaN),(NaN,NaN)
+ (3,3),(1,1) | (1e+300,Infinity) | (-Infinity,Infinity),(-Infinity,Infinity)
+ (3,3),(1,1) | (NaN,NaN) | (NaN,NaN),(NaN,NaN)
+ (-2,2),(-8,-10) | (1e+300,Infinity) | (Infinity,-Infinity),(-Infinity,-Infinity)
+ (-2,2),(-8,-10) | (NaN,NaN) | (NaN,NaN),(NaN,NaN)
+ (2.5,3.5),(2.5,2.5) | (1e+300,Infinity) | (-Infinity,Infinity),(-Infinity,Infinity)
+ (2.5,3.5),(2.5,2.5) | (NaN,NaN) | (NaN,NaN),(NaN,NaN)
+ (3,3),(3,3) | (1e+300,Infinity) | (-Infinity,Infinity),(-Infinity,Infinity)
+ (3,3),(3,3) | (NaN,NaN) | (NaN,NaN),(NaN,NaN)
+(10 rows)
+
+-- Divide by point
+SELECT b.f1, p.f1, b.f1 / p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000;
+ f1 | f1 | ?column?
+---------------------+------------+----------------------------------------------------------------------
+ (2,2),(0,0) | (5.1,34.5) | (0.0651176557644,0),(0,-0.0483449262493)
+ (2,2),(0,0) | (10,10) | (0.2,0),(0,0)
+ (3,3),(1,1) | (5.1,34.5) | (0.0976764836466,-0.0241724631247),(0.0325588278822,-0.072517389374)
+ (3,3),(1,1) | (10,10) | (0.3,0),(0.1,0)
+ (-2,2),(-8,-10) | (5.1,34.5) | (0.0483449262493,0.18499334024),(-0.317201914064,0.0651176557644)
+ (-2,2),(-8,-10) | (10,10) | (0,0.2),(-0.9,-0.1)
+ (2.5,3.5),(2.5,2.5) | (5.1,34.5) | (0.109762715209,-0.0562379754329),(0.0813970697055,-0.0604311578117)
+ (2.5,3.5),(2.5,2.5) | (10,10) | (0.3,0.05),(0.25,0)
+ (3,3),(3,3) | (5.1,34.5) | (0.0976764836466,-0.072517389374),(0.0976764836466,-0.072517389374)
+ (3,3),(3,3) | (10,10) | (0.3,0),(0.3,0)
+(10 rows)
+-- To box
SELECT f1::box
FROM POINT_TBL;
- f1
------------------------
+ f1
+-------------------------------------
(0,0),(0,0)
(-10,0),(-10,0)
(-3,4),(-3,4)
(5.1,34.5),(5.1,34.5)
(-5,-12),(-5,-12)
+ (1e-300,-1e-300),(1e-300,-1e-300)
+ (1e+300,Infinity),(1e+300,Infinity)
+ (NaN,NaN),(NaN,NaN)
(10,10),(10,10)
-(6 rows)
+(9 rows)
SELECT bound_box(a.f1, b.f1)
FROM BOX_TBL a, BOX_TBL b;
---------------------
(2,2),(0,0)
(3,3),(0,0)
+ (2,2),(-8,-10)
(2.5,3.5),(0,0)
(3,3),(0,0)
(3,3),(0,0)
(3,3),(1,1)
+ (3,3),(-8,-10)
(3,3.5),(1,1)
(3,3),(1,1)
+ (2,2),(-8,-10)
+ (3,3),(-8,-10)
+ (-2,2),(-8,-10)
+ (2.5,3.5),(-8,-10)
+ (3,3),(-8,-10)
(2.5,3.5),(0,0)
(3,3.5),(1,1)
+ (2.5,3.5),(-8,-10)
(2.5,3.5),(2.5,2.5)
(3,3.5),(2.5,2.5)
(3,3),(0,0)
(3,3),(1,1)
+ (3,3),(-8,-10)
(3,3.5),(2.5,2.5)
(3,3),(3,3)
-(16 rows)
+(25 rows)
+
+-- Below box
+SELECT b1.f1, b2.f1, b1.f1 <^ b2.f1 FROM BOX_TBL b1, BOX_TBL b2;
+ f1 | f1 | ?column?
+---------------------+---------------------+----------
+ (2,2),(0,0) | (2,2),(0,0) | f
+ (2,2),(0,0) | (3,3),(1,1) | f
+ (2,2),(0,0) | (-2,2),(-8,-10) | f
+ (2,2),(0,0) | (2.5,3.5),(2.5,2.5) | t
+ (2,2),(0,0) | (3,3),(3,3) | t
+ (3,3),(1,1) | (2,2),(0,0) | f
+ (3,3),(1,1) | (3,3),(1,1) | f
+ (3,3),(1,1) | (-2,2),(-8,-10) | f
+ (3,3),(1,1) | (2.5,3.5),(2.5,2.5) | f
+ (3,3),(1,1) | (3,3),(3,3) | t
+ (-2,2),(-8,-10) | (2,2),(0,0) | f
+ (-2,2),(-8,-10) | (3,3),(1,1) | f
+ (-2,2),(-8,-10) | (-2,2),(-8,-10) | f
+ (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) | t
+ (-2,2),(-8,-10) | (3,3),(3,3) | t
+ (2.5,3.5),(2.5,2.5) | (2,2),(0,0) | f
+ (2.5,3.5),(2.5,2.5) | (3,3),(1,1) | f
+ (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) | f
+ (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) | f
+ (2.5,3.5),(2.5,2.5) | (3,3),(3,3) | f
+ (3,3),(3,3) | (2,2),(0,0) | f
+ (3,3),(3,3) | (3,3),(1,1) | f
+ (3,3),(3,3) | (-2,2),(-8,-10) | f
+ (3,3),(3,3) | (2.5,3.5),(2.5,2.5) | f
+ (3,3),(3,3) | (3,3),(3,3) | t
+(25 rows)
+
+-- Above box
+SELECT b1.f1, b2.f1, b1.f1 >^ b2.f1 FROM BOX_TBL b1, BOX_TBL b2;
+ f1 | f1 | ?column?
+---------------------+---------------------+----------
+ (2,2),(0,0) | (2,2),(0,0) | f
+ (2,2),(0,0) | (3,3),(1,1) | f
+ (2,2),(0,0) | (-2,2),(-8,-10) | f
+ (2,2),(0,0) | (2.5,3.5),(2.5,2.5) | f
+ (2,2),(0,0) | (3,3),(3,3) | f
+ (3,3),(1,1) | (2,2),(0,0) | f
+ (3,3),(1,1) | (3,3),(1,1) | f
+ (3,3),(1,1) | (-2,2),(-8,-10) | f
+ (3,3),(1,1) | (2.5,3.5),(2.5,2.5) | f
+ (3,3),(1,1) | (3,3),(3,3) | f
+ (-2,2),(-8,-10) | (2,2),(0,0) | f
+ (-2,2),(-8,-10) | (3,3),(1,1) | f
+ (-2,2),(-8,-10) | (-2,2),(-8,-10) | f
+ (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) | f
+ (-2,2),(-8,-10) | (3,3),(3,3) | f
+ (2.5,3.5),(2.5,2.5) | (2,2),(0,0) | t
+ (2.5,3.5),(2.5,2.5) | (3,3),(1,1) | f
+ (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) | t
+ (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) | f
+ (2.5,3.5),(2.5,2.5) | (3,3),(3,3) | f
+ (3,3),(3,3) | (2,2),(0,0) | t
+ (3,3),(3,3) | (3,3),(1,1) | t
+ (3,3),(3,3) | (-2,2),(-8,-10) | t
+ (3,3),(3,3) | (2.5,3.5),(2.5,2.5) | f
+ (3,3),(3,3) | (3,3),(3,3) | t
+(25 rows)
+
+-- Intersection point with box
+SELECT b1.f1, b2.f1, b1.f1 # b2.f1 FROM BOX_TBL b1, BOX_TBL b2;
+ f1 | f1 | ?column?
+---------------------+---------------------+---------------------
+ (2,2),(0,0) | (2,2),(0,0) | (2,2),(0,0)
+ (2,2),(0,0) | (3,3),(1,1) | (2,2),(1,1)
+ (2,2),(0,0) | (-2,2),(-8,-10) |
+ (2,2),(0,0) | (2.5,3.5),(2.5,2.5) |
+ (2,2),(0,0) | (3,3),(3,3) |
+ (3,3),(1,1) | (2,2),(0,0) | (2,2),(1,1)
+ (3,3),(1,1) | (3,3),(1,1) | (3,3),(1,1)
+ (3,3),(1,1) | (-2,2),(-8,-10) |
+ (3,3),(1,1) | (2.5,3.5),(2.5,2.5) | (2.5,3),(2.5,2.5)
+ (3,3),(1,1) | (3,3),(3,3) | (3,3),(3,3)
+ (-2,2),(-8,-10) | (2,2),(0,0) |
+ (-2,2),(-8,-10) | (3,3),(1,1) |
+ (-2,2),(-8,-10) | (-2,2),(-8,-10) | (-2,2),(-8,-10)
+ (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) |
+ (-2,2),(-8,-10) | (3,3),(3,3) |
+ (2.5,3.5),(2.5,2.5) | (2,2),(0,0) |
+ (2.5,3.5),(2.5,2.5) | (3,3),(1,1) | (2.5,3),(2.5,2.5)
+ (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) |
+ (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5)
+ (2.5,3.5),(2.5,2.5) | (3,3),(3,3) |
+ (3,3),(3,3) | (2,2),(0,0) |
+ (3,3),(3,3) | (3,3),(1,1) | (3,3),(3,3)
+ (3,3),(3,3) | (-2,2),(-8,-10) |
+ (3,3),(3,3) | (2.5,3.5),(2.5,2.5) |
+ (3,3),(3,3) | (3,3),(3,3) | (3,3),(3,3)
+(25 rows)
+
+-- Diagonal
+SELECT f1, diagonal(f1) FROM BOX_TBL;
+ f1 | diagonal
+---------------------+-----------------------
+ (2,2),(0,0) | [(2,2),(0,0)]
+ (3,3),(1,1) | [(3,3),(1,1)]
+ (-2,2),(-8,-10) | [(-2,2),(-8,-10)]
+ (2.5,3.5),(2.5,2.5) | [(2.5,3.5),(2.5,2.5)]
+ (3,3),(3,3) | [(3,3),(3,3)]
+(5 rows)
+
+-- Distance to box
+SELECT b1.f1, b2.f1, b1.f1 <-> b2.f1 FROM BOX_TBL b1, BOX_TBL b2;
+ f1 | f1 | ?column?
+---------------------+---------------------+---------------
+ (2,2),(0,0) | (2,2),(0,0) | 0
+ (2,2),(0,0) | (3,3),(1,1) | 1.41421356237
+ (2,2),(0,0) | (-2,2),(-8,-10) | 7.81024967591
+ (2,2),(0,0) | (2.5,3.5),(2.5,2.5) | 2.5
+ (2,2),(0,0) | (3,3),(3,3) | 2.82842712475
+ (3,3),(1,1) | (2,2),(0,0) | 1.41421356237
+ (3,3),(1,1) | (3,3),(1,1) | 0
+ (3,3),(1,1) | (-2,2),(-8,-10) | 9.21954445729
+ (3,3),(1,1) | (2.5,3.5),(2.5,2.5) | 1.11803398875
+ (3,3),(1,1) | (3,3),(3,3) | 1.41421356237
+ (-2,2),(-8,-10) | (2,2),(0,0) | 7.81024967591
+ (-2,2),(-8,-10) | (3,3),(1,1) | 9.21954445729
+ (-2,2),(-8,-10) | (-2,2),(-8,-10) | 0
+ (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) | 10.2591422643
+ (-2,2),(-8,-10) | (3,3),(3,3) | 10.6301458127
+ (2.5,3.5),(2.5,2.5) | (2,2),(0,0) | 2.5
+ (2.5,3.5),(2.5,2.5) | (3,3),(1,1) | 1.11803398875
+ (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) | 10.2591422643
+ (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) | 0
+ (2.5,3.5),(2.5,2.5) | (3,3),(3,3) | 0.5
+ (3,3),(3,3) | (2,2),(0,0) | 2.82842712475
+ (3,3),(3,3) | (3,3),(1,1) | 1.41421356237
+ (3,3),(3,3) | (-2,2),(-8,-10) | 10.6301458127
+ (3,3),(3,3) | (2.5,3.5),(2.5,2.5) | 0.5
+ (3,3),(3,3) | (3,3),(3,3) | 0
+(25 rows)
--
-- Paths
--
-SELECT '' AS eight, npoints(f1) AS npoints, f1 AS path FROM PATH_TBL;
- eight | npoints | path
--------+---------+---------------------------
- | 2 | [(1,2),(3,4)]
- | 2 | ((1,2),(3,4))
- | 4 | [(0,0),(3,0),(4,5),(1,6)]
- | 2 | ((1,2),(3,4))
- | 2 | ((1,2),(3,4))
- | 2 | [(1,2),(3,4)]
- | 2 | [(11,12),(13,14)]
- | 2 | ((11,12),(13,14))
-(8 rows)
+-- Points
+SELECT f1, npoints(f1) FROM PATH_TBL;
+ f1 | npoints
+---------------------------+---------
+ [(1,2),(3,4)] | 2
+ ((1,2),(3,4)) | 2
+ [(0,0),(3,0),(4,5),(1,6)] | 4
+ ((1,2),(3,4)) | 2
+ ((1,2),(3,4)) | 2
+ [(1,2),(3,4)] | 2
+ ((10,20)) | 1
+ [(11,12),(13,14)] | 2
+ ((11,12),(13,14)) | 2
+(9 rows)
-SELECT '' AS four, path(f1) FROM POLYGON_TBL;
- four | path
-------+---------------------
- | ((2,0),(2,4),(0,0))
- | ((3,1),(3,3),(1,0))
- | ((0,0))
- | ((0,1),(0,1))
-(4 rows)
+-- Area
+SELECT f1, area(f1) FROM PATH_TBL;
+ f1 | area
+---------------------------+------
+ [(1,2),(3,4)] |
+ ((1,2),(3,4)) | 0
+ [(0,0),(3,0),(4,5),(1,6)] |
+ ((1,2),(3,4)) | 0
+ ((1,2),(3,4)) | 0
+ [(1,2),(3,4)] |
+ ((10,20)) | 0
+ [(11,12),(13,14)] |
+ ((11,12),(13,14)) | 0
+(9 rows)
--- translation
-SELECT '' AS eight, p1.f1 + point '(10,10)' AS dist_add
- FROM PATH_TBL p1;
- eight | dist_add
--------+-----------------------------------
- | [(11,12),(13,14)]
- | ((11,12),(13,14))
- | [(10,10),(13,10),(14,15),(11,16)]
- | ((11,12),(13,14))
- | ((11,12),(13,14))
- | [(11,12),(13,14)]
- | [(21,22),(23,24)]
- | ((21,22),(23,24))
-(8 rows)
+-- Length
+SELECT f1, @-@ f1 FROM PATH_TBL;
+ f1 | ?column?
+---------------------------+---------------
+ [(1,2),(3,4)] | 2.82842712475
+ ((1,2),(3,4)) | 5.65685424949
+ [(0,0),(3,0),(4,5),(1,6)] | 11.2612971738
+ ((1,2),(3,4)) | 5.65685424949
+ ((1,2),(3,4)) | 5.65685424949
+ [(1,2),(3,4)] | 2.82842712475
+ ((10,20)) | 0
+ [(11,12),(13,14)] | 2.82842712475
+ ((11,12),(13,14)) | 5.65685424949
+(9 rows)
--- scaling and rotation
-SELECT '' AS eight, p1.f1 * point '(2,-1)' AS dist_mul
- FROM PATH_TBL p1;
- eight | dist_mul
--------+------------------------------
- | [(4,3),(10,5)]
- | ((4,3),(10,5))
- | [(0,0),(6,-3),(13,6),(8,11)]
- | ((4,3),(10,5))
- | ((4,3),(10,5))
- | [(4,3),(10,5)]
- | [(34,13),(40,15)]
- | ((34,13),(40,15))
-(8 rows)
+-- Center
+SELECT f1, @@ f1 FROM PATH_TBL;
+ERROR: function "path_center" not implemented
+-- To polygon
+SELECT f1, f1::polygon FROM PATH_TBL WHERE isclosed(f1);
+ f1 | f1
+-------------------+-------------------
+ ((1,2),(3,4)) | ((1,2),(3,4))
+ ((1,2),(3,4)) | ((1,2),(3,4))
+ ((1,2),(3,4)) | ((1,2),(3,4))
+ ((10,20)) | ((10,20))
+ ((11,12),(13,14)) | ((11,12),(13,14))
+(5 rows)
+