14 KiB
machine_translated |
---|
true |
Funciones para trabajar con coordenadas geográficas
GranCircleDistance
Calcule la distancia entre dos puntos en la superficie de la Tierra usando la fórmula del gran círculo.
greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Parámetros de entrada
lon1Deg
— Longitud del primer punto en grados. Gama:[-180°, 180°]
.lat1Deg
— Latitud del primer punto en grados. Gama:[-90°, 90°]
.lon2Deg
— Longitud del segundo punto en grados. Gama:[-180°, 180°]
.lat2Deg
— Latitud del segundo punto en grados. Gama:[-90°, 90°]
.
Los valores positivos corresponden a latitud norte y longitud este, y los valores negativos corresponden a latitud sur y longitud oeste.
Valor devuelto
La distancia entre dos puntos en la superficie de la Tierra, en metros.
Genera una excepción cuando los valores de los parámetros de entrada están fuera del intervalo.
Ejemplo
SELECT greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)
┌─greatCircleDistance(55.755831, 37.617673, -55.755831, -37.617673)─┐
│ 14132374.194975413 │
└───────────────────────────────────────────────────────────────────┘
pointInEllipses
Comprueba si el punto pertenece al menos a una de las elipses. Las coordenadas son geométricas en el sistema de coordenadas cartesianas.
pointInEllipses(x, y, x₀, y₀, a₀, b₀,...,xₙ, yₙ, aₙ, bₙ)
Parámetros de entrada
x, y
— Coordenadas de un punto en el plano.xᵢ, yᵢ
— Coordenadas del centro de lai
-ésimo puntos suspensivos.aᵢ, bᵢ
— Ejes deli
-ésimo puntos suspensivos en unidades de coordenadas x, y.
Los parámetros de entrada deben ser 2+4⋅n
, donde n
es el número de puntos suspensivos.
Valores devueltos
1
si el punto está dentro de al menos una de las elipses; 0
si no lo es.
Ejemplo
SELECT pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)
┌─pointInEllipses(10., 10., 10., 9.1, 1., 0.9999)─┐
│ 1 │
└─────────────────────────────────────────────────┘
pointInPolygon
Comprueba si el punto pertenece al polígono en el plano.
pointInPolygon((x, y), [(a, b), (c, d) ...], ...)
Valores de entrada
(x, y)
— Coordenadas de un punto en el plano. Tipo de datos — Tupla — Una tupla de dos números.[(a, b), (c, d) ...]
— Vértices de polígono. Tipo de datos — Matriz. Cada vértice está representado por un par de coordenadas(a, b)
. Los vértices deben especificarse en sentido horario o antihorario. El número mínimo de vértices es 3. El polígono debe ser constante.- La función también admite polígonos con agujeros (secciones recortadas). En este caso, agregue polígonos que definan las secciones recortadas utilizando argumentos adicionales de la función. La función no admite polígonos no simplemente conectados.
Valores devueltos
1
si el punto está dentro del polígono, 0
si no lo es.
Si el punto está en el límite del polígono, la función puede devolver 0 o 1.
Ejemplo
SELECT pointInPolygon((3., 3.), [(6, 0), (8, 4), (5, 8), (0, 2)]) AS res
┌─res─┐
│ 1 │
└─────┘
geohashEncode
Codifica la latitud y la longitud como una cadena geohash, consulte (http://geohash.org/, https://en.wikipedia.org/wiki/Geohash).
geohashEncode(longitude, latitude, [precision])
Valores de entrada
- longitud - longitud parte de la coordenada que desea codificar. Flotando en el rango
[-180°, 180°]
- latitude : parte de latitud de la coordenada que desea codificar. Flotando en el rango
[-90°, 90°]
- precision - Opcional, longitud de la cadena codificada resultante, por defecto es
12
. Entero en el rango[1, 12]
. Cualquier valor menor que1
o mayor que12
se convierte silenciosamente a12
.
Valores devueltos
- alfanumérico
String
de coordenadas codificadas (se utiliza la versión modificada del alfabeto de codificación base32).
Ejemplo
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res
┌─res──────────┐
│ ezs42d000000 │
└──────────────┘
geohashDecode
Decodifica cualquier cadena codificada por geohash en longitud y latitud.
Valores de entrada
- cadena codificada - cadena codificada geohash.
Valores devueltos
- (longitud, latitud) - 2-tupla de
Float64
valores de longitud y latitud.
Ejemplo
SELECT geohashDecode('ezs42') AS res
┌─res─────────────────────────────┐
│ (-5.60302734375,42.60498046875) │
└─────────────────────────────────┘
geoToH3
Devoluciones Hombre índice de punto (lon, lat)
con la resolución especificada.
Hombre es un sistema de indexación geográfica donde la superficie de la Tierra se divide en incluso azulejos hexagonales. Este sistema es jerárquico, es decir, cada hexágono en el nivel superior se puede dividir en siete incluso pero más pequeños y así sucesivamente.
Este índice se utiliza principalmente para ubicaciones de bucketing y otras manipulaciones geoespaciales.
Sintaxis
geoToH3(lon, lat, resolution)
Parámetros
lon
— Longitud. Tipo: Float64.lat
— Latitud. Tipo: Float64.resolution
— Resolución del índice. Gama:[0, 15]
. Tipo: UInt8.
Valores devueltos
- Número de índice hexagonal.
- 0 en caso de error.
Tipo: UInt64
.
Ejemplo
Consulta:
SELECT geoToH3(37.79506683, 55.71290588, 15) as h3Index
Resultado:
┌────────────h3Index─┐
│ 644325524701193974 │
└────────────────────┘
Información adicional
Devuelve una matriz de cadenas codificadas por geohash de precisión dada que caen dentro e intersecan los límites de un cuadro dado, básicamente una cuadrícula 2D aplanada en una matriz.
Valores de entrada
- longitude_min - longitud mínima, valor flotante en el rango
[-180°, 180°]
- latitude_min - latitud mínima, valor flotante en el rango
[-90°, 90°]
- longitude_max - longitud máxima, valor flotante en el rango
[-180°, 180°]
- latitude_max - latitud máxima, valor flotante en el rango
[-90°, 90°]
- precisión - precisión del geohash,
UInt8
es el rango[1, 12]
Tenga en cuenta que todos los parámetros de coordenadas deben ser del mismo tipo: Float32
o Float64
.
Valores devueltos
- matriz de cadenas de precisión largas de geohash-cajas que cubren el área proporcionada, no debe confiar en el orden de los artículos.
-
Tenga en cuenta que la función arrojará una excepción si la matriz resultante tiene más de 10'000'000 elementos de longitud.
Ejemplo
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos
┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘
h3GetBaseCell
Devuelve el número de celda base del índice.
Sintaxis
h3GetBaseCell(index)
Parámetros
index
— Número de índice hexagonal. Tipo: UInt64.
Valores devueltos
- Número de celda base hexagonal. Tipo: UInt8.
Ejemplo
Consulta:
SELECT h3GetBaseCell(612916788725809151) as basecell
Resultado:
┌─basecell─┐
│ 12 │
└──────────┘
H3HexAreaM2
Área hexagonal promedio en metros cuadrados a la resolución dada.
Sintaxis
h3HexAreaM2(resolution)
Parámetros
resolution
— Resolución del índice. Gama:[0, 15]
. Tipo: UInt8.
Valores devueltos
- Superficie en m². Tipo: Float64.
Ejemplo
Consulta:
SELECT h3HexAreaM2(13) as area
Resultado:
┌─area─┐
│ 43.9 │
└──────┘
h3IndexesAreNeighbors
Devuelve si los H3Indexes proporcionados son vecinos o no.
Sintaxis
h3IndexesAreNeighbors(index1, index2)
Parámetros
index1
— Número de índice hexagonal. Tipo: UInt64.index2
— Número de índice hexagonal. Tipo: UInt64.
Valores devueltos
- Devoluciones
1
si los índices son vecinos,0
de lo contrario. Tipo: UInt8.
Ejemplo
Consulta:
SELECT h3IndexesAreNeighbors(617420388351344639, 617420388352655359) AS n
Resultado:
┌─n─┐
│ 1 │
└───┘
H3ToChildren
Devuelve una matriz con los índices secundarios del índice dado.
Sintaxis
h3ToChildren(index, resolution)
Parámetros
index
— Número de índice hexagonal. Tipo: UInt64.resolution
— Resolución del índice. Gama:[0, 15]
. Tipo: UInt8.
Valores devueltos
- Matriz con los índices H3 hijo. Matriz de tipo: UInt64.
Ejemplo
Consulta:
SELECT h3ToChildren(599405990164561919, 6) AS children
Resultado:
┌─children───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [603909588852408319,603909588986626047,603909589120843775,603909589255061503,603909589389279231,603909589523496959,603909589657714687] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
H3ToParent
Devuelve el índice primario (más grueso) que contiene el índice dado.
Sintaxis
h3ToParent(index, resolution)
Parámetros
index
— Número de índice hexagonal. Tipo: UInt64.resolution
— Resolución del índice. Gama:[0, 15]
. Tipo: UInt8.
Valores devueltos
- Índice padre H3. Tipo: UInt64.
Ejemplo
Consulta:
SELECT h3ToParent(599405990164561919, 3) as parent
Resultado:
┌─────────────parent─┐
│ 590398848891879423 │
└────────────────────┘
H3ToString
Convierte la representación H3Index del índice en la representación de cadena.
h3ToString(index)
Parámetros
index
— Número de índice hexagonal. Tipo: UInt64.
Valores devueltos
- Representación de cadena del índice H3. Tipo: Cadena.
Ejemplo
Consulta:
SELECT h3ToString(617420388352917503) as h3_string
Resultado:
┌─h3_string───────┐
│ 89184926cdbffff │
└─────────────────┘
stringToH3
Convierte la representación de cadena en representación H3Index (UInt64).
stringToH3(index_str)
Parámetros
index_str
— Representación de cadena del índice H3. Tipo: Cadena.
Valores devueltos
- Número de índice hexagonal. Devuelve 0 en caso de error. Tipo: UInt64.
Ejemplo
Consulta:
SELECT stringToH3('89184926cc3ffff') as index
Resultado:
┌──────────────index─┐
│ 617420388351344639 │
└────────────────────┘
h3GetResolution
Devuelve la resolución del índice.
Sintaxis
h3GetResolution(index)
Parámetros
index
— Número de índice hexagonal. Tipo: UInt64.
Valores devueltos
- Resolución del índice. Gama:
[0, 15]
. Tipo: UInt8.
Ejemplo
Consulta:
SELECT h3GetResolution(617420388352917503) as res
Resultado:
┌─res─┐
│ 9 │
└─────┘