# Funciones Geoespaciales
# greatCircleDistance
Calcula la distancia entre dos puntos en la superficie de la Tierra utilizando la fórmula del gran círculo.
greatCircleDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Parámetros de entrada
lon1Deg
— Longitud del primer punto en grados. Rango:[-180°, 180°]
.lat1Deg
— Latitud del primer punto en grados. Rango:[-90°, 90°]
.lon2Deg
— Longitud del segundo punto en grados. Rango:[-180°, 180°]
.lat2Deg
— Latitud del segundo punto en grados. Rango:[-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 rango.
Ejemplo
SELECT greatCircleDistance(55.755831, 37.617673, 55.755831, 37.617673) AS greatCircleDistance
┌─greatCircleDistance─┐
│ 0 │
└─────────────────────┘
# geoDistance
Similar a greatCircleDistance
pero calcula la distancia en el elipsoide WGS-84 en lugar de la esfera. Esta es una aproximación más precisa del geoide de la Tierra. El rendimiento es el mismo que para greatCircleDistance
(sin desventaja de rendimiento). Se recomienda utilizar geoDistance
para calcular las distancias en la Tierra.
Nota técnica: para puntos lo suficientemente cercanos, calculamos la distancia utilizando una aproximación plana con la métrica en el plano tangente en el punto medio de las coordenadas.
geoDistance(lon1Deg, lat1Deg, lon2Deg, lat2Deg)
Parámetros de entrada
lon1Deg
— Longitud del primer punto en grados. Rango:[-180°, 180°]
.lat1Deg
— Latitud del primer punto en grados. Rango:[-90°, 90°]
.lon2Deg
— Longitud del segundo punto en grados. Rango:[-180°, 180°]
.lat2Deg
— Latitud del segundo punto en grados. Rango:[-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 rango.
Ejemplo
SELECT geoDistance(38.8976, 77.0366, 39.9496, 75.1503) AS geoDistance
┌─geoDistance─┐
│ 212458.73 │
└─────────────┘
# H3
Obtener un índice: https://wolf-h3-viewer.glitch.me (opens new window)
- (8831aa5039fffff)16 = (613363270285262847)10
Verificar si es válido h3IsValid(h3index)
SELECT h3IsValid(613363270285262847) AS h3IsValid;
┌─h3IsValid─┐
│ 1 │
└───────────┘
Convertir índice H3 a longitud y latitud h3ToGeo(h3Index)
SELECT h3ToGeo(613363270285262847) AS coordinates;
┌─coordinates───────────────────────────┐
│(116.29523629955709,39.984633235997315)│
└───────────────────────────────────────┘
Convertir a arreglo de vértices h3ToGeoBoundary
SELECT h3ToGeoBoundary(613363270285262847) AS coordinates;
┌─coordinates──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [(39.98791325592796,116.2925333574096),(39.98386803718472,116.29020686993137),(39.98058822646115,116.29290984546513),(39.98135339622932,116.297938782017),(39.98539816328819,116.30026548576008),(39.98867821224181,116.29756303675612)] │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
# h3IsValid
Verifica si el número es un índice H3 válido.
h3IsValid(h3index)
Parámetro
h3index
— Número de índice hexagonal. Tipo: UInt64.
Valores devueltos
- 1 — El número es un índice H3 válido.
- 0 — El número no es un índice H3 válido.
- Tipo: UInt8.
Ejemplo
SELECT h3IsValid(617301318803390464) AS h3IsValid;
┌─h3IsValid─┐
│ 1 │
└───────────┘
# h3ToGeo
Devuelve la longitud y latitud del centroide correspondiente al índice H3 proporcionado.
h3ToGeo(h3Index)
Argumentos
h3Index
— Índice H3. UInt64.
Valores devueltos
Una tupla que consta de dos valores: tuple(lon,lat)
. lon
— Longitud. Float64. lat
— Latitud. Float64.
Ejemplo
SELECT h3ToGeo(617301318803390464) AS coordinates;
┌─coordinates───────────────────────────┐
│ (35.537867206326645,54.20746993771632)│
└───────────────────────────────────────┘
# h3ToGeoBoundary
Devuelve un arreglo de pares (lon, lat)
, que corresponde al límite del índice H3 proporcionado.
h3ToGeoBoundary(h3Index)
Argumentos
h3Index
— Índice H3. Tipo: UInt64.
Valores devueltos
Arreglo de pares '(lon, lat)'. Tipo: Array(Float64, Float64).
Ejemplo
SELECT h3ToGeoBoundary(617301318803390464) AS coordinates;
┌─coordinates───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [(54.20668646205218,35.53529359582246),(54.20566163343774,35.537605905213915),(54.20644505711934,35.54017955058831),(54.208253376128475,35.54044097223983),(54.209278241418595,35.53812853031426),(54.20849475102178,35.535554799273164)] │
└────────────────────────────────────────────────────────