spoint functions
#The functions
long( | p); |
spoint p;lat( | p); |
spoint p;
returns the longitude or latitude value of a
spherical position p in radians.
Example 6.3. Get the longitude and latitude of a spherical point in degrees
sql> SELECT long ( spoint '(10d,20d)' ) * 180.0 / pi() AS longitude;
longitude
------------
10
(1 row)
sql> SELECT lat ( spoint '(10d,20d)' ) * 180.0 / pi() AS latitude;
latitude
----------
20
(1 row)
The functions
x( | p); |
spoint p;y( | p); |
spoint p;z( | p); |
spoint p;
return the Cartesian
x, y or
z value of a spherical position
p. The returned values are always
between -1.0 and +1.0.
Example 6.4.
Get the Cartesian z-value
of a spherical point
sql> SELECT z ( spoint '(10d,-90d)' ) AS z;
z
----
-1
(1 row)
You can get a float8 array of Cartesian values using the function
xyz( | p); |
spoint p;Example 6.5. Get the Cartesian values of a spherical point
sql> SELECT xyz ( spoint '(0d,0d)' ) AS cart;
cart
---------
{1,0,0}
(1 row)
The function
spoint_dwithin( | p1, | |
| p2, | ||
radius); |
spoint p1;spoint p2;float8 radius;
returns a boolean value that signifies whether the points
p1 and p2
lie within distance radius (in radians) of each other, i.e.
it computes the boolean expression p1 <-> p2 <= radius.
On PostgreSQL 12 and later, the function has GiST
support and the PostgreSQL optimizer will transform it to either
p1 <@ scircle(p2, radius) or
p2 <@ scircle(p1, radius) where appropriate.
Example 6.6. Efficiently join two tables of points with some fuzziness permitted
sql> SELECT * FROM stars1 JOIN stars2 WHERE spoint_dwithin(stars1.s, stars2.s, 1e-5);