Функции геолокации
Эта функциональность находится в стадии бета-тестирования и может быть изменена. Дизайн и код менее зрелые, чем официальные функции GA, и предоставляются как есть без каких-либо гарантий. Функции бета-версии не подпадают под SLA поддержки официальных функций GA.
Функции геолокации работают с геометриями, хранящимися в полях geo_point, geo_shape и shape, или возвращаемых другими функциями геолокации.
Ограничения
geo_point, geo_shape и shape типы представлены в SQL как геометрия и могут использоваться взаимозаменяемо со следующими исключениями:
- Поля
geo_shapeиshapeне имеют значений документов, поэтому эти поля нельзя использовать для фильтрации, группирования или сортировки. - Поля
geo_pointsиндексируются и по умолчанию имеют значения документов, однако хранятся и индексируются только широта и долгота с некоторыми потерями точности по сравнению с исходными значениями (4.190951585769653E-8 для широты и 8.381903171539307E-8 для долготы). Компонент высоты принимается, но не сохраняется в значениях документов и не индексируется. Поэтому вызов функцииST_Zв фильтрации, группировании или сортировке вернётnull.
Преобразование геометрии
ST_AsWKT
Синопсис:
ST_AsWKT(
geometry
) Входные данные:
| геометрия. Если |
Выходные данные: строка
Описание: Возвращает представление WKT геометрии geometry.
SELECT city, ST_AsWKT(location) location FROM "geo" WHERE city = 'Amsterdam';
city:s | location:s
Amsterdam |POINT (4.850312 52.347557) ST_WKTToSQL
Синопсис:
ST_WKTToSQL(
string
) Входные данные:
| строковое представление WKT геометрии. Если |
Выходные данные: геометрия
Описание: Возвращает геометрию из представления WKT.
SELECT CAST(ST_WKTToSQL('POINT (10 20)') AS STRING) location;
location:s
POINT (10.0 20.0) Свойства геометрии
ST_GeometryType
Синопсис:
ST_GeometryType(
geometry
) Входные данные:
| геометрия. Если |
Выходные данные: строка
Описание: Возвращает тип geometry, такой как POINT, MULTIPOINT, LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON, GEOMETRYCOLLECTION, ENVELOPE или CIRCLE.
SELECT ST_GeometryType(ST_WKTToSQL('POINT (10 20)')) type;
type:s
POINT ST_X
Синопсис:
ST_X(
geometry
) Входные данные:
| геометрия. Если |
Выходные данные: double
Описание: Возвращает долготу первой точки в геометрии.
SELECT ST_X(ST_WKTToSQL('POINT (10 20)')) x;
x:d
10.0 ST_Y
Синопсис:
ST_Y(
geometry
) Входные данные:
| геометрия. Если |
Выходные данные: double
Описание: Возвращает широту первой точки в геометрии.
SELECT ST_Y(ST_WKTToSQL('POINT (10 20)')) y;
y:d
20.0 ST_Z
Синопсис:
ST_Z(
geometry
) Входные данные:
| геометрия. Если |
Выходные данные: double
Описание: Возвращает высоту первой точки в геометрии.
SELECT ST_Z(ST_WKTToSQL('POINT (10 20 30)')) z;
z:d
30.0 ST_Distance
Синопсис:
ST_Distance(
geometry,
geometry
) Входные данные:
| исходная геометрия. Если | |
| целевая геометрия. Если |
Выходные данные: Double
Описание: Возвращает расстояние между геометриями в метрах. Обе геометрии должны быть точками.
SELECT ST_Distance(ST_WKTToSQL('POINT (10 20)'), ST_WKTToSQL('POINT (20 30)')) distance;
distance:d
1499101.2889383635
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/sql-functions-geo.html