1CREATE TABLE bbox_ellipse (e sellipse not null);
2INSERT INTO bbox_ellipse VALUES ('<{10d, 0.1d}, (0d,0d), 0d>');
3SELECT spoint '(5d, 0d)' @ sellipse '<{10d, 0.1d}, (0d,0d), 0d>' AS inside;
4SELECT COUNT(*) FROM bbox_ellipse WHERE spoint '(5d, 0d)' @ e;
5-- The ellipse has semi-major axis length of 10 degrees along the equator,
6-- so (lon,lat) = (5,0) should be inside.
7CREATE INDEX idx_bbox_ellipse ON bbox_ellipse USING gist (e);
8ANALYZE bbox_ellipse;
9SET enable_seqscan=false;
10SELECT COUNT(*) FROM bbox_ellipse WHERE spoint '(5d, 0d)' @ e;
11
12CREATE TABLE bbox_poly (p spoly not null);
13INSERT INTO bbox_poly VALUES ('{(40d,-40d), (0d,80d), (-40d,-40d)}');
14SELECT spoint '(0d, 0d)' @ spoly '{(40d,-40d), (0d,80d), (-40d,-40d)}' AS inside;
15SELECT COUNT(*) FROM bbox_poly WHERE spoint '(0d, 0d)' @ p;
16CREATE INDEX idx_bbox_poly ON bbox_poly USING gist (p);
17ANALYZE bbox_poly;
18SET enable_seqscan=false;
19SELECT COUNT(*) FROM bbox_poly WHERE spoint '(0d, 0d)' @ p;
20
21CREATE TABLE bbox_path (p spath not null);
22INSERT INTO bbox_path VALUES ('{(-46d,0d), (-45d,80d), (-45d,0d), (80d,0d)}');
23SELECT sline(spoint '(0d, -10d)', spoint '(0d, 10d)') && spath '{(-46d,0d), (-45d,80d), (-45d,0d), (80d,0d)}' AS crossing;
24SELECT spoint '(0d, 0d)' @ spath '{(-46d,0d), (-45d,80d), (-45d,0d), (80d,0d)}' AS inside;
25SELECT COUNT(*) FROM bbox_path WHERE sline(spoint '(0d, -10d)', spoint '(0d, 10d)') && p;
26SELECT COUNT(*) FROM bbox_path WHERE spoint '(0d, 0d)' @ p;
27CREATE INDEX idx_bbox_path ON bbox_path USING gist (p);
28ANALYZE bbox_path;
29SET enable_seqscan=false;
30SELECT COUNT(*) FROM bbox_path WHERE sline(spoint '(0d, -10d)', spoint '(0d, 10d)') && p;
31SELECT COUNT(*) FROM bbox_path WHERE spoint '(0d, 0d)' @ p;
32