ST_GeoSquare - Amazon Redshift

ST_GeoSquare

ST_GeoSquare subdivide recursivamente el dominio ([-180, 180], [-90, 90]) en regiones cuadradas iguales llamadas geosquares hasta una profundidad especificada. La subdivisión se basa en la ubicación de un punto proporcionado. Uno de los geosquares que contiene el punto se subdivide en cada paso hasta alcanzar la profundidad máxima. La selección de este geosquare es estable, es decir, el resultado de la función depende solo de los argumentos de entrada. La función devuelve un valor único que identifica el geosquare final en el que se encuentra el punto.

ST_GeoSquare acepta un PUNTO en el que la coordenada “x” representa la longitud y la coordenada “y” representa la latitud. La longitud y la latitud están limitadas a [-180, 180] y [-90, 90], respectivamente. La salida de ST_GeoSquare se puede utilizar como entrada para la función ST_GeomFromGeoSquare.

Hay 360° alrededor del arco de la circunferencia ecuatorial de la Tierra que se dividen en dos hemisferios (oriental y occidental), cada uno con 180° de líneas longitudinales (meridianos) desde el meridiano 0°. Por convención, las longitudes orientales son coordenadas “+” (positivas) cuando se proyectan en un eje x sobre un plano cartesiano y las longitudes occidentales son coordenadas “-” (negativas) cuando se proyectan en un eje x sobre un plano cartesiano. Hay 90° de líneas de latitud al norte y al sur de la circunferencia ecuatorial de 0° de la Tierra, cada una de ellas paralela a dicha circunferencia. Por convención, las líneas de latitud norte intersecan el eje y "+" (positivo) cuando se proyectan en un plano cartesiano y las líneas de latitud sur intersecan el eje y "-" (negativo) cuando se proyectan en un plano cartesiano. La cuadrícula esférica formada por la intersección de las líneas longitudinales y las líneas de latitud se convierte en una cuadrícula proyectada sobre un plano cartesiano con coordenadas “x” positivas “y” negativas estándar y coordenadas “y” positivas “y” negativas en el plano cartesiano.

El propósito de ST_GeoSquare es etiquetar o marcar puntos cercanos con valores de código iguales. Los puntos que se encuentran en el mismo geosquare reciben el mismo valor de código. Un geosquare se utiliza para codificar las coordenadas geográficas (latitud y longitud) en un número entero. Una región más amplia se divide en cuadrículas para delimitar un área en un mapa con resoluciones variables. Un geosquare se puede utilizar para la indexación espacial, la agrupación espacial, las búsquedas de proximidad, la búsqueda de ubicaciones y la creación de identificadores de lugares únicos. La función ST_GeoHash sigue un proceso similar de dividir una región en cuadrículas, pero tiene una codificación diferente.

Sintaxis

ST_GeoSquare(geom)
ST_GeoSquare(geom, max_depth)

Argumentos

geom

Un valor POINT de tipo de datos GEOMETRY o una expresión que toma el valor de un tipo POINT. La coordenada “x” (longitud) del punto debe estar dentro del intervalo: -180 a 180. La coordenada “y” (latitud) del punto debe estar dentro del intervalo: -90 a 90.

max_depth

Un valor de tipo de datos INTEGER. Número máximo de veces que el dominio que contiene el punto se subdivide de forma recursiva. El valor debe ser un número entero entre 1 y 32. El valor predeterminado es 32. El número final real de las subdivisiones es inferior o igual al valor max_depth especificado.

Tipo de retorno

BIGINT

La función devuelve un valor único que identifica el geosquare final en el que se encuentra el punto de entrada.

Si la geometría de entrada no es un punto, la función devuelve un error.

Si el punto de entrada está vacío, el valor devuelto no es una entrada válida para la función ST_GeomFromGeoSquare. Utilice la función ST_IsEmpty para evitar las llamadas a ST_GeoSquare con un punto vacío.

Si la geometría de entrada no está dentro del intervalo, la función devuelve un error.

Si la entrada max_depth está fuera del intervalo, la función devuelve un error.

Ejemplos

El siguiente código SQL devuelve un geosquare a partir de un punto de entrada.

SELECT ST_GeoSquare(ST_Point(13.5, 52.5));
st_geosquare ----------------------- -4410772491521635895

El siguiente código SQL devuelve un geosquare a partir de un punto de entrada con una profundidad máxima de 10.

SELECT ST_GeoSquare(ST_Point(13.5, 52.5), 10);
st_geosquare -------------- 797852