The ST_Distance() function
The ST_Distance() function returns the shortest distance that separates two geometries.
Syntax
ST_Distance(g1 ST_Geometry, g2 ST_Geometry)
ST_Distance(g1 ST_Geometry, g2 ST_Geometry, linear_uom varchar(128))
ST_Distance(g1 ST_Geometry, g2 ST_Geometry)
The linear_uom parameter converts the result to the specified unit of measure. To calculate the distance if the geometries are in a geographic coordinate system where the coordinates are in an angular unit of measure, you must specify a linear unit of measure with the linear_uom parameter. Angular units of measure are converted to linear units of measure by great-circle calculations. If the geometries are in a projected coordinate system that has a unit of measure that is different from the unit of measure that is specified by the linear_uom parameter, then the returned value is converted to the unit of measure that is specified by the linear_uom parameter. The linear_uom parameter must be the name of a linear unit of measure from the unit_name column of the st_units_of_measure table.
Return type
DOUBLE PRECISION
Example: List buildings within a foot of a lot line
The city engineer needs a list of all buildings within one foot of any lot line.
CREATE TABLE buildingfootprints (building_id integer,
lot_id integer,
footprint ST_MultiPolygon);
CREATE TABLE lots (lot_id integer,
lot ST_MultiPolygon);
SELECT bf.building_id
FROM buildingfootprints bf, lots
WHERE bf.lot_id = lots.lot_id
AND ST_Distance(footprint,lot) <= 1.0;
Examples: Distance between two points
The following query returns the distance between two points in meters:
EXECUTE FUNCTION round(
ST_Distance(
'32608 point(576100 15230)'::st_point,
'32608 point(576102 15230)'::st_point,
'meter'),
2);
(expression)
2.00000000000000
1 row(s) retrieved.
The following query returns the distance between two points in feet:
EXECUTE FUNCTION round(
ST_Distance(
'32608 point(576100 15230)'::st_point,
'32608 point(576102 15230)'::st_point,
'foot'),
2);
(expression)
6.56000000000000
1 row(s) retrieved.
Examples: Find the distance between two points that have angular units
These examples are based on the angular coordinate system WGS 84, which has SRID 4326. They calculate the distance between the following latitude and longitude values for New York and Los Angeles:
- Latitude and longitude of New York: 73.94000 W, 40.67000 N
- Latitude and longitude of Los Angles: 118.25000 W, 34.05000 N
The following statement returns the distance between New York and Los Angeles in US miles:
EXECUTE FUNCTION ST_Distance('4326 point(-73.94000 40.67000)',
'4326 point(-118.25000 34.05000)', 'mile_us');
(expression)
2454.991002988
1 row(s) retrieved.
The following statement returns the distance between New York and Los Angeles in kilometers:
EXECUTE FUNCTION ST_Distance('4326 point(-73.94000 40.67000)',
'4326 point(-118.25000 34.05000)', 'kilometer');
(expression)
3950.932942578
1 row(s) retrieved.