Перейти к основному содержанию
Перейти к основному содержанию

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

flipCoordinates

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

flipCoordinates(coordinates)

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

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

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

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

  • Точка (x, y) становится (y, x).
  • Кольцо [(x1, y1), (x2, y2)] становится [(y1, x1), (y2, x2)].
  • Вложенные структуры, такие как полигоны и мультиполигоны, обрабатываются рекурсивно.

Примеры

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

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

Пример 2: Разворот массива точек (кольцо)

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

Пример 3: Отражение многоугольника

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

Пример 4: Отражение мультиполигона

SELECT flipCoordinates([[[10, 20], [30, 40]], [[50, 60], [70, 80]]]) AS перевернутый_мультиполигон
┌─flipped_multipolygon──────────────────────────────┐
│ [[[20,10],[40,30]],[[60,50],[80,70]]]             │
└───────────────────────────────────────────────────┘