跳转到主要内容

flipCoordinates

flipCoordinates 函数会交换点、Ring、Polygon 或 MultiPolygon 的坐标。例如,在纬度和经度顺序不同的坐标系之间转换时,这一功能非常有用。
flipCoordinates(coordinates)

输入参数

  • coordinates — 表示点 (x, y) 的 Tuple,或由此类 Tuple 组成的数组,用于表示 Ring、Polygon 或 Multipolygon。支持的输入类型包括:
    • Point:Tuple (x, y),其中 xyFloat64 类型的值。
    • Ring:点数组 [(x1, y1), (x2, y2), ...]
    • Polygon:Ring 数组 [ring1, ring2, ...],其中每个 Ring 都是点数组。
    • Multipolygon:Polygon 数组 [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]]]             │
└───────────────────────────────────────────────────┘
最后修改于 2026年6月10日