Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Перестановка координат

flipCoordinates

Функция flipCoordinates меняет местами координаты точки, Ring, Polygon или multipolygon. Это полезно, например, при преобразовании между системами координат, где порядок широты и долготы различается.

flipCoordinates(coordinates)

Входные параметры

  • coordinates — кортеж, представляющий точку (x, y), или массив таких кортежей, представляющий Ring, Polygon или Multipolygon. Поддерживаются следующие входные типы:
    • Point: кортеж (x, y), где x и y — значения Float64.
    • Ring: массив точек [(x1, y1), (x2, y2), ...].
    • Polygon: массив колец [ring1, ring2, ...], где каждое кольцо — массив точек.
    • Multipolygon: массив полигонов [polygon1, polygon2, ...].

Возвращаемое значение

Функция возвращает входные данные с поменянными местами координатами. Например:

  • Точка (x, y) становится (y, x).
  • Ring [(x1, y1), (x2, y2)] становится [(y1, x1), (y2, x2)].
  • Вложенные структуры, такие как Polygon и Multipolygon, обрабатываются рекурсивно.

Примеры

Пример 1: Перестановка координат одной точки

SELECT flipCoordinates((10, 20)) AS flipped_point
┌─flipped_point─┐
│ (20,10)       │
└───────────────┘

Пример 2: Перестановка координат в массиве точек (Ring)

SELECT flipCoordinates([(10, 20), (30, 40)]) AS flipped_ring
┌─flipped_ring──────────────┐
│ [(20,10),(40,30)]         │
└───────────────────────────┘

Пример 3: Переворот Polygon

SELECT flipCoordinates([[(10, 20), (30, 40)], [(50, 60), (70, 80)]]) AS flipped_polygon
┌─flipped_polygon──────────────────────────────┐
│ [[(20,10),(40,30)],[(60,50),(80,70)]]        │
└──────────────────────────────────────────────┘

Пример 4: Инвертирование Multipolygon

SELECT flipCoordinates([[[10, 20], [30, 40]], [[50, 60], [70, 80]]]) AS flipped_multipolygon
┌─flipped_multipolygon──────────────────────────────┐
│ [[[20,10],[40,30]],[[60,50],[80,70]]]             │
└───────────────────────────────────────────────────┘
Navigation