Cosa è un vettore geometrico?

Spesso chi è alle prime armi con i GIS si trova un po’ in difficoltà a cogliere in pieno il concetto di vettore ma questo è uno dei concetti fondamentali per approcciarsi in maniera proficua alla metodologia GIS.

In matematica un vettore è un elemento di uno spazio vettoriale. I vettori sono quindi elementi che possono essere sommati fra loro e moltiplicati per dei numeri, detti scalari.
Il concetto matematico di vettore nasce dall’idea intuitiva di una grandezza fisica (come ad esempio spostamento, accelerazione e forza) caratterizzata da intensità, direzione e verso nello spazio tridimensionale. A seguito dell’introduzione delle coordinate cartesiane una grandezza di questo tipo poteva essere rappresentata da una terna di numeri reali: le componenti relative a tre direzioni spaziali di riferimento. Nella successiva formalizzazione matematica si è giunti a definire il concetto generale di spazio vettoriale, come insieme in cui è definita l’operazione di combinazione lineare di due o più elementi. Fonte Wikipedia

Un array, in informatica, indica una struttura dati complessa, statica e omogenea. Gli array, presenti praticamente in tutti i linguaggi di programmazione o di scripting, sono ispirati alla nozione matematica di vettore (quando monodimensionali) o di matrice (nel caso di array bidimensionali). Più precisamente, l’array è in genere classificato come un costruttore di tipo: in altre parole, esso consente di definire nuovi tipi di dati a partire da (come aggregati di valori di) tipi preesistenti. Fonte Wikipedia

Sempre per restare in campo informatico:

La grafica vettoriale è una tecnica utilizzata in computer grafica per descrivere un’immagine. Un’immagine descritta con la grafica vettoriale è chiamata immagine vettoriale. Nella grafica vettoriale un’immagine è descritta mediante un insieme di primitive geometriche che definiscono punti, linee, curve e poligoni ai quali possono essere attribuiti colori e anche sfumature. È radicalmente diversa dalla grafica raster in quanto nella grafica raster le immagini vengono descritte come una griglia di pixel opportunamente colorati. Fonte Wikipedia

 C’è un filo che unisce il concetto di vettore geometrico nella metodologia GIS e quello di vettore esposto nel quotato precedente. Andiamo a verificare ciò!

Le righe di codice qui sopra riproducono un geojson estratto da PostGIS. Se andate alla riga 5 e la scorrete fin dopo “coordinates” noterete la tipica formattazione di un vettore matematico, nonché di un array informatico. Ogni coppia di numeri [ -14.143507972665141, 71.683371298405461 ] definisce la posizione geografica di un vertice del poligono chiamato(“id”) 0; il poligono in questione ha 6 vertici avendo 6 coppie di coordinate. Questo poligono è un poligono piano poiché ha solo due coppie di coordinate invece delle tre necessarie per un poligono tridimensionale.

Cosa altro ci mostrano queste righe di codice? In riga 3 c’è il sistema di riferimento (ricordate le coordinate cartesiane richiamate quando si è espresso il concetto di vettore matematico?). In riga 5 l’attributo “geometry” definisce il tipo di geometria; poligonale in questo caso ma poteva essere di tipo lineare o puntuale a secondo del tipo di primitiva geometrica da rappresentare (e qui ci riallacciamo alla grafica vettoriale).

Fatto questo piccolo ma importantissimo preambolo possiamo andare a definire cosa è un vettore nella metodologia GIS:

Un vettore geometrico è un insieme di coordinate espresse secondo primitive geometriche che definiscono un oggetto che rappresenta un’entità geografica o un fenomeno.

Le primitive geometriche sono punti, linee e poligoni ed ogni vettore può portare con se una ed una sola di queste primitive.

Vettore puntuale: in questa immagine sono riportate le posizioni di alberi
Fig.1 – Vettore puntuale: in questa immagine sono riportate le posizioni di alberi
Vettore poligonale: in questa immagine sono riportate le dimensioni in piano di edifici
Fig.2 – Vettore poligonale: in questa immagine sono riportate le dimensioni in piano di edifici
Vettore lineare: in questa immagine è riportato un confine comunale
Fig.3 – Vettore lineare: in questa immagine è riportato un confine comunale

Le figure 1 e 2 riportano entità geografiche, la figura 3 riproduce una entità astratta come può essere un confine comunale o un’altra tipologia di fenomeno come la rotta di un’aeroplano ad esempio.

Ognuna di queste primitive geometriche porta con se degli attributi. Infatti ogni vettore geometrico è accompagnato da una importante serie di informazioni, definite attributi, inseriti in una tabella in modo da definire una attribute table. L’attribute table è l’entità che differenzia un vettore GIS da una entità geometrica realizzata in un CAD.

E’ fondamentale anche capire che le primitive geometriche non possono essere sommate in uno stesso vettore. Quando ad esempio si va a definire un vettore in linguaggio SQL, usando ad esempio PostGIS, con il comando AddGeometryColumn si va a definire il tipo di geometria che definirà quindi il tipo di vettore(POINT, LINESTRING, POLYGON, MULTIPOINT). Un client come ad esempio QGIS leggerà sempre e solo la distinzione tra le tre tipologie anche se risiedono nello stesso “spazio tabellare” come in un database spaziale.

Fig.4 - Layer di vettori geometrici
Fig.4 – Layer di vettori geometrici

Un’altra cosa che spesso confonde chi è alle prime armi con i GIS è la nomenclatura. Di vettori ce ne sono di tanti tipi ma sono pur sempre vettori anche se sono chiamati Geojson, Shape File, GPX, Kml. Queste sono solo le più comuni estensioni di file che riproducono vettori geometrici. E quando non “vediamo” l’estensione del file perché magari contenuto in un geodatabase anche in quel caso, entrando nel geodatabase, vedremo sempre e solo vettori puntuali, vettori lineari, vettori poligonali.