SlideShare a Scribd company logo
1 of 39
Download to read offline
UNIVERSIT`A DEGLI STUDI DI TRIESTE
DIPARTIMENTO DI INGEGNERIA E ARCHITETTURA
Corso di Laurea Triennale in Ingegneria Elettronica e Informatica
Curriculum Applicazioni Informatiche
Applicazione dell’algoritmo di
clustering DBSCAN allo studio di
traiettorie aeree
LAUREANDA RELATORE
Giorgia Nadizar Chiar.mo Prof. Lorenzo Castelli
Universit`a degli Studi di Trieste
Anno Accademico 2018/2019
No man is an island entire of itself; every man
is a piece of the continent, a part of the main
— John Donne – No Man is an Island —
A chi `e lontano, ma vicino con il cuore
Indice
1 Introduzione 3
1.1 Introduzione al problema . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 L’Air Traffic Management . . . . . . . . . . . . . . . . 3
1.1.2 L’obiettivo del lavoro . . . . . . . . . . . . . . . . . . . 4
1.2 Cos’`e il clustering? . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . 5
2 Analisi dei dati in input 7
2.0.1 La tabella route pool static . . . . . . . . . . . . . . . . 7
2.1 I database ddr 1409 nest e ddr 1709 nest . . . . . . . . . . . . 7
2.1.1 La tabella flight . . . . . . . . . . . . . . . . . . . . . . 8
2.1.2 La tabella airport . . . . . . . . . . . . . . . . . . . . . 9
2.1.3 La tabella trajectory . . . . . . . . . . . . . . . . . . . 9
2.1.4 La tabella geopoint . . . . . . . . . . . . . . . . . . . . 10
2.1.5 La tabella trajectory has geopoint . . . . . . . . . . . . 10
3 Prima elaborazione dei dati 11
3.1 Creazione delle tabelle . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Individuazione dei voli d’interesse . . . . . . . . . . . . . . . . 12
3.2.1 Focus sull’Europa continentale . . . . . . . . . . . . . . 12
3.3 Estrazione della traiettoria per un singolo volo . . . . . . . . . 13
3.4 Estrazione delle traiettorie e scrittura in tabella . . . . . . . . 14
4 Clustering dei dati 15
4.1 Osservazioni preliminari . . . . . . . . . . . . . . . . . . . . . 15
4.2 L’algoritmo DBSCAN . . . . . . . . . . . . . . . . . . . . . . 16
4.2.1 Introduzione a DBSCAN su un insieme di punti . . . . 16
4.2.2 Applicazione su un insieme di traiettorie . . . . . . . . 17
4.3 Esecuzione del clustering . . . . . . . . . . . . . . . . . . . . . 18
4.3.1 Modifica della tabella “TRAJ” . . . . . . . . . . . . . 18
4.3.2 Script per il clustering . . . . . . . . . . . . . . . . . . 18
4.4 Risultati ottenuti . . . . . . . . . . . . . . . . . . . . . . . . . 19
1
4.4.1 Relazione tra numero di cluster e numero di traiettorie 21
4.4.2 Relazione tra numero di cluster e distanza . . . . . . . 22
5 Ulteriori elaborazioni dei dati 25
5.1 Riflessioni sui risultati del clustering . . . . . . . . . . . . . . 25
5.2 Clustering su traiettorie tagliate . . . . . . . . . . . . . . . . . 26
5.2.1 Modifica della tabella “TRAJ” . . . . . . . . . . . . . 26
5.2.2 Script dell’esecuzione . . . . . . . . . . . . . . . . . . . 26
5.3 Studio su come tagliare le traiettorie . . . . . . . . . . . . . . 27
5.3.1 Analisi della partenza . . . . . . . . . . . . . . . . . . . 27
5.3.2 Analisi della destinazione . . . . . . . . . . . . . . . . . 29
5.3.3 Adattamento del primo e dell’ultimo punto al raggio . 29
5.4 Risultati ottenuti . . . . . . . . . . . . . . . . . . . . . . . . . 30
6 Conclusioni 33
6.1 Commenti personali . . . . . . . . . . . . . . . . . . . . . . . . 33
Bibliografia 34
Ringraziamenti 36
2
Capitolo 1
Introduzione
1.1 Introduzione al problema
1.1.1 L’Air Traffic Management
Dalla nascita dell’aviazione, in cui il pilota era l’unico responsabile per la
sicurezza del velivolo, la regolamentazione in ambito aeronautico `e notevol-
mente cambiata. Il traffico aereo `e aumentato a tal punto da richiedere un
controllo esterno, ai fini di garantire libert`a e sicurezza in volo. Nasce, per-
tanto, l’ATC - Air Traffic Control, cio`e la scienza di mantenere la sicurezza
aerea, tenendo il traffico ben separato, pur garantendo l’efficienza [1].
Un qualsiasi volo `e quindi soggetto a controlli e regolamentazioni, dal
momento in cui inizia a muoversi sulla pista dell’aeroporto di partenza, fino
al momento dell’atterraggio. Inoltre, per prevedere e gestire eventuali situa-
zioni di potenziale pericolo, qualsiasi aereo deve inviare il proprio piano di
volo entro tre giorni dalla partenza alla CFMU - Central Flow Management
Unit, un’unit`a di controllo che lavora a livello europeo, gestita da EURO-
CONTROL1
. Nel piano di volo `e necessario includere la traiettoria che si
intende seguire, in modo che la CFMU possa creare una proiezione quadri-
mensionale di tutti i voli, controllando che siano sufficientemente distanziati
tra loro e non vengano violati ulteriori vincoli2
[1].
La presenza di un piano di volo implica che la scelta della traiettoria
da seguire non `e in mano al singolo pilota, ma si colloca in un contesto
dove le variabili sono molte. Un ruolo preponderante `e giocato dalle scelte
1
EUROCONTROL `e l’organizzazione europea per la sicurezza dell’aviazione, fondata
nel 1960 e attualmente composta da 37 stati membri. [1]
2
I vincoli cui sono soggetti i voli sono molteplici, per approfondire si veda [1].
3
strategiche delle compagnie aeree che, unite ai singoli vincoli, quali condizioni
meteorologiche, danno origine alla traiettoria definitiva.
1.1.2 L’obiettivo del lavoro
L’obiettivo di questo lavoro `e studiare le traiettorie compiute tra un insieme
dato di coppie origine destinazione. Tuttavia, `e impensabile studiare le tra-
iettorie singolarmente, dato il loro numero molto elevato: `e quindi necessario
raggruppare le traiettorie simili, per poter fare astrazione da singoli eventi
che possono aver causato una minima variazione di traiettoria. Osservando
la figura 1.1, si pu`o capire meglio l’idea che sta dietro a questo lavoro: le
traiettorie tracciate con lo stesso colore vengono considerate come un unico
percorso, in quanto sono poco3
diverse tra loro.
Figura 1.1: Esempio di raggruppamento di traiettorie [2]
Questo lavoro pu`o essere propedeutico per uno studio pi`u approfondito
relativo alle strategie messe in atto dalle compagnie aeree nella scelta delle
traiettorie da seguire su una tratta.
Ai fini di questo lavoro, le traiettorie vengono studiate come oggetti bi-
dimensionali appartenenti al piano xy, trascurandone la componente alti-
metrica (asse z). Il metodo utilizzato per eseguire i raggruppamenti `e il
clustering.
3
Si vedr`a successivamente nel corso del presente elaborato quali sono le condizioni
specifiche affinch´e le traiettorie siano considerate poco diverse tra loro.
4
1.2 Cos’`e il clustering?
Per clustering si intende il “il processo di raggruppamento di un insieme di
oggetti fisici o astratti in classi di oggetti simili” [3]. Pertanto, il problema
di base `e trovare una struttura in un insieme, sfruttando una certa misura di
“somiglianza” tra i dati [4], come si vede nella figura 1.2. Infatti, un cluster
`e una collezione di oggetti che sono tra loro “simili”, e che sono “dissimili”
dagli elementi degli altri cluster [3].
Figura 1.2: Esempio di clustering [4]
Esistono molti algoritmi per risolvere il problema del clustering, i quali
producono risultati anche molto diversi tra loro, il che rende fondamentale
la corretta scelta dell’algoritmo da utilizzare. In questo lavoro, l’algoritmo
utilizzato `e DBSCAN (Density-based spatial clustering of applications with
noise), in quanto presenta il vantaggio di non dover indicare a priori il numero
di cluster [2].
1.3 Tecnologie utilizzate
Per lo svolgimento di questo lavoro sono state utilizzate le seguenti tecnologie
software:
ˆ linguaggio di programmazione Python
ˆ DBMS PostgreSQL
ˆ DBMS MySQL
5
Il computer utilizzato per eseguire il software ha le seguenti caratteristi-
che:
ˆ Processore - Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2.59GHz
ˆ RAM installata - 16,0 GB
6
Capitolo 2
Analisi dei dati in input
Nel presente capitolo vengono analizzati i dati utilizzati come input. Es-
si sono stati estratti da database appartenenti all’universit`a di Westmin-
ster, attualmente utilizzati dal gruppo di Ricerca Operativa dell’Universit`a
di Trieste, nell’ambito dei progetti europei ADAPT e Domino.
2.0.1 La tabella route pool static
Questa tabella appartiene al database domino environment. Le colonne uti-
lizzate sono icao orig e icao dest, contenenti rispettivamente i codici ICAO1
relativi agli aeroporti di partenza e di arrivo. Queste due colonne sono neces-
sarie per individuare tutte le coppie distinte origine destinazione di interesse.
I codici presenti nella tabella, sono codici composti da quattro caratteri,
univoci per ogni aeroporto, pubblicati dall’ICAO nel [6].
icao orig icao dest
LEBL LIME
LIPQ LICC
LIPZ EGLL
· · · · · ·
Tabella 2.1: Stralcio della tabella route pool static
2.1 I database ddr 1409 nest e ddr 1709 nest
Questi database vengono trattati insieme in quanto presentano al loro interno
tabelle aventi la stessa struttura. Il database ddr 1409 nest contiene dati
1
L’ICAO, (International Civil Aviation Organization) `e un’agenzia specializzata delle
Nazioni Unite, che si occupa di definire standard nell’ambito dell’aviazione civile [5].
7
relativi all’intervallo di tempo 21 agosto - 17 settembre 2014; il database
ddr 1709 nest contiene dati relativi all’intervallo di tempo 17 agosto - 13
settembre 2017. L’intervallo di tempo totale considerato, quindi, comprende
56 giorni.
Si pu`o notare, confrontando le date cui fanno riferimento i due database,
che il periodo considerato `e lo stesso (seconda met`a di agosto e prima met`a
di settembre). Tuttavia, le date differiscono di alcune giornate, in quanto gli
intervalli di tempo per cui vengono raccolti i dati in questo database sono
segmentati in cicli di 28 giorni2
che iniziano il gioved`ı.
La scelta di considerare lo stesso periodo su anni differenti `e stata dettata
dalla volont`a di aumentare il numero di traiettorie rispetto a quelle otteni-
bili dal singolo ciclo, evitando di ottenere risultati falsati da variazioni di
traiettorie dovute alla stagione.
All’interno di questi database vengono utilizzate le tabelle flight, airport,
trajectory, trajectory has geopoint e geopoint, descritte nelle prossime sezioni.
2.1.1 La tabella flight
La tabella contiene informazioni riguardanti dei voli.
id ac id airport arrival airport departure eobt
39346 MEA204 111510 114809 2014-08-20 21:00:00
39347 AFL2605 112637 112093 2014-08-20 21:55:00
39348 AFL2193 112637 113513 2014-08-20 21:35:00
· · · · · · · · · · · · · · ·
Tabella 2.2: Stralcio della tabella flight
Le colonne utilizzate in questa tabella sono:
ˆ id: `e la chiave primaria della tabella che identifica univocamente un’i-
stanza, ovvero un volo.
ˆ ac id: indica il callsign dell’aereo, ovvero un codice alfanumerico che
identifica l’aereo [7].
ˆ airport arrival: indica l’aeroporto di arrivo del volo. In questa tabella
non viene utilizzato il codice ICAO ma viene utilizzata una stringa
numerica, chiave esterna rispetto alla tabella airport.
ˆ airport departure: indica l’aeroporto di partenza del volo. Il formato `e
lo stesso dell’aeroporto di arrivo.
2
AIRAC (Aeronautical Information Regulation And Control) cycle [1].
8
ˆ eobt: indica l’estimated off-block time, cio`e l’orario stimato per inizio
delle operazioni di partenza del volo [1].
2.1.2 La tabella airport
La tabella contiene informazioni riguardanti degli aeroporti.
id icao id
112384 AFIL
116355 AGGA
116886 AGGE
· · · · · ·
Tabella 2.3: Stralcio della tabella airport
Le colonne utilizzate in questa tabella sono:
ˆ id: `e la chiave primaria della tabella, in formato numerico.
ˆ icao id: indica il codice ICAO dell’aeroporto in questione.
2.1.3 La tabella trajectory
La tabella contiene informazioni riguardanti delle traiettorie.
id flight id type
1 39346 ftfm
2 39347 ftfm
3 39348 ftfm
· · · · · · · · ·
Tabella 2.4: Stralcio della tabella trajectory
Le colonne utilizzate in questa tabella sono:
ˆ id: `e la chiave primaria della tabella che identifica univocamente la
traiettoria.
ˆ flight id: indica l’id del volo che ha percorso la traiettoria data.
ˆ type: `e il tipo di traiettoria. Per lo studio sono richieste solo le traietto-
rie aventi tipo “FTFM ”, (Filed Tactical Flight Model) corrispondenti,
cio`e, all’ultimo piano di volo compilato [8].
9
2.1.4 La tabella geopoint
La tabella contiene informazioni riguardanti dei punti nello spazio.
id coords
1 POINT(50.86 -3.2347222222000003)
2 POINT(45.435833333299996 10.2702777778)
3 POINT(42.1055555556 1.8533333333000002)
· · · · · ·
Tabella 2.5: Stralcio della tabella geopoint
Le colonne utilizzate in questa tabella sono:
ˆ id: `e la chiave primaria della tabella che identifica univocamente il
punto.
ˆ coords: indica le coordinate, latitudine e longitudine del punto in for-
mato wkt 3
.
2.1.5 La tabella trajectory has geopoint
La tabella lega le tabelle geopoint e trajectory. Infatti, ogni traiettoria della
prima tabella `e descritta tramite dei punti, presenti nella tabella geopoint.
Le colonne utilizzate in questa tabella sono:
trajectory id geopoint id order
1 6123 1
1 40959 2
1 40960 3
· · · · · · · · ·
Tabella 2.6: Stralcio della tabella trajectory has geopoint
ˆ trajectory id: indica la traiettoria di appartenenza.
ˆ geopoint id: indica il punto.
ˆ order: indica l’ordine con cui il punto (geopoint id) compare nella
traiettoria (trajectory id).
3
Well-known Text (WKT) `e un linguaggio che offre una rappresentazione compatta e
leggibile di oggetti geometrici. [9]
10
Capitolo 3
Prima elaborazione dei dati
L’obiettivo della prima elaborazione dei dati in input, `e quello di renderli
utilizzabili per il clustering. Per fare ci`o, viene creata la tabella “TRAJ”
in un database ospitato su un server dell’Universit`a di Trieste. Questa ta-
bella conterr`a callsign, aeroporti di origine e destinazione indicati con il co-
dice ICAO, eobt e traiettoria in formato wkt; per tutti i voli1
delle tabelle
flight dei database ddr 1409 nest e ddr 1709 nest aventi origine e destinazio-
ne appartenenti all’elenco estratto dalla tabella route pool static del database
domino environment.
3.1 Creazione delle tabelle
Per semplificare il lavoro, si `e scelto di lavorare separatamente sui due databa-
se ddr 1409 nest e ddr 1709 nest. `E stato quindi necessario creare due tabelle
intermedie, “TRAJ 14” e “TRAJ 17”, da unire poi nella tabella “TRAJ”.
id callsign orig dest eobt trajectory
· · · · · · · · · · · · · · · · · ·
Tabella 3.1: Tabella “TRAJ” appena creata
Le colonne di ciascuna tabella sono:
ˆ callsign: callsign del volo.
ˆ orig: aeroporto di partenza con il codice ICAO.
1
Ad ogni volo `e univocamente associata una traiettoria. Da qui in avanti, i due termini,
volo e traiettoria, verranno usati come sinonimi per indicare il percorso compiuto dall’aereo
dall’origine alla destinazione.
11
ˆ dest: aeroporto di destinazione con il codice ICAO.
ˆ eobt: l’orario stimato per l’inizio delle operazioni di partenza del volo.
ˆ trajectory: la traiettoria, descritta come una spezzata, in formato wkt.
Inoltre, nella tabella definitiva, “TRAJ”, `e stata aggiunta una colonna id per
avere una chiave primaria artificiale, utile per lo svolgimento del clustering.
3.2 Individuazione dei voli d’interesse
Per trovare i voli aventi origine e destinazione nella tabella route pool static, `e
necessario intersecare quest’ultima con la tabella flight. Risulta per`o evidente
come questo sia impossibile senza ulteriori azioni, in quanto i formati degli
aeroporti nelle due tabelle non coincidono. `E quindi necessario fare un join
tra le tabelle flight ed airport in modo da ottenere gli aeroporti con i codici
ICAO. Una volta fatto ci`o si pu`o fare l’intersezione tra le tabelle menzionate
sopra, ottenendo l’elenco dei voli d’interesse.
3.2.1 Focus sull’Europa continentale
All’interno di questo insieme di voli al momento si trovano anche rotte tran-
soceaniche, aventi uno degli estremi in Europa. Tuttavia, la scelta delle
traiettorie per questi tipi di voli `e notevolmente influenzata dalle condizioni
atmosferiche, il che li rende inadatti per questo studio.
Figura 3.1: Mappa dei codici ICAO [10]
12
Si decide pertanto di mantenere all’interno dell’insieme di voli d’interesse
solo quelli che hanno entrambi gli estremi in Europa. Per individuare questo
insieme, si mantengono solo i voli che hanno i codici ICAO di origine e
destinazione che iniziano con AZ, B, E, L, GC, UK, UL, UM, UR o UU
(figura 3.1).
3.3 Estrazione della traiettoria per un singolo
volo
Per estrarre la traiettoria di un volo `e necessario utilizzare le tabelle flight,
trajectory, trajectory has geopoint e geopoint, facendo un join (figura 3.2).
flight
id ac id airport arrival airport departure eobt
trajectory
id flight id type
trajectory has geopoint
trajectory id geopoint id order
geopoint
id coords
1:1
1:n
1:1
Figura 3.2: Schema di come sono legate le tabelle
Con questo metodo, per ogni volo si ottiene un elenco di punti ordinati
(secondo il campo order della tabella trajectory has geopoint). Per trasfor-
mare questo insieme di punti in una spezzata, `e stato implementato uno
script che concatena i punti, fornendo come output una linea in formato wkt
(figura 3.3).
13
Figura 3.3: Traiettoria di un volo da Roma-Fiumicino a Milano-Malpensa, descritta
prima tramite punti e poi tramite una linea spezzata
3.4 Estrazione delle traiettorie e scrittura in
tabella
L’ultimo step dell’elaborazione dei dati consiste nell’unione dei due passi
precedenti: per ogni volo d’interesse bisogna estrarre la traiettoria ed in-
serirla, insieme alle altre informazioni richieste, nella tabella “TRAJ 14” o
“TRAJ 17”, a seconda del database di provenienza.
`E stato quindi implementato il seguente script, di cui si riporta solo una
versione schematica.
1. Viene ricavata la tabella dei voli d’interesse e viene salvata in un Data-
Frame2
in locale. Per ogni volo, questo DataFrame contiene: id, codici
ICAO di origine e destinazione, callsign ed eobt.
2. Iterando sulle righe del DataFrame, partendo dall’id del volo si ricava
l’elenco dei punti, da cui si ottiene la traiettoria in formato wkt con lo
script menzionato nella sezione precedente.
3. Una volta ottenuta la traiettoria, si caricano nella tabella di destina-
zione codici ICAO di origine e destinazione, callsign, eobt e traiettoria
del volo in questione.
Riempite le due tabelle “TRAJ 14” e “TRAJ 17”, esse vengono unite nella
tabella “TRAJ”.
2
Un DataFrame `e una struttura dati tabulare, bidimensionale, a dimensioni variabili,
potenzialmente eterogenea, con assi corrispondenti a righe e colonne [11].
14
Capitolo 4
Clustering dei dati
Nel presente capitolo viene esposto il lavoro di clustering dei dati.
4.1 Osservazioni preliminari
Per prima cosa `e necessario osservare i dati su cui viene eseguito il clustering,
in modo da poter formulare ipotesi sul risultato atteso.
Nello specifico, `e opportuno ricavare il numero di traiettorie tra ciascu-
na origine e destinazione, in quanto si pu`o supporre che questo valore sar`a
influente sul risultato. Ovvero, ci si aspetta che al crescere del numero di
traiettorie cresca anche il numero di cluster ottenuti. Come si vede nel gra-
fico in figura 4.1, la maggior parte delle coppie origine destinazione presenta
un basso numero di voli tra di esse.
0-10 voli
11-25 voli
26-50 voli
51-100 voli
101-250 voli
>250 voli
38%
19%
15%
12%
11%
5%
Figura 4.1: Grafico relativo al numero di voli tra ogni coppia origine destinazione.
15
Inoltre, bisogna ragionare sulla distanza tra origine e destinazione. Risul-
ta infatti evidente che, al crescere della distanza, cresce anche la probabilit`a
che la traiettoria vari, e quindi cresce anche il numero di cluster attesi (figura
4.2).
Figura 4.2: Esempi di origini e destinazioni vicine e lontane con alcune traiettorie tra di
esse. Nel primo esempio, si vede la tratta Monaco - Trieste, aeroporti distanti 309 km in
linea d’aria. Nel secondo caso, la tratta in questione `e quella Atene - Parigi (Charles de
Gaulle), con una distanza di 2109 km in linea d’aria.
4.2 L’algoritmo DBSCAN
Per lo svolgimento del clustering `e stato impiegato l’algoritmo DBSCAN
(Density-based spatial clustering of applications with noise). Questo algorit-
mo viene generalmente applicato a insiemi di punti, ma pu`o essere genera-
lizzato anche ad altre entit`a, come nel caso delle traiettorie.
4.2.1 Introduzione a DBSCAN su un insieme di punti
L’obiettivo di DBSCAN `e quello di suddividere un insieme di n punti in un
insieme di k cluster, con k non noto a priori, come si vede nella figura 4.3.
Figura 4.3: Esempio di applicazione di DBSCAN [12]
16
L’algoritmo richiede due parametri in ingresso:
ˆ ε - se due punti hanno una distanza minore di questo parametro allora
essi appartengono allo stesso cluster.
ˆ MinPts - indica il numero minimo di punti per ogni cluster. Se un
cluster non contiene almeno MinPts elementi allora l’insieme di punti
viene catalogato come rumore.
L’idea su cui si basa DBSCAN `e la seguente: “si richiede che per ogni punto
p in un cluster C esista un punto q appartenente a C tale che p giaccia in
un intorno di raggio ε di q e che esista un intorno di raggio ε di q contenente
almeno MinPts punti” [13].
Per facilitare la comprensione del funzionamento dell’algoritmo, vengono
introdotte alcune definizioni [13].
Definizione 4.2.1 Si definiscono core points i punti interni al cluster.
Definizione 4.2.2 Si definiscono border points i punti di confine del clu-
ster.
Definizione 4.2.3 Un punto p `e directly density-reachable da un punto
q, dati ε e MinPts se:
1. p appartiene a un intorno di raggio ε di q
2. l’intorno di raggio ε di q contiene almeno MinPts punti
Definizione 4.2.4 Un punto p `e density-reachable da un punto q, dati ε
e MinPts se esiste una successione di punti p1, · · · , pn con p1 = q e pn = p
tale che pi+1 `e directly density-reachable da pi.
Il funzionamento dell’algoritmo pu`o essere descritto come segue. “Per
trovare un cluster, DBSCAN inizia da un punto casuale p e, dati ε e MinPts,
trova tutti i punti density-reachable da p. Se p `e un core point, questa
procedura produce un cluster. Se p `e un border point, non ci sono punti
density-reachable da p e DBSCAN passa ad un altro punto” [13].
4.2.2 Applicazione su un insieme di traiettorie
Per poter applicare l’algoritmo a diversi casi di studio, ne esiste una versione
pi`u generale, che funziona a partire da una matrice delle distanze. Nel caso
delle traiettorie, viene utilizzata la distanza di Hausdorff per costruirla.
17
Distanza di Hausdorff
Definizione 4.2.5 Dati due insiemi finiti di punti, A = {a1, · · · , ap} e B =
{b1, · · · , bq}, la distanza di Hausdorff `e definita come
H(A, B) = max(h(A, B), h(B, A))
dove
h(A, B) = max
a∈A
min
b∈B
||a − b||
e ||.|| `e una norma sugli insiemi A e B, ad esempio la norma Euclidea [14].
“La funzione h(A, B) `e detta distanza di Hausdorff diretta da A a B. Essa
identifica il punto a ∈ A pi`u lontano da ogni punto di B, e misura la distanza
tra a e il punto di B ad esso pi`u vicino” [14]
Si evince, quindi, che la distanza di Hausdorff `e una misura di somiglianza
tra insiemi. Nel caso di questo lavoro, gli insiemi di punti sono le traiettorie.
4.3 Esecuzione del clustering
4.3.1 Modifica della tabella “TRAJ”
Prima di poter eseguire il clustering `e stato necessario modificare la tabella
“TRAJ”, aggiungendo due colonne:
ˆ n cluster: indica il numero di cluster trovati tra l’origine e la destina-
zione del volo in questione.
ˆ cluster id: `e un identificatore del cluster di appartenenza di ogni volo.
Esso `e utile per poter vedere quali sono i cluster ottenuti e quante/quali
traiettorie comprendono.
4.3.2 Script per il clustering
Per eseguire il clustering dei dati con DBSCAN, `e stato implementato il
seguente script, di cui si riporta solo una versione schematica.
1. Viene ricavato e salvato in un DataFrame in locale l’elenco dei codici
ICAO di origine e destinazione dei voli.
2. Iterando sulle righe del DataFrame, per ogni coppia origine destinazione
viene creato un DataFrame contenente tutti i voli tra esse.
18
[ 239612 239613 239614 239615 239616 239617 239618 ]
[ 0 1 1 0 0 2 1 ]
Tabella 4.1: Esempio di vettore delle etichette per i voli da Rotterdam a Stavanger
3. Viene quindi eseguito il clustering sull’insieme di traiettorie dei voli
considerati. Ci`o si articola in due fasi:
(a) Per prima cosa, viene calcolata la matrice delle distanze, usando
la distanza di Hausdorff. Per il calcolo di quest’ultima esiste una
libreria con uno script apposito [15].
(b) In secondo luogo, viene applicato l’algoritmo DBSCAN a partire
dalla matrice delle distanze. Anche in questo caso esiste una li-
breria con uno script che implementa l’algoritmo [16]. I valori di
ε e MinPts usati sono stati scelti nel modo seguente: MinPts `e
stato settato a 1, in modo da creare singoli cluster con le traietto-
rie che in un caso generale potrebbero essere considerate rumore;
per ε `e stato scelto il valore 0.3 che corrisponde a una distanza tra
traiettorie di circa 30 km [2].
4. Come risultato dell’algoritmo, viene fornito un vettore di etichette (ta-
bella 4.1), dove a ogni volo corrisponde un numero da 0 a n-1, con n
numero di cluster trovati. A ogni cluster viene fatto corrispondere un
numero, cos`ı che scorrendo il vettore delle etichette e mettendolo in
corrispondenza con l’elenco dei voli, si possa capire quali voli rientrano
all’interno della stessa classificazione. Da questo vettore `e anche molto
facile ricavare il numero di cluster, corrispondente al totale di numeri
diversi che compaiono al suo interno.
5. Una volta ottenuto il risultato, la tabella “TRAJ” viene aggiornata
inserendo, per ogni riga, il numero di cluster e l’identificatore del cluster
di appartenenza.
4.4 Risultati ottenuti
A elaborazione ultimata, si `e deciso di iniziare l’analisi dei risultati con gli
istogrammi di figura 4.4. A prima vista, si pu`o vedere che la maggior parte
delle coppie origine destinazione presenta un numero molto basso di cluster.
Nello specifico, l’83.07% delle coppie origine destinazione esaminate ha un
19
numero di cluster inferiore o pari a 10. Questo `e un risultato importante, che
rende evidente la necessit`a del clustering: si `e passati dal grafico di figura 4.1,
dove il numero di coppie aventi al massimo 10 traiettorie era il 38% del totale,
ad una situazione in cui pi`u dell’80% delle coppie `e studiabile mediante 10
distinte traiettorie.
Figura 4.4: Istogrammi di frequenza del numero di cluster ottenuti sulle coppie origine
destinazione.
20
In seguito a questa analisi generale, si `e deciso di analizzare pi`u nel detta-
glio le relazioni che legano il numero di cluster ottenuti al numero di traietto-
rie e alla distanza tra origine e destinazione, viste le osservazioni preliminari
della sezione 4.1.
4.4.1 Relazione tra numero di cluster e numero di tra-
iettorie
Per avere un’idea di massima sulla relazione che lega numero di cluster e
numero di traiettorie si `e deciso di tracciare il grafico di figura 4.5.
Nel grafico viene rappresentata anche la retta y = x, poich´e il numero di
cluster non pu`o superare il numero di traiettorie distinte, ed `e utile vedere
graficamente questa limitazione superiore. Basandosi su questa retta, si pu`o
vedere che inizialmente il grafico a dispersione riempie la parte inferiore ad
essa fino a raggiungerla, ma questo fenomeno ha una durata molto breve
lungo l’asse x. Per la maggior parte dell’asse x, infatti, il numero di cluster
ottenuti `e notevolmente inferiore al numero di traiettorie tra l’origine e la
destinazione considerate. Questo risultato `e significativo in quanto indica
che il clustering ha lavorato correttamente, riducendo il numero di traiettorie
diverse grazie al raggruppamento di quelle affini.
Figura 4.5: Relazione tra numero di cluster e numero di traiettorie
21
Un’altra cosa che vale la pena notare, `e che l’andamento non rispecchia
quello previsto nella sezione 4.1, in quanto non si evidenzia un aumento pro-
porzionale del numero di cluster all’aumentare delle traiettorie. Questo `e un
risultato inatteso e quindi necessita di una spiegazione ulteriore. Per poter
comprendere i motivi che comportano un numero di cluster cos`ı basso nono-
stante vi siano moltissime traiettorie tra una data coppia origine destinazio-
ne, `e necessario ricordare sotto quali ipotesi si sta lavorando. Nello specifico,
bisogna tenere a mente che l’intervallo di tempo considerato comprende 56
giornate, quindi, avere pi`u di mille traiettorie originarie implica che, in me-
dia, vi siano 18 voli al giorno. Una simile frequenza sarebbe impensabile per
tratte molto lunghe, in quanto i tempi di andata e ritorno comporterebbero la
necessit`a di utilizzare moltissimi velivoli. Questa osservazione `e comprovata
anche dalla figura 4.8 (sezione 4.4.2).
Per concludere la spiegazione viene proposto un esempio (figura 4.6).
orig dest distance n cluster n trajectories
LTBJ LTBA 330.821 4 1640
Figura 4.6: Esempio relativo alla tratta Smirne - Istanbul che presenta molte traiettorie
ma un basso numero di cluster.
4.4.2 Relazione tra numero di cluster e distanza
Per procedere all’analisi della relazione che intercorre tra numero di cluster
e distanza si `e deciso di tracciare il grafico di figura 4.7.
22
Figura 4.7: Relazione tra numero di cluster e distanza
Anche in questo caso l’andamento non rispecchia le previsioni fatte nella
sezione 4.1: il numero di cluster, infatti, si distribuisce uniformemente nel
grafico in modo indipendente dalla distanza. Per capire quali possono essere
le cause di questo risultato, `e stato deciso di tracciare il grafico che mette in
relazione distanza e numero di traiettorie (figura 4.8).
Figura 4.8: Relazione tra numero di traiettorie e distanza
23
Da questo grafico si evidenzia che, dopo un iniziale incremento, il numero
di traiettorie diminuisce all’aumentare della distanza. Questo andamento
riesce a motivare l’andamento del tutto inatteso del numero di cluster in
relazione alla distanza.
A brevi distanze ci si aspettava un basso numero di cluster, ma in realt`a
il risultato `e in linea con la media perch´e, come si vede nel grafico 4.8, in
moltissimi casi, a brevi distanze corrispondono molte traiettorie, il che pu`o
essere un fattore determinante per l’incremento del numero di cluster. Vice-
versa, a grandi distanze ci si aspetta un alto numero di cluster, ma anche in
questo caso il risultato non rispecchia le ipotesi. Come si vede nel grafico 4.8,
infatti, a distanze pi`u elevate corrispondono generalmente meno traiettorie,
e quindi si ottiene una limitazione superiore pi`u fine per il numero di cluster
ottenibili.
Presumibilmente, se l’insieme dei dati avesse avuto lo stesso numero
di traiettorie per ogni coppia origine destinazione, il risultato si sarebbe
avvicinato di pi`u alle ipotesi fatte nella sezione 4.1.
24
Capitolo 5
Ulteriori elaborazioni dei dati
In seguito ai risultati ottenuti con il clustering, esposti nel capitolo 4, si `e
deciso di condurre un’ulteriore analisi sulle traiettorie aeree, descritta nel
presente capitolo.
5.1 Riflessioni sui risultati del clustering
In molti casi, i risultati del clustering hanno evidenziato un numero di cluster
pi`u alto di quanto atteso.
Figura 5.1: Traiettorie tra Manchester e Ginevra divise arbitrariamente in due cluster.
25
In figura 5.1 `e presente un esempio di quanto appena detto: in una prima
analisi si potrebbe affermare che questa tratta presenter`a due cluster, evi-
denziati in figura con colori diversi, ma in realt`a effettuando la procedura di
clustering, descritta nel capitolo 4, si ottengono nove cluster.
Ci`o potrebbe essere dovuto al fatto che, nei pressi degli aeroporti di origine
e destinazione, gli aerei sono costretti a muoversi al di sopra degli stessi
in attesa dell’autorizzazione per compiere le manovre desiderate. Inoltre,
per aumentare l’efficienza e la flessibilit`a delle operazioni aeroportuali, sono
state introdotte delle operazioni predefinite per la partenza e per l’arrivo
degli aerei, che vengono assegnate a ciascun velivolo in base a fattori quali il
traffico, le piste in uso, le condizioni meteorologiche [1].
Alla luce di queste osservazioni, si `e deciso di procedere allo studio delle
traiettorie, con il conseguente clustering, escludendo la zona circostante gli
aeroporti di origine e destinazione. Lo studio si `e articolato in due parti: una
prima, in cui ci si `e limitati a tagliare un raggio di 20 chilometri dall’aeroporto
di partenza, e una seconda parte, in cui il raggio di taglio di 20 chilometri ha
interessato sia l’aeroporto di partenza che quello di arrivo.
5.2 Clustering su traiettorie tagliate
5.2.1 Modifica della tabella “TRAJ”
Prima di poter eseguire lo studio `e stato necessario modificare la tabella
“TRAJ”, aggiungendo due colonne:
ˆ c cut orig: indica il numero di cluster trovati tra l’origine e la destina-
zione tagliando la traiettoria solo all’origine.
ˆ c cut: indica il numero di cluster trovati tra l’origine e la destinazione
tagliando la traiettoria sia all’origine che alla destinazione.
5.2.2 Script dell’esecuzione
Per eseguire lo studio dei dati, `e stato implementato il seguente script, di cui
si riporta solo una versione schematica.
1. Viene ricavato e salvato in un DataFrame in locale l’elenco dei codici
ICAO di origine e destinazione dei voli per i quali `e stato trovato un
numero di cluster maggiore di 1 1
.
1
Non avrebbe senso considerare le traiettorie aventi un numero di cluster pari a 1, in
quanto lo scopo di questa elaborazione `e vedere se nei casi con un alto numero di cluster
trovati `e possibile ridurli.
26
2. Iterando sulle righe del DataFrame, per ogni coppia origine destinazione
viene creato un DataFrame contenente tutti i voli tra esse.
3. All’interno di questo DataFrame vengono aggiunte due colonne, per
ospitare le traiettorie tagliate.
4. Per ogni volo, viene ricavato l’insieme di punti ordinati che compone la
traiettoria. Esso viene prelevato a partire dalla tabella “TRAJ”, uti-
lizzando un metodo preesistente [17], che data una spezzata restituisce
l’insieme dei suoi punti di snodo.
5. Vengono scelti solo i punti di interesse per comporre la traiettoria
tagliata. Come anticipato, lo studio `e stato composto da due parti:
(a) la traiettoria `e stata tagliata solo all’origine
(b) la traiettoria `e stata tagliata sia all’origine che alla destinazione
Nella sezione 5.3 vengono approfonditi i criteri per la scelta dei punti
da considerare.
6. Una volta ottenuta la lista di punti utili, viene creata una spezzata, che
costituisce la traiettoria vera e propria.
7. Il risultato dell’elaborazione viene salvato nell’apposita colonna del
DataFrame.
8. Una volta eseguito il taglio di tutte le traiettorie tra una singola coppia
origine destinazione, viene eseguito il clustering, come descritto nella
sezione 4.3.2.
9. I risultati ottenuti vengono inseriti, per ogni riga, nella tabella “TRAJ”
nelle apposite colonne.
5.3 Studio su come tagliare le traiettorie
5.3.1 Analisi della partenza
Nel decidere il punto da cui iniziare a considerare la traiettoria alla partenza,
sono emersi due possibili metodi:
1. la traiettoria inizia nel momento in cui l’aereo esce dal raggio di 20
chilometri dall’aeroporto per la prima volta. In questo caso, se l’ae-
reo rientra all’interno del suddetto raggio questo spostamento viene
comunque conteggiato.
27
2. la traiettoria inizia nel momento in cui l’aereo esce definitivamente
dal raggio di 20 chilometri dall’aeroporto. In questo caso, se, dopo
una prima uscita dal raggio d’interesse, l’aereo dovesse rientrarvi, gli
spostamenti compiuti in precedenza verrebbero cancellati, resettando
la traiettoria, per farla poi ricominciare nel momento in cui l’aereo
uscir`a nuovamente dalla circonferenza.
Apparentemente i due metodi, purch´e diversi, sembrano entrambi validi. Tut-
tavia, dopo alcune prove condotte su dei voli scelti a random, si `e notato che
il secondo metodo induceva pi`u spesso degli aumenti nel numero di cluster
totali ottenuti. Dopo un’attenta analisi, `e emerso che il problema non `e in-
trinseco al secondo metodo di taglio, che sulla carta risulta il migliore, ma
dipende dal fatto che le traiettorie sono descritte tramite punti. Nell’eseguire
il taglio, infatti, si decide qual `e l’insieme dei punti della traiettoria da tenere
e qual `e quello da scartare.
Figura 5.2: Esempio di traiettorie uguali descritte da insiemi di punti diversi, che dopo
il taglio risultano distinte
28
Il problema riscontrato deriva dal fatto che le traiettorie sono mappate
da un insieme di punti non ugualmente distribuiti nello spazio, anche per
traiettorie estremamente simili. Come si vede nella figura 5.2, la non uguale
distribuzione di punti, combinata al secondo metodo di taglio, risulta in due
traiettorie ben diverse.
In conclusione, si `e quindi deciso di adottare il primo metodo, in cui casi
del genere vengono gestiti meglio.
5.3.2 Analisi della destinazione
Anche nel decidere il punto in cui smettere di considerare la traiettoria
all’arrivo, sono emersi due possibili metodi:
1. la traiettoria termina nel momento in cui l’aereo entra per la prima
volta nel raggio di 20 chilometri dall’aeroporto di destinazione.
2. la traiettoria termina nel momento in cui l’aereo entra definitivamente
nel raggio di 20 chilometri dall’aeroporto di destinazione. In questo
caso, se l’aereo esce e poi rientra nel raggio di interesse il percorso
viene comunque conteggiato.
La scelta `e ricaduta sul secondo metodo, in quanto il primo presenta le stesse
criticit`a che hanno portato alla sua esclusione per l’aeroporto di partenza.
5.3.3 Adattamento del primo e dell’ultimo punto al
raggio
Nell’ambito del taglio delle traiettorie `e emerso un ulteriore problema che
ha causato l’aumento del numero di cluster, nonostante l’attesa diminuzione.
L’analisi pi`u approfondita e la soluzione del problema vengono qui proposte
solo per la partenza dell’aereo, ma la situazione `e analoga per il taglio alla
destinazione, che viene per questo solo accennata.
Per la partenza, come si vede nella sezione 5.3.1, si `e deciso di prendere
i punti della traiettoria da quando l’aereo esce per la prima volta dal raggio
di 20 chilometri dall’aeroporto. Tuttavia, la non uniforme distribuzione dei
punti implica che il primo punto considerato possa essere dopo 20 o pi`u chi-
lometri dall’aeroporto. Quindi, in vari casi, traiettorie simili, ma descritte da
punti diversi, sono state classificate come “dissimili”, generando un numero
superiore di cluster.
Per risolvere il problema, si `e deciso di prendere il punto precedente al
primo considerato, ovvero l’ultimo dei punti esclusi, e di procedere per bise-
zione tra questo e il primo punto di quelli considerati. La precisione scelta
29
per la bisezione `e di 100 metri, in pi`u o in meno, rispetto ai 20 chilometri
dall’aeroporto. Il punto ricavato con questo metodo viene aggiunto in testa
all’elenco di punti che rappresentano la traiettoria.
Per quanto riguarda l’arrivo del volo, il problema `e analogo per il taglio,
ed `e stato risolto con la ricerca di un punto con il metodo di bisezione.
La precisione utilizzata `e la stessa della partenza. I punti considerati sono
l’ultimo dell’insieme costituente la traiettoria e il suo successivo, cio`e il primo
punto interno al raggio dalla destinazione. In questo caso il punto trovato `e
stato aggiunto in coda all’elenco.
5.4 Risultati ottenuti
Di seguito, vengono esposti i risultati ottenuti dall’ulteriore analisi dei dati
tramite dei grafici. Il significato dei termini usati nella legenda `e il seguente:
ˆ n cluster: indica il numero di cluster ottenuti mediante il procedimento
descritto nel capitolo 4.
ˆ c cut orig: indica il numero di cluster ottenuti tagliando la traiettoria
solo all’origine.
ˆ c cut: indica il numero di cluster ottenuti tagliando la traiettoria all’o-
rigine e alla destinazione.
c cut=n cluster c cut<n cluster c cut>n cluster
80%
17%
3%
Figura 5.3: Comparazione dei risultati originari con quelli ottenuti tagliando la
traiettoria sia all’origine che alla destinazione
30
c cut orig=n cluster c cut orig<n cluster c cut orig>n cluster
83%
14%
3%
Figura 5.4: Comparazione dei risultati originari con quelli ottenuti tagliando la
traiettoria solo all’origine
c cut=c cut orig c cut<c cut orig c cut>c cut orig
95%
4%
1%
Figura 5.5: Comparazione dei risultati ottenuti tagliando la traiettoria solo all’origine
oppure sia all’origine che alla destinazione
Come si pu`o osservare nei grafici 5.3 e 5.4, per la maggior parte delle
coppie origine destinazione il numero di cluster ottenuti `e rimasto invariato,
nonostante i tagli effettuati sulle traiettorie. Si pu`o tuttavia notare, sia da
questi due grafici che dal grafico 5.5, che tagliare la traiettoria sia all’origine
che alla destinazione ha prodotto risultati migliori rispetto a quelli ottenuti
con il solo taglio all’origine. Questo si riconduce al fatto che `e pi`u probabile
che un aereo debba attendere la conferma per poter atterrare piuttosto che
quella per intraprendere la traiettoria prevista alla partenza dopo il decollo.
Nonostante questo studio sia stato introdotto ai fini di abbassare il nu-
mero di cluster, dal grafico 5.3 si vede che, nel 3% dei casi, il taglio della
31
traiettoria sia all’origine che alla destinazione ha causato l’aumento del nu-
mero di cluster ottenuti. Analogamente, nel grafico 5.4 si osserva che il
taglio della traiettoria solo all’origine `e stato peggiorativo nel 3% dei casi.
Questi peggioramenti sono presumibilmente dovuti ad un metodo di taglio
imperfetto, sia all’origine che alla destinazione.
n cluster 159845
c cut 154851
c cut orig 155496
50000 100000 150000 200000
Figura 5.6: Numero totale di cluster ottenuti, con e senza i tagli
Nel grafico 5.6, vengono esposti i risultati complessivi, ottenuti sommando
il numero totale di cluster prima e dopo i tagli. Come si pu`o vedere, lo
scopo generale `e stato ottenuto, seppur la diminuzione non sia estremamente
significativa. Questo potrebbe essere dovuto a due fattori:
ˆ Il raggio di taglio scelto (20 chilometri) non `e sufficiente per includere
tutte le manovre di attesa nei pressi degli aeroporti.
ˆ I metodi di taglio adottati non sono sufficientemente precisi o sono
inadeguati.
32
Capitolo 6
Conclusioni
Il presente lavoro si `e articolato in tre fasi principali.
Innanzitutto `e stato necessario ottenere le traiettorie compiute dagli aerei
a partire dall’insieme ordinato dei punti che le costituiscono.
Successivamente, si `e potuti procedere con l’esecuzione del clustering,
al fine di raggruppare traiettorie simili, per facilitare un’eventuale analisi
strategica futura. Ad esecuzione terminata, sono stati esaminati i risultati,
per trovare eventuali correlazioni tra numero di cluster ottenuti e numero di
traiettorie originarie e tra numero di cluster ottenuti e distanza tra origine
e destinazione. Alla luce di quanto ottenuto, `e stato possibile concludere la
generale efficacia della procedura di clustering scelta, nonostante in alcuni
casi vi siano stati pi`u cluster rispetto quanto atteso.
Si `e quindi deciso di procedere ulteriormente, andando ad eliminare i
20km circostanti gli aeroporti di partenza e di arrivo, in quanto spesso gli
aeromobili sono soggetti a seguire traiettorie di decollo e di atterraggio pre-
fissate, indipendentemente dalla rotta in questione. In conclusione a que-
sta ulteriore elaborazione dei dati, si `e notata una generale diminuzione del
numero di cluster ottenuti, il che ha confermato le ipotesi fatte in precedenza.
6.1 Commenti personali
Dal punto di vista personale, questo lavoro mi ha permesso di apprendere
nuove conoscenze specifiche e di sviluppare la mia indipendenza nella risolu-
zione di problemi, pi`u o meno complessi. Aver avuto occasione di lavorare
con tecnologie per me nuove, mi ha permesso di capire che spesso quan-
to conosciuto non `e adatto per svolgere un determinato lavoro, ed `e quindi
opportuno ricercare sempre la tecnologia pi`u adatta.
33
Mi reputo soddisfatta di quanto svolto per diversi motivi.
In primo luogo, `e doveroso dire che l’ambito in cui ho lavorato mi ha
interessata molto, ed `e stato quindi stimolante approfondirlo al di l`a di quanto
visto durante il mio percorso universitario. Nello specifico, ho avuto occasione
di incontrare un ramo della ricerca operativa che non conoscevo e che mi ha
colpita positivamente.
Inoltre, ho avuto soddisfazione nell’imparare un nuovo linguaggio di pro-
grammazione, e passare dai primi script basilari all’implementazione degli
script pi`u complessi visti in questo lavoro. Ho trovato estremante gratificante
superare i problemi incontrati, cercando di fare affidamento prevalentemente
sulle mie capacit`a.
Infine, fare ipotesi sui risultati e vederle poi realizzate, o cercare di trarre
conclusioni da quanto ottenuto mi ha fatta sentire indipendente, e ha acuito
le mie capacit`a di giudizio autonomo.
34
Bibliografia
[1] Andrew Cook. European Air Traffic Management: Principles, Practice
and Research. Routledge, 2007.
[2] Paola Bassi. Studio di opendata acquisiti tramite tecnologie MODE S e
ADS-B per l’analisi delle traiettorie aeree in ambito europeo. 2018.
[3] Igor Rossini. Clustering. Slide del corso “Metodologie per Sistemi
Intelligenti”.
[4] Matteo Matteucci. A tutorial on clustering algorithms.
[5] Icao, uniting aviation.
[6] ICAO Doc. 7910 location indicators, 2009.
[7] Skybrary.
[8] EUROCONTROL. NM Glossary. 2014.
[9] Roger Lott. Geographic information-well-known text representation of
coordinate reference systems. 2015.
[10] Wikiwand.
[11] Wes McKinney & PyData Development Team. Pandas: powerful python
data analysis toolkit, 2018.
[12] Kelvin Salton do Prado. How dbscan works and why should we use it?
[13] Martin Ester, Hans-Peter Kriegel, J¨org Sander, Xiaowei Xu, et al.
A density-based algorithm for discovering clusters in large spatial
databases with noise. In Kdd, volume 96, pages 226–231, 1996.
35
[14] Daniel P. Huttenlocher, Gregory A. Klanderman, and William J Ruc-
klidge. Comparing images using the hausdorff distance. IEEE Tran-
sactions on pattern analysis and machine intelligence, 15(9):850–863,
1993.
[15] Sean Gillies. The shapely user manual, 2013.
[16] Scikit learn.
[17] Claudio Rocchini. Breve introduzione a postgis, 2014.
36
Ringraziamenti
Se state leggendo queste frasi significa che ce l’ho fatta, la tesi `e stampata e
il viaggio della triennale `e finito. Se le state leggendo significa che, almeno in
parte, queste parole sono per voi, perch´e oggi, nel momento della mia laurea,
voi ci siete, e siete dalla mia parte.
Grazie a chi c’`e sempre stato, da quando ero un “pidocchio” ad oggi e mi
ha presa per mano e mi ha insegnato la vita.
Grazie a chi ho incontrato lungo la strada e ha deciso di percorrere qualche
tratto del mio viaggio insieme a me.
Grazie a chi mi ha tenuto i posti (perch´e lo sanno tutti che la mattina
non mi piace alzarmi presto).
Grazie a chi ha riso con me e ha condiviso con me le migliori avventure.
Grazie a chi mi ha supportata ogni giorno e ha condiviso con me gioie e
dolori.
Grazie a chi ha saputo consolarmi e tranquillizzarmi nei momenti di
sconforto.
Grazie a chi ha gioito con me per ogni mio successo.
Grazie a chi `e lontano ma `e vicino con il cuore.
E, per concludere, grazie a chi non ho mai ringraziato abbastanza ma lo
merita pi`u di ogni altro.
37

More Related Content

Similar to Applicazione dell'algoritmo di clustering DBSCAN allo studio di traiettorie aeree

Modellazione della dinamica di un liquido bifase mediante GPU CUDA
Modellazione della dinamica di un liquido bifase mediante GPU CUDAModellazione della dinamica di un liquido bifase mediante GPU CUDA
Modellazione della dinamica di un liquido bifase mediante GPU CUDAkylanee
 
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Compressione di insiemi di espressioni regolari tramite programmazione geneti...Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Compressione di insiemi di espressioni regolari tramite programmazione geneti...Simone Cumar
 
Relazione Modellazione e Simulazioni Numeriche: Percolazione
Relazione Modellazione e Simulazioni Numeriche: PercolazioneRelazione Modellazione e Simulazioni Numeriche: Percolazione
Relazione Modellazione e Simulazioni Numeriche: PercolazioneRiccardo Melioli
 
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...Giuseppe Lombardi
 
Simulazione di un sistema fisico ts inginf
Simulazione di un sistema fisico ts inginfSimulazione di un sistema fisico ts inginf
Simulazione di un sistema fisico ts inginfIonutAlexandruPascar
 
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...Idriss Riouak
 
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Pasquale Naclerio
 
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...Davide Ciambelli
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...michael_mozzon
 
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...MarcoCautero1
 
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"GiacomoVassallo
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Maurizio Cacace
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMDavide Ciambelli
 
Monitoraggio di mac address in lan
Monitoraggio di mac address in lanMonitoraggio di mac address in lan
Monitoraggio di mac address in lanCe.Se.N.A. Security
 

Similar to Applicazione dell'algoritmo di clustering DBSCAN allo studio di traiettorie aeree (20)

Modellazione della dinamica di un liquido bifase mediante GPU CUDA
Modellazione della dinamica di un liquido bifase mediante GPU CUDAModellazione della dinamica di un liquido bifase mediante GPU CUDA
Modellazione della dinamica di un liquido bifase mediante GPU CUDA
 
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Compressione di insiemi di espressioni regolari tramite programmazione geneti...Compressione di insiemi di espressioni regolari tramite programmazione geneti...
Compressione di insiemi di espressioni regolari tramite programmazione geneti...
 
Relazione Modellazione e Simulazioni Numeriche: Percolazione
Relazione Modellazione e Simulazioni Numeriche: PercolazioneRelazione Modellazione e Simulazioni Numeriche: Percolazione
Relazione Modellazione e Simulazioni Numeriche: Percolazione
 
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
Progettazione e valutazione sperimentale di un sistema per la definizione ed ...
 
Simulazione di un sistema fisico ts inginf
Simulazione di un sistema fisico ts inginfSimulazione di un sistema fisico ts inginf
Simulazione di un sistema fisico ts inginf
 
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
 
Algoritmo di Dijkstra
Algoritmo di DijkstraAlgoritmo di Dijkstra
Algoritmo di Dijkstra
 
Tesi
TesiTesi
Tesi
 
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
 
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE median...
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
 
LEARNING OBJECT MODELLO DI RIFERIMENTO SCORM E AUTHORING APPLICATIONS
LEARNING OBJECT MODELLO DI RIFERIMENTO SCORM E AUTHORING APPLICATIONSLEARNING OBJECT MODELLO DI RIFERIMENTO SCORM E AUTHORING APPLICATIONS
LEARNING OBJECT MODELLO DI RIFERIMENTO SCORM E AUTHORING APPLICATIONS
 
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
 
domenicoCaputiTriennale
domenicoCaputiTriennaledomenicoCaputiTriennale
domenicoCaputiTriennale
 
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"
Extended Summary of "EvoCraft: A New Challenge for Open-Endedness"
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
 
2013_10_Felici.PDF
2013_10_Felici.PDF2013_10_Felici.PDF
2013_10_Felici.PDF
 
2013_10_Felici.PDF
2013_10_Felici.PDF2013_10_Felici.PDF
2013_10_Felici.PDF
 
Monitoraggio di mac address in lan
Monitoraggio di mac address in lanMonitoraggio di mac address in lan
Monitoraggio di mac address in lan
 

Applicazione dell'algoritmo di clustering DBSCAN allo studio di traiettorie aeree

  • 1. UNIVERSIT`A DEGLI STUDI DI TRIESTE DIPARTIMENTO DI INGEGNERIA E ARCHITETTURA Corso di Laurea Triennale in Ingegneria Elettronica e Informatica Curriculum Applicazioni Informatiche Applicazione dell’algoritmo di clustering DBSCAN allo studio di traiettorie aeree LAUREANDA RELATORE Giorgia Nadizar Chiar.mo Prof. Lorenzo Castelli Universit`a degli Studi di Trieste Anno Accademico 2018/2019
  • 2. No man is an island entire of itself; every man is a piece of the continent, a part of the main — John Donne – No Man is an Island — A chi `e lontano, ma vicino con il cuore
  • 3. Indice 1 Introduzione 3 1.1 Introduzione al problema . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 L’Air Traffic Management . . . . . . . . . . . . . . . . 3 1.1.2 L’obiettivo del lavoro . . . . . . . . . . . . . . . . . . . 4 1.2 Cos’`e il clustering? . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . 5 2 Analisi dei dati in input 7 2.0.1 La tabella route pool static . . . . . . . . . . . . . . . . 7 2.1 I database ddr 1409 nest e ddr 1709 nest . . . . . . . . . . . . 7 2.1.1 La tabella flight . . . . . . . . . . . . . . . . . . . . . . 8 2.1.2 La tabella airport . . . . . . . . . . . . . . . . . . . . . 9 2.1.3 La tabella trajectory . . . . . . . . . . . . . . . . . . . 9 2.1.4 La tabella geopoint . . . . . . . . . . . . . . . . . . . . 10 2.1.5 La tabella trajectory has geopoint . . . . . . . . . . . . 10 3 Prima elaborazione dei dati 11 3.1 Creazione delle tabelle . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Individuazione dei voli d’interesse . . . . . . . . . . . . . . . . 12 3.2.1 Focus sull’Europa continentale . . . . . . . . . . . . . . 12 3.3 Estrazione della traiettoria per un singolo volo . . . . . . . . . 13 3.4 Estrazione delle traiettorie e scrittura in tabella . . . . . . . . 14 4 Clustering dei dati 15 4.1 Osservazioni preliminari . . . . . . . . . . . . . . . . . . . . . 15 4.2 L’algoritmo DBSCAN . . . . . . . . . . . . . . . . . . . . . . 16 4.2.1 Introduzione a DBSCAN su un insieme di punti . . . . 16 4.2.2 Applicazione su un insieme di traiettorie . . . . . . . . 17 4.3 Esecuzione del clustering . . . . . . . . . . . . . . . . . . . . . 18 4.3.1 Modifica della tabella “TRAJ” . . . . . . . . . . . . . 18 4.3.2 Script per il clustering . . . . . . . . . . . . . . . . . . 18 4.4 Risultati ottenuti . . . . . . . . . . . . . . . . . . . . . . . . . 19 1
  • 4. 4.4.1 Relazione tra numero di cluster e numero di traiettorie 21 4.4.2 Relazione tra numero di cluster e distanza . . . . . . . 22 5 Ulteriori elaborazioni dei dati 25 5.1 Riflessioni sui risultati del clustering . . . . . . . . . . . . . . 25 5.2 Clustering su traiettorie tagliate . . . . . . . . . . . . . . . . . 26 5.2.1 Modifica della tabella “TRAJ” . . . . . . . . . . . . . 26 5.2.2 Script dell’esecuzione . . . . . . . . . . . . . . . . . . . 26 5.3 Studio su come tagliare le traiettorie . . . . . . . . . . . . . . 27 5.3.1 Analisi della partenza . . . . . . . . . . . . . . . . . . . 27 5.3.2 Analisi della destinazione . . . . . . . . . . . . . . . . . 29 5.3.3 Adattamento del primo e dell’ultimo punto al raggio . 29 5.4 Risultati ottenuti . . . . . . . . . . . . . . . . . . . . . . . . . 30 6 Conclusioni 33 6.1 Commenti personali . . . . . . . . . . . . . . . . . . . . . . . . 33 Bibliografia 34 Ringraziamenti 36 2
  • 5. Capitolo 1 Introduzione 1.1 Introduzione al problema 1.1.1 L’Air Traffic Management Dalla nascita dell’aviazione, in cui il pilota era l’unico responsabile per la sicurezza del velivolo, la regolamentazione in ambito aeronautico `e notevol- mente cambiata. Il traffico aereo `e aumentato a tal punto da richiedere un controllo esterno, ai fini di garantire libert`a e sicurezza in volo. Nasce, per- tanto, l’ATC - Air Traffic Control, cio`e la scienza di mantenere la sicurezza aerea, tenendo il traffico ben separato, pur garantendo l’efficienza [1]. Un qualsiasi volo `e quindi soggetto a controlli e regolamentazioni, dal momento in cui inizia a muoversi sulla pista dell’aeroporto di partenza, fino al momento dell’atterraggio. Inoltre, per prevedere e gestire eventuali situa- zioni di potenziale pericolo, qualsiasi aereo deve inviare il proprio piano di volo entro tre giorni dalla partenza alla CFMU - Central Flow Management Unit, un’unit`a di controllo che lavora a livello europeo, gestita da EURO- CONTROL1 . Nel piano di volo `e necessario includere la traiettoria che si intende seguire, in modo che la CFMU possa creare una proiezione quadri- mensionale di tutti i voli, controllando che siano sufficientemente distanziati tra loro e non vengano violati ulteriori vincoli2 [1]. La presenza di un piano di volo implica che la scelta della traiettoria da seguire non `e in mano al singolo pilota, ma si colloca in un contesto dove le variabili sono molte. Un ruolo preponderante `e giocato dalle scelte 1 EUROCONTROL `e l’organizzazione europea per la sicurezza dell’aviazione, fondata nel 1960 e attualmente composta da 37 stati membri. [1] 2 I vincoli cui sono soggetti i voli sono molteplici, per approfondire si veda [1]. 3
  • 6. strategiche delle compagnie aeree che, unite ai singoli vincoli, quali condizioni meteorologiche, danno origine alla traiettoria definitiva. 1.1.2 L’obiettivo del lavoro L’obiettivo di questo lavoro `e studiare le traiettorie compiute tra un insieme dato di coppie origine destinazione. Tuttavia, `e impensabile studiare le tra- iettorie singolarmente, dato il loro numero molto elevato: `e quindi necessario raggruppare le traiettorie simili, per poter fare astrazione da singoli eventi che possono aver causato una minima variazione di traiettoria. Osservando la figura 1.1, si pu`o capire meglio l’idea che sta dietro a questo lavoro: le traiettorie tracciate con lo stesso colore vengono considerate come un unico percorso, in quanto sono poco3 diverse tra loro. Figura 1.1: Esempio di raggruppamento di traiettorie [2] Questo lavoro pu`o essere propedeutico per uno studio pi`u approfondito relativo alle strategie messe in atto dalle compagnie aeree nella scelta delle traiettorie da seguire su una tratta. Ai fini di questo lavoro, le traiettorie vengono studiate come oggetti bi- dimensionali appartenenti al piano xy, trascurandone la componente alti- metrica (asse z). Il metodo utilizzato per eseguire i raggruppamenti `e il clustering. 3 Si vedr`a successivamente nel corso del presente elaborato quali sono le condizioni specifiche affinch´e le traiettorie siano considerate poco diverse tra loro. 4
  • 7. 1.2 Cos’`e il clustering? Per clustering si intende il “il processo di raggruppamento di un insieme di oggetti fisici o astratti in classi di oggetti simili” [3]. Pertanto, il problema di base `e trovare una struttura in un insieme, sfruttando una certa misura di “somiglianza” tra i dati [4], come si vede nella figura 1.2. Infatti, un cluster `e una collezione di oggetti che sono tra loro “simili”, e che sono “dissimili” dagli elementi degli altri cluster [3]. Figura 1.2: Esempio di clustering [4] Esistono molti algoritmi per risolvere il problema del clustering, i quali producono risultati anche molto diversi tra loro, il che rende fondamentale la corretta scelta dell’algoritmo da utilizzare. In questo lavoro, l’algoritmo utilizzato `e DBSCAN (Density-based spatial clustering of applications with noise), in quanto presenta il vantaggio di non dover indicare a priori il numero di cluster [2]. 1.3 Tecnologie utilizzate Per lo svolgimento di questo lavoro sono state utilizzate le seguenti tecnologie software: ˆ linguaggio di programmazione Python ˆ DBMS PostgreSQL ˆ DBMS MySQL 5
  • 8. Il computer utilizzato per eseguire il software ha le seguenti caratteristi- che: ˆ Processore - Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2.59GHz ˆ RAM installata - 16,0 GB 6
  • 9. Capitolo 2 Analisi dei dati in input Nel presente capitolo vengono analizzati i dati utilizzati come input. Es- si sono stati estratti da database appartenenti all’universit`a di Westmin- ster, attualmente utilizzati dal gruppo di Ricerca Operativa dell’Universit`a di Trieste, nell’ambito dei progetti europei ADAPT e Domino. 2.0.1 La tabella route pool static Questa tabella appartiene al database domino environment. Le colonne uti- lizzate sono icao orig e icao dest, contenenti rispettivamente i codici ICAO1 relativi agli aeroporti di partenza e di arrivo. Queste due colonne sono neces- sarie per individuare tutte le coppie distinte origine destinazione di interesse. I codici presenti nella tabella, sono codici composti da quattro caratteri, univoci per ogni aeroporto, pubblicati dall’ICAO nel [6]. icao orig icao dest LEBL LIME LIPQ LICC LIPZ EGLL · · · · · · Tabella 2.1: Stralcio della tabella route pool static 2.1 I database ddr 1409 nest e ddr 1709 nest Questi database vengono trattati insieme in quanto presentano al loro interno tabelle aventi la stessa struttura. Il database ddr 1409 nest contiene dati 1 L’ICAO, (International Civil Aviation Organization) `e un’agenzia specializzata delle Nazioni Unite, che si occupa di definire standard nell’ambito dell’aviazione civile [5]. 7
  • 10. relativi all’intervallo di tempo 21 agosto - 17 settembre 2014; il database ddr 1709 nest contiene dati relativi all’intervallo di tempo 17 agosto - 13 settembre 2017. L’intervallo di tempo totale considerato, quindi, comprende 56 giorni. Si pu`o notare, confrontando le date cui fanno riferimento i due database, che il periodo considerato `e lo stesso (seconda met`a di agosto e prima met`a di settembre). Tuttavia, le date differiscono di alcune giornate, in quanto gli intervalli di tempo per cui vengono raccolti i dati in questo database sono segmentati in cicli di 28 giorni2 che iniziano il gioved`ı. La scelta di considerare lo stesso periodo su anni differenti `e stata dettata dalla volont`a di aumentare il numero di traiettorie rispetto a quelle otteni- bili dal singolo ciclo, evitando di ottenere risultati falsati da variazioni di traiettorie dovute alla stagione. All’interno di questi database vengono utilizzate le tabelle flight, airport, trajectory, trajectory has geopoint e geopoint, descritte nelle prossime sezioni. 2.1.1 La tabella flight La tabella contiene informazioni riguardanti dei voli. id ac id airport arrival airport departure eobt 39346 MEA204 111510 114809 2014-08-20 21:00:00 39347 AFL2605 112637 112093 2014-08-20 21:55:00 39348 AFL2193 112637 113513 2014-08-20 21:35:00 · · · · · · · · · · · · · · · Tabella 2.2: Stralcio della tabella flight Le colonne utilizzate in questa tabella sono: ˆ id: `e la chiave primaria della tabella che identifica univocamente un’i- stanza, ovvero un volo. ˆ ac id: indica il callsign dell’aereo, ovvero un codice alfanumerico che identifica l’aereo [7]. ˆ airport arrival: indica l’aeroporto di arrivo del volo. In questa tabella non viene utilizzato il codice ICAO ma viene utilizzata una stringa numerica, chiave esterna rispetto alla tabella airport. ˆ airport departure: indica l’aeroporto di partenza del volo. Il formato `e lo stesso dell’aeroporto di arrivo. 2 AIRAC (Aeronautical Information Regulation And Control) cycle [1]. 8
  • 11. ˆ eobt: indica l’estimated off-block time, cio`e l’orario stimato per inizio delle operazioni di partenza del volo [1]. 2.1.2 La tabella airport La tabella contiene informazioni riguardanti degli aeroporti. id icao id 112384 AFIL 116355 AGGA 116886 AGGE · · · · · · Tabella 2.3: Stralcio della tabella airport Le colonne utilizzate in questa tabella sono: ˆ id: `e la chiave primaria della tabella, in formato numerico. ˆ icao id: indica il codice ICAO dell’aeroporto in questione. 2.1.3 La tabella trajectory La tabella contiene informazioni riguardanti delle traiettorie. id flight id type 1 39346 ftfm 2 39347 ftfm 3 39348 ftfm · · · · · · · · · Tabella 2.4: Stralcio della tabella trajectory Le colonne utilizzate in questa tabella sono: ˆ id: `e la chiave primaria della tabella che identifica univocamente la traiettoria. ˆ flight id: indica l’id del volo che ha percorso la traiettoria data. ˆ type: `e il tipo di traiettoria. Per lo studio sono richieste solo le traietto- rie aventi tipo “FTFM ”, (Filed Tactical Flight Model) corrispondenti, cio`e, all’ultimo piano di volo compilato [8]. 9
  • 12. 2.1.4 La tabella geopoint La tabella contiene informazioni riguardanti dei punti nello spazio. id coords 1 POINT(50.86 -3.2347222222000003) 2 POINT(45.435833333299996 10.2702777778) 3 POINT(42.1055555556 1.8533333333000002) · · · · · · Tabella 2.5: Stralcio della tabella geopoint Le colonne utilizzate in questa tabella sono: ˆ id: `e la chiave primaria della tabella che identifica univocamente il punto. ˆ coords: indica le coordinate, latitudine e longitudine del punto in for- mato wkt 3 . 2.1.5 La tabella trajectory has geopoint La tabella lega le tabelle geopoint e trajectory. Infatti, ogni traiettoria della prima tabella `e descritta tramite dei punti, presenti nella tabella geopoint. Le colonne utilizzate in questa tabella sono: trajectory id geopoint id order 1 6123 1 1 40959 2 1 40960 3 · · · · · · · · · Tabella 2.6: Stralcio della tabella trajectory has geopoint ˆ trajectory id: indica la traiettoria di appartenenza. ˆ geopoint id: indica il punto. ˆ order: indica l’ordine con cui il punto (geopoint id) compare nella traiettoria (trajectory id). 3 Well-known Text (WKT) `e un linguaggio che offre una rappresentazione compatta e leggibile di oggetti geometrici. [9] 10
  • 13. Capitolo 3 Prima elaborazione dei dati L’obiettivo della prima elaborazione dei dati in input, `e quello di renderli utilizzabili per il clustering. Per fare ci`o, viene creata la tabella “TRAJ” in un database ospitato su un server dell’Universit`a di Trieste. Questa ta- bella conterr`a callsign, aeroporti di origine e destinazione indicati con il co- dice ICAO, eobt e traiettoria in formato wkt; per tutti i voli1 delle tabelle flight dei database ddr 1409 nest e ddr 1709 nest aventi origine e destinazio- ne appartenenti all’elenco estratto dalla tabella route pool static del database domino environment. 3.1 Creazione delle tabelle Per semplificare il lavoro, si `e scelto di lavorare separatamente sui due databa- se ddr 1409 nest e ddr 1709 nest. `E stato quindi necessario creare due tabelle intermedie, “TRAJ 14” e “TRAJ 17”, da unire poi nella tabella “TRAJ”. id callsign orig dest eobt trajectory · · · · · · · · · · · · · · · · · · Tabella 3.1: Tabella “TRAJ” appena creata Le colonne di ciascuna tabella sono: ˆ callsign: callsign del volo. ˆ orig: aeroporto di partenza con il codice ICAO. 1 Ad ogni volo `e univocamente associata una traiettoria. Da qui in avanti, i due termini, volo e traiettoria, verranno usati come sinonimi per indicare il percorso compiuto dall’aereo dall’origine alla destinazione. 11
  • 14. ˆ dest: aeroporto di destinazione con il codice ICAO. ˆ eobt: l’orario stimato per l’inizio delle operazioni di partenza del volo. ˆ trajectory: la traiettoria, descritta come una spezzata, in formato wkt. Inoltre, nella tabella definitiva, “TRAJ”, `e stata aggiunta una colonna id per avere una chiave primaria artificiale, utile per lo svolgimento del clustering. 3.2 Individuazione dei voli d’interesse Per trovare i voli aventi origine e destinazione nella tabella route pool static, `e necessario intersecare quest’ultima con la tabella flight. Risulta per`o evidente come questo sia impossibile senza ulteriori azioni, in quanto i formati degli aeroporti nelle due tabelle non coincidono. `E quindi necessario fare un join tra le tabelle flight ed airport in modo da ottenere gli aeroporti con i codici ICAO. Una volta fatto ci`o si pu`o fare l’intersezione tra le tabelle menzionate sopra, ottenendo l’elenco dei voli d’interesse. 3.2.1 Focus sull’Europa continentale All’interno di questo insieme di voli al momento si trovano anche rotte tran- soceaniche, aventi uno degli estremi in Europa. Tuttavia, la scelta delle traiettorie per questi tipi di voli `e notevolmente influenzata dalle condizioni atmosferiche, il che li rende inadatti per questo studio. Figura 3.1: Mappa dei codici ICAO [10] 12
  • 15. Si decide pertanto di mantenere all’interno dell’insieme di voli d’interesse solo quelli che hanno entrambi gli estremi in Europa. Per individuare questo insieme, si mantengono solo i voli che hanno i codici ICAO di origine e destinazione che iniziano con AZ, B, E, L, GC, UK, UL, UM, UR o UU (figura 3.1). 3.3 Estrazione della traiettoria per un singolo volo Per estrarre la traiettoria di un volo `e necessario utilizzare le tabelle flight, trajectory, trajectory has geopoint e geopoint, facendo un join (figura 3.2). flight id ac id airport arrival airport departure eobt trajectory id flight id type trajectory has geopoint trajectory id geopoint id order geopoint id coords 1:1 1:n 1:1 Figura 3.2: Schema di come sono legate le tabelle Con questo metodo, per ogni volo si ottiene un elenco di punti ordinati (secondo il campo order della tabella trajectory has geopoint). Per trasfor- mare questo insieme di punti in una spezzata, `e stato implementato uno script che concatena i punti, fornendo come output una linea in formato wkt (figura 3.3). 13
  • 16. Figura 3.3: Traiettoria di un volo da Roma-Fiumicino a Milano-Malpensa, descritta prima tramite punti e poi tramite una linea spezzata 3.4 Estrazione delle traiettorie e scrittura in tabella L’ultimo step dell’elaborazione dei dati consiste nell’unione dei due passi precedenti: per ogni volo d’interesse bisogna estrarre la traiettoria ed in- serirla, insieme alle altre informazioni richieste, nella tabella “TRAJ 14” o “TRAJ 17”, a seconda del database di provenienza. `E stato quindi implementato il seguente script, di cui si riporta solo una versione schematica. 1. Viene ricavata la tabella dei voli d’interesse e viene salvata in un Data- Frame2 in locale. Per ogni volo, questo DataFrame contiene: id, codici ICAO di origine e destinazione, callsign ed eobt. 2. Iterando sulle righe del DataFrame, partendo dall’id del volo si ricava l’elenco dei punti, da cui si ottiene la traiettoria in formato wkt con lo script menzionato nella sezione precedente. 3. Una volta ottenuta la traiettoria, si caricano nella tabella di destina- zione codici ICAO di origine e destinazione, callsign, eobt e traiettoria del volo in questione. Riempite le due tabelle “TRAJ 14” e “TRAJ 17”, esse vengono unite nella tabella “TRAJ”. 2 Un DataFrame `e una struttura dati tabulare, bidimensionale, a dimensioni variabili, potenzialmente eterogenea, con assi corrispondenti a righe e colonne [11]. 14
  • 17. Capitolo 4 Clustering dei dati Nel presente capitolo viene esposto il lavoro di clustering dei dati. 4.1 Osservazioni preliminari Per prima cosa `e necessario osservare i dati su cui viene eseguito il clustering, in modo da poter formulare ipotesi sul risultato atteso. Nello specifico, `e opportuno ricavare il numero di traiettorie tra ciascu- na origine e destinazione, in quanto si pu`o supporre che questo valore sar`a influente sul risultato. Ovvero, ci si aspetta che al crescere del numero di traiettorie cresca anche il numero di cluster ottenuti. Come si vede nel gra- fico in figura 4.1, la maggior parte delle coppie origine destinazione presenta un basso numero di voli tra di esse. 0-10 voli 11-25 voli 26-50 voli 51-100 voli 101-250 voli >250 voli 38% 19% 15% 12% 11% 5% Figura 4.1: Grafico relativo al numero di voli tra ogni coppia origine destinazione. 15
  • 18. Inoltre, bisogna ragionare sulla distanza tra origine e destinazione. Risul- ta infatti evidente che, al crescere della distanza, cresce anche la probabilit`a che la traiettoria vari, e quindi cresce anche il numero di cluster attesi (figura 4.2). Figura 4.2: Esempi di origini e destinazioni vicine e lontane con alcune traiettorie tra di esse. Nel primo esempio, si vede la tratta Monaco - Trieste, aeroporti distanti 309 km in linea d’aria. Nel secondo caso, la tratta in questione `e quella Atene - Parigi (Charles de Gaulle), con una distanza di 2109 km in linea d’aria. 4.2 L’algoritmo DBSCAN Per lo svolgimento del clustering `e stato impiegato l’algoritmo DBSCAN (Density-based spatial clustering of applications with noise). Questo algorit- mo viene generalmente applicato a insiemi di punti, ma pu`o essere genera- lizzato anche ad altre entit`a, come nel caso delle traiettorie. 4.2.1 Introduzione a DBSCAN su un insieme di punti L’obiettivo di DBSCAN `e quello di suddividere un insieme di n punti in un insieme di k cluster, con k non noto a priori, come si vede nella figura 4.3. Figura 4.3: Esempio di applicazione di DBSCAN [12] 16
  • 19. L’algoritmo richiede due parametri in ingresso: ˆ ε - se due punti hanno una distanza minore di questo parametro allora essi appartengono allo stesso cluster. ˆ MinPts - indica il numero minimo di punti per ogni cluster. Se un cluster non contiene almeno MinPts elementi allora l’insieme di punti viene catalogato come rumore. L’idea su cui si basa DBSCAN `e la seguente: “si richiede che per ogni punto p in un cluster C esista un punto q appartenente a C tale che p giaccia in un intorno di raggio ε di q e che esista un intorno di raggio ε di q contenente almeno MinPts punti” [13]. Per facilitare la comprensione del funzionamento dell’algoritmo, vengono introdotte alcune definizioni [13]. Definizione 4.2.1 Si definiscono core points i punti interni al cluster. Definizione 4.2.2 Si definiscono border points i punti di confine del clu- ster. Definizione 4.2.3 Un punto p `e directly density-reachable da un punto q, dati ε e MinPts se: 1. p appartiene a un intorno di raggio ε di q 2. l’intorno di raggio ε di q contiene almeno MinPts punti Definizione 4.2.4 Un punto p `e density-reachable da un punto q, dati ε e MinPts se esiste una successione di punti p1, · · · , pn con p1 = q e pn = p tale che pi+1 `e directly density-reachable da pi. Il funzionamento dell’algoritmo pu`o essere descritto come segue. “Per trovare un cluster, DBSCAN inizia da un punto casuale p e, dati ε e MinPts, trova tutti i punti density-reachable da p. Se p `e un core point, questa procedura produce un cluster. Se p `e un border point, non ci sono punti density-reachable da p e DBSCAN passa ad un altro punto” [13]. 4.2.2 Applicazione su un insieme di traiettorie Per poter applicare l’algoritmo a diversi casi di studio, ne esiste una versione pi`u generale, che funziona a partire da una matrice delle distanze. Nel caso delle traiettorie, viene utilizzata la distanza di Hausdorff per costruirla. 17
  • 20. Distanza di Hausdorff Definizione 4.2.5 Dati due insiemi finiti di punti, A = {a1, · · · , ap} e B = {b1, · · · , bq}, la distanza di Hausdorff `e definita come H(A, B) = max(h(A, B), h(B, A)) dove h(A, B) = max a∈A min b∈B ||a − b|| e ||.|| `e una norma sugli insiemi A e B, ad esempio la norma Euclidea [14]. “La funzione h(A, B) `e detta distanza di Hausdorff diretta da A a B. Essa identifica il punto a ∈ A pi`u lontano da ogni punto di B, e misura la distanza tra a e il punto di B ad esso pi`u vicino” [14] Si evince, quindi, che la distanza di Hausdorff `e una misura di somiglianza tra insiemi. Nel caso di questo lavoro, gli insiemi di punti sono le traiettorie. 4.3 Esecuzione del clustering 4.3.1 Modifica della tabella “TRAJ” Prima di poter eseguire il clustering `e stato necessario modificare la tabella “TRAJ”, aggiungendo due colonne: ˆ n cluster: indica il numero di cluster trovati tra l’origine e la destina- zione del volo in questione. ˆ cluster id: `e un identificatore del cluster di appartenenza di ogni volo. Esso `e utile per poter vedere quali sono i cluster ottenuti e quante/quali traiettorie comprendono. 4.3.2 Script per il clustering Per eseguire il clustering dei dati con DBSCAN, `e stato implementato il seguente script, di cui si riporta solo una versione schematica. 1. Viene ricavato e salvato in un DataFrame in locale l’elenco dei codici ICAO di origine e destinazione dei voli. 2. Iterando sulle righe del DataFrame, per ogni coppia origine destinazione viene creato un DataFrame contenente tutti i voli tra esse. 18
  • 21. [ 239612 239613 239614 239615 239616 239617 239618 ] [ 0 1 1 0 0 2 1 ] Tabella 4.1: Esempio di vettore delle etichette per i voli da Rotterdam a Stavanger 3. Viene quindi eseguito il clustering sull’insieme di traiettorie dei voli considerati. Ci`o si articola in due fasi: (a) Per prima cosa, viene calcolata la matrice delle distanze, usando la distanza di Hausdorff. Per il calcolo di quest’ultima esiste una libreria con uno script apposito [15]. (b) In secondo luogo, viene applicato l’algoritmo DBSCAN a partire dalla matrice delle distanze. Anche in questo caso esiste una li- breria con uno script che implementa l’algoritmo [16]. I valori di ε e MinPts usati sono stati scelti nel modo seguente: MinPts `e stato settato a 1, in modo da creare singoli cluster con le traietto- rie che in un caso generale potrebbero essere considerate rumore; per ε `e stato scelto il valore 0.3 che corrisponde a una distanza tra traiettorie di circa 30 km [2]. 4. Come risultato dell’algoritmo, viene fornito un vettore di etichette (ta- bella 4.1), dove a ogni volo corrisponde un numero da 0 a n-1, con n numero di cluster trovati. A ogni cluster viene fatto corrispondere un numero, cos`ı che scorrendo il vettore delle etichette e mettendolo in corrispondenza con l’elenco dei voli, si possa capire quali voli rientrano all’interno della stessa classificazione. Da questo vettore `e anche molto facile ricavare il numero di cluster, corrispondente al totale di numeri diversi che compaiono al suo interno. 5. Una volta ottenuto il risultato, la tabella “TRAJ” viene aggiornata inserendo, per ogni riga, il numero di cluster e l’identificatore del cluster di appartenenza. 4.4 Risultati ottenuti A elaborazione ultimata, si `e deciso di iniziare l’analisi dei risultati con gli istogrammi di figura 4.4. A prima vista, si pu`o vedere che la maggior parte delle coppie origine destinazione presenta un numero molto basso di cluster. Nello specifico, l’83.07% delle coppie origine destinazione esaminate ha un 19
  • 22. numero di cluster inferiore o pari a 10. Questo `e un risultato importante, che rende evidente la necessit`a del clustering: si `e passati dal grafico di figura 4.1, dove il numero di coppie aventi al massimo 10 traiettorie era il 38% del totale, ad una situazione in cui pi`u dell’80% delle coppie `e studiabile mediante 10 distinte traiettorie. Figura 4.4: Istogrammi di frequenza del numero di cluster ottenuti sulle coppie origine destinazione. 20
  • 23. In seguito a questa analisi generale, si `e deciso di analizzare pi`u nel detta- glio le relazioni che legano il numero di cluster ottenuti al numero di traietto- rie e alla distanza tra origine e destinazione, viste le osservazioni preliminari della sezione 4.1. 4.4.1 Relazione tra numero di cluster e numero di tra- iettorie Per avere un’idea di massima sulla relazione che lega numero di cluster e numero di traiettorie si `e deciso di tracciare il grafico di figura 4.5. Nel grafico viene rappresentata anche la retta y = x, poich´e il numero di cluster non pu`o superare il numero di traiettorie distinte, ed `e utile vedere graficamente questa limitazione superiore. Basandosi su questa retta, si pu`o vedere che inizialmente il grafico a dispersione riempie la parte inferiore ad essa fino a raggiungerla, ma questo fenomeno ha una durata molto breve lungo l’asse x. Per la maggior parte dell’asse x, infatti, il numero di cluster ottenuti `e notevolmente inferiore al numero di traiettorie tra l’origine e la destinazione considerate. Questo risultato `e significativo in quanto indica che il clustering ha lavorato correttamente, riducendo il numero di traiettorie diverse grazie al raggruppamento di quelle affini. Figura 4.5: Relazione tra numero di cluster e numero di traiettorie 21
  • 24. Un’altra cosa che vale la pena notare, `e che l’andamento non rispecchia quello previsto nella sezione 4.1, in quanto non si evidenzia un aumento pro- porzionale del numero di cluster all’aumentare delle traiettorie. Questo `e un risultato inatteso e quindi necessita di una spiegazione ulteriore. Per poter comprendere i motivi che comportano un numero di cluster cos`ı basso nono- stante vi siano moltissime traiettorie tra una data coppia origine destinazio- ne, `e necessario ricordare sotto quali ipotesi si sta lavorando. Nello specifico, bisogna tenere a mente che l’intervallo di tempo considerato comprende 56 giornate, quindi, avere pi`u di mille traiettorie originarie implica che, in me- dia, vi siano 18 voli al giorno. Una simile frequenza sarebbe impensabile per tratte molto lunghe, in quanto i tempi di andata e ritorno comporterebbero la necessit`a di utilizzare moltissimi velivoli. Questa osservazione `e comprovata anche dalla figura 4.8 (sezione 4.4.2). Per concludere la spiegazione viene proposto un esempio (figura 4.6). orig dest distance n cluster n trajectories LTBJ LTBA 330.821 4 1640 Figura 4.6: Esempio relativo alla tratta Smirne - Istanbul che presenta molte traiettorie ma un basso numero di cluster. 4.4.2 Relazione tra numero di cluster e distanza Per procedere all’analisi della relazione che intercorre tra numero di cluster e distanza si `e deciso di tracciare il grafico di figura 4.7. 22
  • 25. Figura 4.7: Relazione tra numero di cluster e distanza Anche in questo caso l’andamento non rispecchia le previsioni fatte nella sezione 4.1: il numero di cluster, infatti, si distribuisce uniformemente nel grafico in modo indipendente dalla distanza. Per capire quali possono essere le cause di questo risultato, `e stato deciso di tracciare il grafico che mette in relazione distanza e numero di traiettorie (figura 4.8). Figura 4.8: Relazione tra numero di traiettorie e distanza 23
  • 26. Da questo grafico si evidenzia che, dopo un iniziale incremento, il numero di traiettorie diminuisce all’aumentare della distanza. Questo andamento riesce a motivare l’andamento del tutto inatteso del numero di cluster in relazione alla distanza. A brevi distanze ci si aspettava un basso numero di cluster, ma in realt`a il risultato `e in linea con la media perch´e, come si vede nel grafico 4.8, in moltissimi casi, a brevi distanze corrispondono molte traiettorie, il che pu`o essere un fattore determinante per l’incremento del numero di cluster. Vice- versa, a grandi distanze ci si aspetta un alto numero di cluster, ma anche in questo caso il risultato non rispecchia le ipotesi. Come si vede nel grafico 4.8, infatti, a distanze pi`u elevate corrispondono generalmente meno traiettorie, e quindi si ottiene una limitazione superiore pi`u fine per il numero di cluster ottenibili. Presumibilmente, se l’insieme dei dati avesse avuto lo stesso numero di traiettorie per ogni coppia origine destinazione, il risultato si sarebbe avvicinato di pi`u alle ipotesi fatte nella sezione 4.1. 24
  • 27. Capitolo 5 Ulteriori elaborazioni dei dati In seguito ai risultati ottenuti con il clustering, esposti nel capitolo 4, si `e deciso di condurre un’ulteriore analisi sulle traiettorie aeree, descritta nel presente capitolo. 5.1 Riflessioni sui risultati del clustering In molti casi, i risultati del clustering hanno evidenziato un numero di cluster pi`u alto di quanto atteso. Figura 5.1: Traiettorie tra Manchester e Ginevra divise arbitrariamente in due cluster. 25
  • 28. In figura 5.1 `e presente un esempio di quanto appena detto: in una prima analisi si potrebbe affermare che questa tratta presenter`a due cluster, evi- denziati in figura con colori diversi, ma in realt`a effettuando la procedura di clustering, descritta nel capitolo 4, si ottengono nove cluster. Ci`o potrebbe essere dovuto al fatto che, nei pressi degli aeroporti di origine e destinazione, gli aerei sono costretti a muoversi al di sopra degli stessi in attesa dell’autorizzazione per compiere le manovre desiderate. Inoltre, per aumentare l’efficienza e la flessibilit`a delle operazioni aeroportuali, sono state introdotte delle operazioni predefinite per la partenza e per l’arrivo degli aerei, che vengono assegnate a ciascun velivolo in base a fattori quali il traffico, le piste in uso, le condizioni meteorologiche [1]. Alla luce di queste osservazioni, si `e deciso di procedere allo studio delle traiettorie, con il conseguente clustering, escludendo la zona circostante gli aeroporti di origine e destinazione. Lo studio si `e articolato in due parti: una prima, in cui ci si `e limitati a tagliare un raggio di 20 chilometri dall’aeroporto di partenza, e una seconda parte, in cui il raggio di taglio di 20 chilometri ha interessato sia l’aeroporto di partenza che quello di arrivo. 5.2 Clustering su traiettorie tagliate 5.2.1 Modifica della tabella “TRAJ” Prima di poter eseguire lo studio `e stato necessario modificare la tabella “TRAJ”, aggiungendo due colonne: ˆ c cut orig: indica il numero di cluster trovati tra l’origine e la destina- zione tagliando la traiettoria solo all’origine. ˆ c cut: indica il numero di cluster trovati tra l’origine e la destinazione tagliando la traiettoria sia all’origine che alla destinazione. 5.2.2 Script dell’esecuzione Per eseguire lo studio dei dati, `e stato implementato il seguente script, di cui si riporta solo una versione schematica. 1. Viene ricavato e salvato in un DataFrame in locale l’elenco dei codici ICAO di origine e destinazione dei voli per i quali `e stato trovato un numero di cluster maggiore di 1 1 . 1 Non avrebbe senso considerare le traiettorie aventi un numero di cluster pari a 1, in quanto lo scopo di questa elaborazione `e vedere se nei casi con un alto numero di cluster trovati `e possibile ridurli. 26
  • 29. 2. Iterando sulle righe del DataFrame, per ogni coppia origine destinazione viene creato un DataFrame contenente tutti i voli tra esse. 3. All’interno di questo DataFrame vengono aggiunte due colonne, per ospitare le traiettorie tagliate. 4. Per ogni volo, viene ricavato l’insieme di punti ordinati che compone la traiettoria. Esso viene prelevato a partire dalla tabella “TRAJ”, uti- lizzando un metodo preesistente [17], che data una spezzata restituisce l’insieme dei suoi punti di snodo. 5. Vengono scelti solo i punti di interesse per comporre la traiettoria tagliata. Come anticipato, lo studio `e stato composto da due parti: (a) la traiettoria `e stata tagliata solo all’origine (b) la traiettoria `e stata tagliata sia all’origine che alla destinazione Nella sezione 5.3 vengono approfonditi i criteri per la scelta dei punti da considerare. 6. Una volta ottenuta la lista di punti utili, viene creata una spezzata, che costituisce la traiettoria vera e propria. 7. Il risultato dell’elaborazione viene salvato nell’apposita colonna del DataFrame. 8. Una volta eseguito il taglio di tutte le traiettorie tra una singola coppia origine destinazione, viene eseguito il clustering, come descritto nella sezione 4.3.2. 9. I risultati ottenuti vengono inseriti, per ogni riga, nella tabella “TRAJ” nelle apposite colonne. 5.3 Studio su come tagliare le traiettorie 5.3.1 Analisi della partenza Nel decidere il punto da cui iniziare a considerare la traiettoria alla partenza, sono emersi due possibili metodi: 1. la traiettoria inizia nel momento in cui l’aereo esce dal raggio di 20 chilometri dall’aeroporto per la prima volta. In questo caso, se l’ae- reo rientra all’interno del suddetto raggio questo spostamento viene comunque conteggiato. 27
  • 30. 2. la traiettoria inizia nel momento in cui l’aereo esce definitivamente dal raggio di 20 chilometri dall’aeroporto. In questo caso, se, dopo una prima uscita dal raggio d’interesse, l’aereo dovesse rientrarvi, gli spostamenti compiuti in precedenza verrebbero cancellati, resettando la traiettoria, per farla poi ricominciare nel momento in cui l’aereo uscir`a nuovamente dalla circonferenza. Apparentemente i due metodi, purch´e diversi, sembrano entrambi validi. Tut- tavia, dopo alcune prove condotte su dei voli scelti a random, si `e notato che il secondo metodo induceva pi`u spesso degli aumenti nel numero di cluster totali ottenuti. Dopo un’attenta analisi, `e emerso che il problema non `e in- trinseco al secondo metodo di taglio, che sulla carta risulta il migliore, ma dipende dal fatto che le traiettorie sono descritte tramite punti. Nell’eseguire il taglio, infatti, si decide qual `e l’insieme dei punti della traiettoria da tenere e qual `e quello da scartare. Figura 5.2: Esempio di traiettorie uguali descritte da insiemi di punti diversi, che dopo il taglio risultano distinte 28
  • 31. Il problema riscontrato deriva dal fatto che le traiettorie sono mappate da un insieme di punti non ugualmente distribuiti nello spazio, anche per traiettorie estremamente simili. Come si vede nella figura 5.2, la non uguale distribuzione di punti, combinata al secondo metodo di taglio, risulta in due traiettorie ben diverse. In conclusione, si `e quindi deciso di adottare il primo metodo, in cui casi del genere vengono gestiti meglio. 5.3.2 Analisi della destinazione Anche nel decidere il punto in cui smettere di considerare la traiettoria all’arrivo, sono emersi due possibili metodi: 1. la traiettoria termina nel momento in cui l’aereo entra per la prima volta nel raggio di 20 chilometri dall’aeroporto di destinazione. 2. la traiettoria termina nel momento in cui l’aereo entra definitivamente nel raggio di 20 chilometri dall’aeroporto di destinazione. In questo caso, se l’aereo esce e poi rientra nel raggio di interesse il percorso viene comunque conteggiato. La scelta `e ricaduta sul secondo metodo, in quanto il primo presenta le stesse criticit`a che hanno portato alla sua esclusione per l’aeroporto di partenza. 5.3.3 Adattamento del primo e dell’ultimo punto al raggio Nell’ambito del taglio delle traiettorie `e emerso un ulteriore problema che ha causato l’aumento del numero di cluster, nonostante l’attesa diminuzione. L’analisi pi`u approfondita e la soluzione del problema vengono qui proposte solo per la partenza dell’aereo, ma la situazione `e analoga per il taglio alla destinazione, che viene per questo solo accennata. Per la partenza, come si vede nella sezione 5.3.1, si `e deciso di prendere i punti della traiettoria da quando l’aereo esce per la prima volta dal raggio di 20 chilometri dall’aeroporto. Tuttavia, la non uniforme distribuzione dei punti implica che il primo punto considerato possa essere dopo 20 o pi`u chi- lometri dall’aeroporto. Quindi, in vari casi, traiettorie simili, ma descritte da punti diversi, sono state classificate come “dissimili”, generando un numero superiore di cluster. Per risolvere il problema, si `e deciso di prendere il punto precedente al primo considerato, ovvero l’ultimo dei punti esclusi, e di procedere per bise- zione tra questo e il primo punto di quelli considerati. La precisione scelta 29
  • 32. per la bisezione `e di 100 metri, in pi`u o in meno, rispetto ai 20 chilometri dall’aeroporto. Il punto ricavato con questo metodo viene aggiunto in testa all’elenco di punti che rappresentano la traiettoria. Per quanto riguarda l’arrivo del volo, il problema `e analogo per il taglio, ed `e stato risolto con la ricerca di un punto con il metodo di bisezione. La precisione utilizzata `e la stessa della partenza. I punti considerati sono l’ultimo dell’insieme costituente la traiettoria e il suo successivo, cio`e il primo punto interno al raggio dalla destinazione. In questo caso il punto trovato `e stato aggiunto in coda all’elenco. 5.4 Risultati ottenuti Di seguito, vengono esposti i risultati ottenuti dall’ulteriore analisi dei dati tramite dei grafici. Il significato dei termini usati nella legenda `e il seguente: ˆ n cluster: indica il numero di cluster ottenuti mediante il procedimento descritto nel capitolo 4. ˆ c cut orig: indica il numero di cluster ottenuti tagliando la traiettoria solo all’origine. ˆ c cut: indica il numero di cluster ottenuti tagliando la traiettoria all’o- rigine e alla destinazione. c cut=n cluster c cut<n cluster c cut>n cluster 80% 17% 3% Figura 5.3: Comparazione dei risultati originari con quelli ottenuti tagliando la traiettoria sia all’origine che alla destinazione 30
  • 33. c cut orig=n cluster c cut orig<n cluster c cut orig>n cluster 83% 14% 3% Figura 5.4: Comparazione dei risultati originari con quelli ottenuti tagliando la traiettoria solo all’origine c cut=c cut orig c cut<c cut orig c cut>c cut orig 95% 4% 1% Figura 5.5: Comparazione dei risultati ottenuti tagliando la traiettoria solo all’origine oppure sia all’origine che alla destinazione Come si pu`o osservare nei grafici 5.3 e 5.4, per la maggior parte delle coppie origine destinazione il numero di cluster ottenuti `e rimasto invariato, nonostante i tagli effettuati sulle traiettorie. Si pu`o tuttavia notare, sia da questi due grafici che dal grafico 5.5, che tagliare la traiettoria sia all’origine che alla destinazione ha prodotto risultati migliori rispetto a quelli ottenuti con il solo taglio all’origine. Questo si riconduce al fatto che `e pi`u probabile che un aereo debba attendere la conferma per poter atterrare piuttosto che quella per intraprendere la traiettoria prevista alla partenza dopo il decollo. Nonostante questo studio sia stato introdotto ai fini di abbassare il nu- mero di cluster, dal grafico 5.3 si vede che, nel 3% dei casi, il taglio della 31
  • 34. traiettoria sia all’origine che alla destinazione ha causato l’aumento del nu- mero di cluster ottenuti. Analogamente, nel grafico 5.4 si osserva che il taglio della traiettoria solo all’origine `e stato peggiorativo nel 3% dei casi. Questi peggioramenti sono presumibilmente dovuti ad un metodo di taglio imperfetto, sia all’origine che alla destinazione. n cluster 159845 c cut 154851 c cut orig 155496 50000 100000 150000 200000 Figura 5.6: Numero totale di cluster ottenuti, con e senza i tagli Nel grafico 5.6, vengono esposti i risultati complessivi, ottenuti sommando il numero totale di cluster prima e dopo i tagli. Come si pu`o vedere, lo scopo generale `e stato ottenuto, seppur la diminuzione non sia estremamente significativa. Questo potrebbe essere dovuto a due fattori: ˆ Il raggio di taglio scelto (20 chilometri) non `e sufficiente per includere tutte le manovre di attesa nei pressi degli aeroporti. ˆ I metodi di taglio adottati non sono sufficientemente precisi o sono inadeguati. 32
  • 35. Capitolo 6 Conclusioni Il presente lavoro si `e articolato in tre fasi principali. Innanzitutto `e stato necessario ottenere le traiettorie compiute dagli aerei a partire dall’insieme ordinato dei punti che le costituiscono. Successivamente, si `e potuti procedere con l’esecuzione del clustering, al fine di raggruppare traiettorie simili, per facilitare un’eventuale analisi strategica futura. Ad esecuzione terminata, sono stati esaminati i risultati, per trovare eventuali correlazioni tra numero di cluster ottenuti e numero di traiettorie originarie e tra numero di cluster ottenuti e distanza tra origine e destinazione. Alla luce di quanto ottenuto, `e stato possibile concludere la generale efficacia della procedura di clustering scelta, nonostante in alcuni casi vi siano stati pi`u cluster rispetto quanto atteso. Si `e quindi deciso di procedere ulteriormente, andando ad eliminare i 20km circostanti gli aeroporti di partenza e di arrivo, in quanto spesso gli aeromobili sono soggetti a seguire traiettorie di decollo e di atterraggio pre- fissate, indipendentemente dalla rotta in questione. In conclusione a que- sta ulteriore elaborazione dei dati, si `e notata una generale diminuzione del numero di cluster ottenuti, il che ha confermato le ipotesi fatte in precedenza. 6.1 Commenti personali Dal punto di vista personale, questo lavoro mi ha permesso di apprendere nuove conoscenze specifiche e di sviluppare la mia indipendenza nella risolu- zione di problemi, pi`u o meno complessi. Aver avuto occasione di lavorare con tecnologie per me nuove, mi ha permesso di capire che spesso quan- to conosciuto non `e adatto per svolgere un determinato lavoro, ed `e quindi opportuno ricercare sempre la tecnologia pi`u adatta. 33
  • 36. Mi reputo soddisfatta di quanto svolto per diversi motivi. In primo luogo, `e doveroso dire che l’ambito in cui ho lavorato mi ha interessata molto, ed `e stato quindi stimolante approfondirlo al di l`a di quanto visto durante il mio percorso universitario. Nello specifico, ho avuto occasione di incontrare un ramo della ricerca operativa che non conoscevo e che mi ha colpita positivamente. Inoltre, ho avuto soddisfazione nell’imparare un nuovo linguaggio di pro- grammazione, e passare dai primi script basilari all’implementazione degli script pi`u complessi visti in questo lavoro. Ho trovato estremante gratificante superare i problemi incontrati, cercando di fare affidamento prevalentemente sulle mie capacit`a. Infine, fare ipotesi sui risultati e vederle poi realizzate, o cercare di trarre conclusioni da quanto ottenuto mi ha fatta sentire indipendente, e ha acuito le mie capacit`a di giudizio autonomo. 34
  • 37. Bibliografia [1] Andrew Cook. European Air Traffic Management: Principles, Practice and Research. Routledge, 2007. [2] Paola Bassi. Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l’analisi delle traiettorie aeree in ambito europeo. 2018. [3] Igor Rossini. Clustering. Slide del corso “Metodologie per Sistemi Intelligenti”. [4] Matteo Matteucci. A tutorial on clustering algorithms. [5] Icao, uniting aviation. [6] ICAO Doc. 7910 location indicators, 2009. [7] Skybrary. [8] EUROCONTROL. NM Glossary. 2014. [9] Roger Lott. Geographic information-well-known text representation of coordinate reference systems. 2015. [10] Wikiwand. [11] Wes McKinney & PyData Development Team. Pandas: powerful python data analysis toolkit, 2018. [12] Kelvin Salton do Prado. How dbscan works and why should we use it? [13] Martin Ester, Hans-Peter Kriegel, J¨org Sander, Xiaowei Xu, et al. A density-based algorithm for discovering clusters in large spatial databases with noise. In Kdd, volume 96, pages 226–231, 1996. 35
  • 38. [14] Daniel P. Huttenlocher, Gregory A. Klanderman, and William J Ruc- klidge. Comparing images using the hausdorff distance. IEEE Tran- sactions on pattern analysis and machine intelligence, 15(9):850–863, 1993. [15] Sean Gillies. The shapely user manual, 2013. [16] Scikit learn. [17] Claudio Rocchini. Breve introduzione a postgis, 2014. 36
  • 39. Ringraziamenti Se state leggendo queste frasi significa che ce l’ho fatta, la tesi `e stampata e il viaggio della triennale `e finito. Se le state leggendo significa che, almeno in parte, queste parole sono per voi, perch´e oggi, nel momento della mia laurea, voi ci siete, e siete dalla mia parte. Grazie a chi c’`e sempre stato, da quando ero un “pidocchio” ad oggi e mi ha presa per mano e mi ha insegnato la vita. Grazie a chi ho incontrato lungo la strada e ha deciso di percorrere qualche tratto del mio viaggio insieme a me. Grazie a chi mi ha tenuto i posti (perch´e lo sanno tutti che la mattina non mi piace alzarmi presto). Grazie a chi ha riso con me e ha condiviso con me le migliori avventure. Grazie a chi mi ha supportata ogni giorno e ha condiviso con me gioie e dolori. Grazie a chi ha saputo consolarmi e tranquillizzarmi nei momenti di sconforto. Grazie a chi ha gioito con me per ogni mio successo. Grazie a chi `e lontano ma `e vicino con il cuore. E, per concludere, grazie a chi non ho mai ringraziato abbastanza ma lo merita pi`u di ogni altro. 37