Функции для геоданных
Функции для работы с геопространственными данными и инструментами ГИС.
ST_Point()
Описание |
Создает точку типа |
Использование |
|
Создает точку типа GEOMETRY
из двух чисел типа DOUBLE
. Аргументами могут быть, например, географические координаты, заданные в градусах в виде десятичной дроби.
Некоторые примеры использования описаны в этом сценарии.
Посмотреть пример
Создадим таблицу с названиями организаций и координатами их офисов. Вычислим расстояние от нулевого километра Москвы (55.75579845052788, 37.617679973467204
) до офисов этих организаций и выведем эту информацию в виде таблицы:
CREATE TABLE demo.table (organization VARCHAR,
latitude DOUBLE,
longitude DOUBLE);
INSERT INTO demo.table VALUES
('Postgres Professional LLC', 55.69189394353437, 37.564623398131985),
('Oracle Corporation', 30.243622717202587, -97.72199761339736);
SELECT
organization,
round(ST_Distance_Sphere(ST_Point(latitude, longitude),
ST_Point(55.75579845052788, 37.617679973467204)
)/1000)
AS "distance from moscow, km"
FROM demo.table;
+---------------------------+--------------------------+
| organization | distance from moscow, km |
+---------------------------+--------------------------+
| Postgres Professional LLC | 8 |
+---------------------------+--------------------------+
| Oracle Corporation | 9557 |
+---------------------------+--------------------------+
ST_Distance()
Описание |
Вычисляет расстояние между двумя точками на плоскости. |
Использование |
|
Вычисляет расстояние на плоскости между двумя точками типа GEOMETRY
.
Посмотреть пример
SELECT
ST_Distance('POINT (0 0)'::GEOMETRY, 'POINT (5 12)'::GEOMETRY)
AS distance;
+----------+
| distance |
+----------+
| 13 |
+----------+
ST_Distance_Sphere()
Описание |
Вычисляет расстояние между двумя точками на сфере. |
Использование |
|
Вычисляет расстояние по гаверсину (большому кругу сферы) между двумя точками типа GEOMETRY
.
Возвращает расстояние в метрах. Входные данные должны быть в координатах, заданных в градусах в виде десятичной дроби (формат WGS84, EPSG:4326) с порядком осей: широта (latitude), долгота (longitude).
Некоторые примеры использования описаны в этом сценарии.
Посмотреть пример
Создадим таблицу с названиями организаций и координатами их офисов. Вычислим расстояние от нулевого километра Москвы (55.75579845052788, 37.617679973467204
) до офисов этих организаций и выведем эту информацию в виде таблицы:
CREATE TABLE demo.table (organization VARCHAR,
latitude DOUBLE,
longitude DOUBLE);
INSERT INTO demo.table VALUES
('Postgres Professional LLC', 55.69189394353437, 37.564623398131985),
('Oracle Corporation', 30.243622717202587, -97.72199761339736);
SELECT
organization,
round(ST_Distance_Sphere(ST_Point(latitude, longitude),
ST_Point(55.75579845052788, 37.617679973467204)
)/1000)
AS "distance from moscow, km"
FROM demo.table;
+---------------------------+--------------------------+
| organization | distance from moscow, km |
+---------------------------+--------------------------+
| Postgres Professional LLC | 8 |
+---------------------------+--------------------------+
| Oracle Corporation | 9557 |
+---------------------------+--------------------------+