Diventa creativo con SeeYou.Cloud

Visualizza i tuoi dati con livelli personalizzati in SeeYou.Cloud

Allarme geek! SeeYou Cloud, codice Phyton, heatmap e livelli personalizzati a venire. Se questo ti ispira, continua a leggere.

Il nostro team di sviluppatori lavora duramente per rendere SeeYou.Cloud facile da usare pur mantenendolo ricco di caratteristiche interessanti. Aggiungiamo cose su base settimanale. Oggi, mostreremo una delle caratteristiche più avanzate. Mentre analizzi un volo potresti aver detto a te stesso: "Amico, sarebbe bello vedere dove sono state tutte le termiche quel giorno". Vi ricorda qualcosa?

Bene, con un po' di creatività e di sforzo si può creare il tuo strato personalizzato e visualizzarlo in SeeYou.Cloud.

Livello personalizzato sotto le opzioni del pannello dei livelli della mappa.

Il pilota del team Naviter Tilen Ceglar dimostra come funziona su uno dei suoi recenti progetti

Dopo il 16° Campionato Mondiale di Parapendio in Macedonia stavo caricando tutti i miei voli su SeeYou.Cloud e mentre li analizzavo, mi sono reso conto che in un dato giorno di gara, ci sono 100 o più track logs nella stessa area e in un lasso di tempo simile. Si tratta di un sacco di dati concentrati e, per quanto ne so, non vengono realmente utilizzati. Così mi sono detto, quanto sarebbe stato difficile farci qualcosa? Come si è scoperto, è abbastanza semplice. Una volta convertite le tracce IGC nel formato giusto, Seeyou.Cloud può visualizzare i dati con un semplice copia/incolla di un URL.

Strato personalizzato

Per attivare il livello personalizzato: 

  1. Aprire il pannello dei livelli sulla destra
  2. Aprire il menu dei livelli personalizzati
  3. Incolla l'URL del file JSON che vuoi visualizzare e attivalo. 

Formato del file

SeeYou.Cloud utilizza Mapbox API per la visualizzazione di mappe e dati. Non entreremo nei dettagli qui, quindi assicuratevi di controllare il loro documentazione. In poche parole, il file JSON deve contenere due parti: i dati geospaziali in forma di formato GeoJSON e le definizioni dei livelli in stile Mapbox. 

GeoJSON è un formato di file standard aperto per codificare varie strutture di dati geospaziali come punti, poligoni e altro. Ogni set di dati può avere proprietà aggiuntive come il nome, il timestamp ecc. 

Ecco un esempio di un fix gps da un tracklog in formato GeoJSON con longitudine di 45.79, latitudine di 11.66 e altitudine di 739 m. In questo punto, la velocità verticale è di 1.01 m/s a 1555765200 unix o epoch time. 

{
"tipo": "FeatureCollection",
"caratteristiche": [
{
"tipo": "Feature",
 "Geometria":
 {
"tipo": "Punto",
"coordinate":
[11.663722, 45.793422, 739]
},
"proprietà":
{
"vario": 1.01,
"tempo": 1555765200,
...
}
},
...
]
}

Ottenere tutti i dati nel formato GeoJSON è la parte che richiede più tempo. Ho usato uno script Python per elaborare tutti i log delle tracce dal 3° compito al Trofeo Montegrappa 2019. Dopo aver fatto la media di ogni singola traccia possiamo differenziare le quote per ottenere le velocità verticali e tenere solo le parti con valori positivi. Raccogliendo le medie positive di tutti i piloti che volano in quella task, abbiamo una stima molto approssimativa di posizioni, forza e tempi delle termiche intorno alla task. Naturalmente, a questo punto si potrebbe fare molta più elaborazione dei dati, ma per gli scopi di questo esempio la terremo semplice.

Mettere insieme tutti i fix gps positivi di tutti i piloti genera un sacco di dati, quindi è saggio tenerli in un file GeoJSON separato, che viene chiamato nel JSON come

{
    "fonti": {
      "task-thermal-source": {
        "tipo": "geojson",
        "data": "https://raw.githubusercontent.com/tceglar/heat/master/data/bigsample.geojson"
      }
    },

I dati sono etichettati come "task-thermal-source". Poi abbiamo bisogno di definire un livello di stile per esso. 

Heatmap

In generale ci sono due tipi di heatmap: quelle che visualizzano la densità di punti su un'area e quelle che interpolano valori discreti con conseguente gradiente liscio tra di loro. Mapbox fornisce la funzione heatmap che genera il primo tipo di heatmap. Anche se preferirei usare il secondo tipo, possiamo comunque lavorarci.

Per visualizzare la heatmap, dobbiamo definire uno stile aggiungendo un livello, identificarlo con i dati sorgente dal file GeoJSON e impostare il tipo a "heatmap". Qui possiamo definire le proprietà del livello, specificando il peso della heatmap, l'intensità, il colore, l'opacità, ecc. Questi parametri sono cruciali per una bella visualizzazione, quindi di solito hanno bisogno di qualche iterazione. 

"strati": [
      {
      "id": "task-heatmap-layer",
      "tipo": "heatmap",
      "source": "task-thermal-source",
      "maxzoom": 15,
      "paint": {
      "heatmap-weight": [
      "interpolare",
      ["lineare"],
      ["get", "mag"],
      0, 0,
      6, 1
      ],
      "heatmap-intensità"[...]
      "heatmap-color"[...] [...],
      "heatmap-radius": [...],
      "heatmap-opacità": [...]
      }
      }
    ]
  }

Per vedere come appare il file JSON completo che abbiamo preparato segui il link qui.
Abbiamo quasi finito. Non resta che caricare il vostro file su un server pubblico (io ho usato github) e copiare il file link nel livello personalizzato in Seeyou.Cloud.

Ecco fatto. Ora possiamo vedere quali erano le termiche più comuni utilizzate dai piloti. Immediatamente possiamo pensare a dei miglioramenti per questo layer come ad esempio visualizzare le termiche non in base alla densità dei piloti che terminano ma piuttosto in base alla forza della termica. La cosa buona è che tutti gli strumenti sono qui e facili da usare 🙂  

Spero che questo vi abbia incoraggiato ad essere creativi e a fare di più con i dati che sono disponibili là fuori. Buon divertimento!