Skip to content

Omarone529/ApexGPS

Repository files navigation

ApexGPS - Servizio API Back-end

License: MIT Made with-Django API-DRF GIS-PostGIS/pgRouting Architecture-REST API Docker Containerized-Docker

Logo

1. Panoramica del Progetto

Questo documento descrive il servizio backend API del progetto, l'infrastruttura centrale responsabile del calcolo e della gestione dei percorsi di guida ottimizzati.

Lo scopo è fornire un motore di routing avanzato che genera percorsi panoramici e sinuosi, dando priorità all'esperienza di guida, pur mantenendo un vincolo di tempo ragionevole rispetto al percorso più veloce.

Funzionalità Chiave:

  • Calcolo Percorso Panoramico: Genera percorsi unici che massimizzano la sinuosità e l'interesse panoramico.
  • Tolleranza Tempo: Il percorso panoramico non supera il percorso più veloce di indicativamente 40 minuti.
  • API Universale: Serve un'unica interfaccia dati (API) per le applicazioni mobile e web.
  • Persistenza Utente: Gestisce l'autenticazione (JWT e OAuth) e il salvataggio/sincronizzazione dei percorsi per ciascun utente.

2. Architettura e Stack Tecnologico

Il backend è un'applicazione indipendente basata su un'architettura GIS (Geographic Information System) open-source, fornendo il servizio esclusivamente tramite API REST.

Logica di Routing (Core GIS)

Il calcolo del percorso è gestito da una funzione di costo custom all'interno del grafo di pgRouting. La funzione di costo C per ogni segmento stradale è definita come:

C_segmento = (α⋅Distanza)−(β⋅Stotale)

S totale (Punteggio Panoramico) è un valore pre-calcolato che combina:

  • Sinuosità (curve)
  • Variazione di Altitudine
  • Prossimità ai POI.

α e β sono coefficienti che vengono regolati in base alla preferenza dell'utente.

3. Guida al Setup Locale

Questa sezione è destinata agli sviluppatori per la configurazione dell'ambiente.

Prerequisiti

Il progetto è completamente containerizzato con Docker e Docker Compose, includendo sia l'applicazione Django che il database PostgreSQL con PostGIS/pgRouting. Assicurarsi che siano installati i seguenti servizi a livello di sistema:

PostgreSQL (versione 14+)

PostGIS e pgRouting (abilitati come estensioni nel database)

Python 3.10+

Docker Engine 24.0+

Docker Compose v2.20+

Installazione e Avvio

Clonazione e Dipendenze

Clonare la repository, creare e attivare l'ambiente virtuale.

Installare le dipendenze richieste dal file requirements.txt.

Bash

Clonare la repository

git clone https://github.com/Omarone529/ApexGPS cd ApexGPS

Avviare tutti i servizi (Django + PostgreSQL + PostGIS)

docker compose build

docker compose up

Eseguire le migrazioni del database

docker-compose exec web python manage.py migrate

Creare un superuser (facoltativo)

docker compose exec web python manage.py createsuperuser

L'applicazione sarà disponibile all'indirizzo: http://localhost:8000

Configurazione Database e Migrazioni

Configurare le credenziali del DB PostGIS e assicurarsi che l'engine sia django.contrib.gis.db.backends.postgis.

python manage.py migrate Popolamento Dati Spaziali Eseguire lo script di gestione Django che costruisce il grafo navigabile e pre-calcola i punteggi panoramici (Stotale​).

Esegue la creazione della topologia (pgr_createTopology) e il pre-calcolo dei punteggi panoramici. python manage.py prepare_gis_data --area {codice_area} python manage.py runserver

About

Servizio backend API based per il calcolo di itinerari turistici e panoramici. Utilizza Django/DRF e PostGIS/pgRouting per generare percorsi panoramici e sinuosi (ottimizzati per curve, altitudine e POI), garantendo che il tempo extra rispetto al percorso più veloce sia ragionevole. Gestisce anche l'autenticazione JWT e Google

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages