flipCoordinates
flipCoordinates 函数会交换点、Ring、Polygon 或 MultiPolygon 的坐标。例如,在纬度和经度顺序不同的坐标系之间转换时,这一功能非常有用。
flipCoordinates(coordinates)输入参数
coordinates— 表示点(x, y)的 Tuple,或由此类 Tuple 组成的数组,用于表示 Ring、Polygon 或 Multipolygon。支持的输入类型包括:- Point:Tuple
(x, y),其中x和y是 Float64 类型的值。 - Ring:点数组
[(x1, y1), (x2, y2), ...]。 - Polygon:Ring 数组
[ring1, ring2, ...],其中每个 Ring 都是点数组。 - Multipolygon:Polygon 数组
[polygon1, polygon2, ...]。
- Point:Tuple
返回值
该函数返回将坐标顺序翻转后的输入。例如:
- 点
(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]]] │
└───────────────────────────────────────────────────┘