

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Query su dati spaziali in Amazon Redshift
<a name="geospatial-overview"></a>

I *dati spaziali* descrivono la posizione e la forma di una geometria in uno spazio definito (un sistema di riferimento spaziale). Amazon Redshift supporta i dati spaziali con il tipo di dati `GEOMETRY` e `GEOGRAPHY`, che contiene dati spaziali e facoltativamente l'identificatore del sistema di riferimento spaziale (SRID) dei dati. 

I dati spaziali contengono dati geometrici che possono essere utilizzati per rappresentare le caratteristiche geografiche. Esempi di questo tipo di dati includono i bollettini meteorologici, le indicazioni stradali sulle mappe, i tweet con posizioni geografiche, le ubicazioni dei negozi e le tratte delle compagnie aeree. I dati spaziali svolgono un ruolo importante per le attività di analisi, di creazione di report e di previsione aziendali. 

È possibile eseguire una query sui dati spaziali con le funzioni SQL di Amazon Redshift. i dati spaziali contengono i valori geometrici di un oggetto. 

Le operazioni del tipo di dati `GEOMETRY` funzionano sul piano cartesiano. Sebbene l'identificatore di sistema di riferimento spaziale (SRID) sia memorizzato all'interno dell'oggetto, è semplicemente un identificatore del sistema di coordinate e non svolge alcun ruolo negli algoritmi utilizzati per elaborare gli oggetti `GEOMETRY`. Al contrario, le operazioni sul tipo di dati `GEOGRAPHY` utilizzano le coordinate all'interno degli oggetti come coordinate sferiche su uno sferoide. Questo sferoide è definito dallo SRID, che fa riferimento a un sistema di riferimento spaziale geografico. Per impostazione predefinita, i tipi di dati `GEOGRAPHY` vengono creati con riferimento spaziale (SRID) 4326, che fa riferimento al World Geodetic System (WGS) 84. Per maggiori informazioni su SRIDs, vedi [Sistema di riferimento spaziale](https://en.wikipedia.org/wiki/Spatial_reference_system) in Wikipedia.

È possibile utilizzare la funzione ST\$1Transform per trasformare le coordinate da diversi sistemi di riferimento spaziale. Al termine della trasformazione delle coordinate, è possibile utilizzare anche un semplice cast tra le due, purché l'input `GEOMETRY` sia codificato con lo SRID geografico. Questo cast copia semplicemente le coordinate senza ulteriori trasformazioni. Ad esempio:

```
SELECT ST_AsEWKT(ST_GeomFromEWKT('SRID=4326;POINT(10 20)')::geography);
```

```
st_asewkt
------------------------
 SRID=4326;POINT(10 20)
```

Per capire meglio la differenza tra i tipi di dati `GEOMETRY` e `GEOGRAPHY`, bisogna prendere in considerazione il calcolo della distanza tra l'aeroporto di Berlino (BER) e l'aeroporto di San Francisco (SFO) utilizzando il World Geodetic System (WGS) 84. Usando il tipo di dati `GEOGRAPHY`, il risultato è in metri. Quando utilizzi il tipo di dati `GEOMETRY` con SRID 4326, il risultato è espresso in gradi, che non possono essere convertiti in metri perché la distanza di un grado dipende da dove si trovano le geometrie del globo.

I calcoli sul tipo di dati `GEOGRAPHY` sono utilizzati principalmente per calcoli realistici di terra rotonda come l'area precisa di un paese senza distorsioni. Ma sono molto più costosi da calcolare. Pertanto, ST\$1Transform può trasformare le coordinate in un sistema di coordinate locale proiettato appropriato e fare il calcolo sul tipo di dati `GEOMETRY` più veloce.

Utilizzando i dati spaziali, è possibile eseguire query per i seguenti scopi:
+ Individuare la distanza tra due punti;
+ Controllare se un'area (poligono) ne contiene un'altra;
+ Controllare se una linea interseca un'altra linea o un poligono.

Per contenere i valori dei dati spaziali è possibile usare il tipo di dato `GEOMETRY`. Un valore `GEOMETRY` in Amazon Redshift può definire tipi di dati primitivi geometrici bidimensionali (2D), tridimensionali (3DZ), bidimensionali con una misura (3DM) e quadridimensionali (4D):
+ Una geometria bidimensionale (2D) è specificata da due coordinate cartesiane (x, y) in un piano.
+ Una geometria tridimensionale (3DZ) è specificata da tre coordinate cartesiane (x, y, z) nello spazio.
+ Una geometria bidimensionale con misura (3DM) è specificata da tre coordinate (x, y, m), dove le prime due sono coordinate cartesiane in un piano e la terza è una misura.
+ Una geometria quadridimensionale (4D) è specificata da quattro coordinate (x, y, z, m), dove le prime tre sono coordinate cartesiane in uno spazio e la quarta è una misura.

Per ulteriori informazioni sui tipi di dati primitivi geometrici, consultare [Rappresentazione geometrica tramite Well-known Text](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry) su Wikipedia. 

Per contenere i valori dei dati spaziali è possibile usare il tipo di dato `GEOGRAPHY`. Un valore `GEOGRAPHY` in Amazon Redshift può definire tipi di dati primitivi geometrici bidimensionali (2D), tridimensionali (3DZ), bidimensionali con una misura (3DM) e quadridimensionali (4D):
+ Una geometria bidimensionale (2D) è specificata dalle coordinate di longitudine e latitudine su uno sferoide.
+ Una geometria tridimensionale (3DZ) è specificata dalle coordinate di longitudine, latitudine e altitudine su uno sferoide.
+ Una geometria bidimensionale con misura (3DM) è specificata da tre coordinate (longitudine, latitudine, misura), dove le prime due sono coordinate cartesiane in un piano e la terza è una misura.
+ Una geometria quadridimensionale (4D) è specificata da quattro coordinate (longitudine, latitudine, altitudine, misura), dove le prime tre sono longitudine, latitudine e altitudine e la quarta è una misura.

Per ulteriori informazioni sui sistemi di coordinate geografici, consultare [Sistema di coordinate geografici](https://en.wikipedia.org/wiki/Geographic_coordinate_system) e [Sistema di coordinate sferico](https://en.wikipedia.org/wiki/Spherical_coordinate_system) su Wikipedia. 

Il tipo di dati `GEOMETRY` e `GEOGRAPHY` presenta i seguenti sottotipi: 
+ `POINT`
+ `LINESTRING`
+ `POLYGON`
+ `MULTIPOINT`
+ `MULTILINESTRING`
+ `MULTIPOLYGON`
+ `GEOMETRYCOLLECTION`

Sono presenti delle funzioni SQL di Amazon Redshift che supportano le seguenti rappresentazioni dei dati geometrici:
+ GeoJSON
+ Well-known text (WKT) 
+ Extended well-known text (EWKT)
+ Rappresentazione Well-known binary (WKB) 
+ Extended well-known binary (EWKB)

È possibile eseguire il casting tra i tipi di dati `GEOMETRY` e `GEOGRAPHY`.

Il seguente codice SQL lancia una linestring da un `GEOMETRY` a `GEOGRAPHY`. 

```
SELECT ST_AsEWKT(ST_GeomFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geography);
```

```
 st_asewkt
----------------------------------------------
 SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)
```

Il seguente codice SQL lancia una linestring da un `GEOGRAPHY` a `GEOMETRY`. 

```
SELECT ST_AsEWKT(ST_GeogFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geometry);
```

```
 st_asewkt
----------------------------------------------
 SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)
```

Amazon Redshift fornisce numerose funzioni SQL per eseguire query sui dati spaziali. Ad eccezione della funzione `ST_IsValid`, funzioni spaziali che accettano un oggetto `GEOMETRY` come argomento si aspettano che questo oggetto `GEOMETRY` sia una geometria valida. Se l'oggetto `GEOMETRY` o `GEOGRAPHY` non è valido, il comportamento della funzione spaziale non è definito. Per ulteriori informazioni sui nomi validi, consultare [Validità geometrica](spatial-terminology.md#spatial-terminology-validity). 

Per i dettagli sulle funzioni SQL da usare per eseguire query sui dati spaziali, consultare [Funzioni spaziali](geospatial-functions.md). 

Per i dettagli sul caricamento di dati spaziali, consultare [Caricamento di una colonna definita come tipo dati GEOMETRY o GEOGRAPHY](copy-usage_notes-spatial-data.md). 

**Topics**
+ [Tutorial: Utilizzo delle funzioni SQL spaziali con Amazon Redshift](spatial-tutorial.md)
+ [Caricamento di uno shapefile in Amazon Redshift](spatial-copy-shapefile.md)
+ [Terminologia per i dati spaziali di Amazon Redshift](spatial-terminology.md)
+ [Considerazioni sull'utilizzo dei dati spaziali con Amazon Redshift](spatial-limitations.md)