ST_GeoSquare - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

ST_GeoSquare

ST_GeoSquare suddivide in modo ricorsivo il dominio ([-180, 180], [-90, 90]) in regioni quadrate uguali chiamate geosquare a una profondità specifica. La suddivisione si basa sulla posizione di un punto fornito. Uno dei valori geosquare contenenti il punto viene suddiviso ad ogni fase fino a raggiungere la profondità massima. La selezione di questo valore geosquare è stabile, cioè il risultato della funzione dipende solo dagli argomenti di input. La funzione restituisce un valore univoco che identifica il valore geosquare finale in cui si trova il punto.

ST_GeoSquare accetta un valore POINT in cui la coordinata x rappresenta la longitudine e la coordinata y rappresenta la latitudine. La longitudine e la latitudine sono limitate rispettivamente a [-180, 180] e [-90, 90]. L'output di ST_GeoSquare può essere usato come input per la funzione ST_GeomFromGeoSquare.

Ci sono 360° attorno all'arco della circonferenza equatoriale della Terra che sono divisi in due emisferi (orientale e occidentale), ciascuno con 180° di linee longitudinali (meridiani) dal meridiano 0°. Per convenzione, le longitudini orientali sono coordinate "+" (positive) quando proiettate su un asse x su un piano cartesiano e le longitudini occidentali sono coordinate "-" (negative) se proiettate su un asse x su un piano cartesiano. Ci sono 90° di linee latitudinali a nord e a sud della circonferenza equatoriale di 0° della Terra, ciascuna parallela alla circonferenza equatoriale di 0° della Terra. Per convenzione, le linee latitudinali settentrionali intersecano l'asse y "+" (positivo) quando vengono proiettate su un piano cartesiano e le linee latitudinali meridionali intersecano l'asse y "-" (negativo) quando vengono proiettate su un piano cartesiano. La griglia sferica formata dall'intersezione di linee longitudinali e latitudinali viene convertita in una griglia proiettata su un piano cartesiano con coordinate x positive e negative standard e coordinate y positive e negative sul piano cartesiano.

Lo scopo di ST_GeoSquare è etichettare o contrassegnare punti vicini con valori di codice uguali. I punti che si trovano nella stesso valore geosquare ricevono lo stesso valore di codice. Un valore geosquare viene utilizzato per codificare le coordinate geografiche (latitudine e longitudine) in un numero intero. Una regione più ampia è divisa in griglie per delineare un'area su una mappa con risoluzioni diverse. Un valore geosquare può essere utilizzato per l'indicizzazione spaziale, il binning spaziale, le ricerche di prossimità, la ricerca della posizione e la creazione di identificatori di luoghi univoci. La funzione ST_GeoHash segue un processo simile di divisione di una regione in griglie, ma ha una codifica diversa.

Sintassi

ST_GeoSquare(geom)
ST_GeoSquare(geom, max_depth)

Argomenti

geom

Un valore POINT del tipo di dati GEOMETRY o un'espressione che restituisce un valore di sottotipo POINT. La coordinata x (longitudine) del punto deve essere compresa nell'intervallo: -180 - 180. La coordinata y (latitudine) del punto deve essere compresa nell'intervallo: -90 - 90.

max_depth

Un valore di tipo INTEGER. Il numero massimo di volte in cui il dominio contenente il punto viene suddiviso in modo ricorsivo. Il valore deve essere un numero intero compreso tra 1 e 32. Il valore predefinito è 32. Il numero finale effettivo delle suddivisioni è inferiore o uguale al valore max_depth specificato.

Tipo restituito

BIGINT

La funzione restituisce un valore univoco che identifica il valore geosquare finale in cui si trova il punto di input.

Se l'input geom non è un punto, la funzione restituisce un errore.

Se il punto di input è vuoto, il valore restituito non è un input valido per la funzione ST_GeomFromGeoSquare. Usa la funzione ST_IsEmpty per impedire le chiamate a ST_GeoSquare con un punto vuoto.

Se il punto di input non rientra nell'intervallo, la funzione restituisce un errore.

Se l'input max_depth non rientra nell'intervallo, la funzione restituisce un errore.

Esempi

Il seguente comando SQL restituisce un valore geosquare da un punto di input.

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

Il seguente comando SQL restituisce un valore geosquare da un punto di input con una profondità massima di 10.

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