Maggiori dettagli sull’utilizzo si leggono più in basso

Scenario
Sono disponibili:

  1. coordinate geografiche generate da un apparecchio a bordo, che campiona a brevi intervalli e fornisce unicamente i valori di latitudine e longitudine. Il veicolo transita per alcuni indirizzi rilevanti (con approssimazione entro un certo raggio) e in altre zone che sono da ignorare.
  2. un elenco di indirizzi rilevanti, in forma testuale (via, numero civico, città ecc.)

Obiettivo:

  • Scartare tutti i rilevamenti su percorsi non voluti
  • Calcolare la distanza in linea d’aria percorsa, solo fra le posizioni di interesse
  • Ottenere gli indirizzi delle posizioni visitate, in forma testuale
Utilizzo
  1. Caricare il file delle posizioni (“Destinazioni”) così costruito:
    • formato Excel oppure formato csv
    • almeno 2 colonne, con intestazioni <latitudine,longitudine>. Sono ammesse altre colonne
    • in ogni riga sono presenti le coordinate GPS (formato decimale) ed eventualmente le altre informazioni.
  2. Caricare il file degli indirizzi (“Riferimenti”) così costruito:
    • formato Excel oppure formato csv
    • una unica colonna con intestazione <indirizzo>, oppure tre colonne <indirizzo,latitudine,longitudine>
    • in ogni riga è presente un indirizzo in forma testuale.
    • questo file è opzionale. Se omesso, tutte le posizioni saranno conservate
  3. Impostare, se necessario, il raggio del filtro. Se una posizione è vicina (entro tale raggio) a uno degli indirizzi rilevanti verrà utilizzato; altrimenti sarà scartato.
  4. Premere “Invia”
  5. Attendere il completamento del processo. Lo stato di avanzamento si può leggere più sotto.
  6. Al termine del processo, i punti rilevati appariranno sulla mappa; una tabella mostrerà la distanza dal punto di riferimento più vicino, e la distanza percorsa dall’ultima posizione campionata.
  7. Si può scaricare il risultato in un file zip: saranno presenti il file delle posizioni (con l’aggiunta dell’indirizzo testuale) e il file dei punti di riferimento (con l’aggiunta delle coordinate GPS).
Aspetti tecnici
  • Tutto il processo viene eseguito in memoria e i file prodotti non vengono scritti su disco prima di essere inviati all’utente
  • si utilizzano: framework Flask; gestione task queues con Celery e message broker LavinMQ
  • le distanze sono calcolate con l’appropriato sistema cartografico
  • la risoluzione degli indirizzi è affidata a un servizio che pone dei limiti al numero di richieste per unità di tempo
    • Se più utenti sono attivi nello stesso momento questo limite potrebbe essere superato, causando un errore. Una strategia di exponential backoff riduce la velocità per ogni utente e i processi possono continuare
Raccomandazioni
Si tratta di un progetto didattico: si raccomanda di non inviare dati sensibili
Troubleshooting
Verificare che il testo rispetti i seguenti requisiti:

  • nei file csv sia racchiuso fra virgolette (“)
  • sia salvato in formato UTF-8