[Gfoss] monitoraggio traffico navale

Ciao a tutti e felice anno.
Volevo affrontare un argomento a me molto caro e di seguito mi spiego meglio.
Da poco collaboro con una azienda di TLC leader nella
produzione di sistemi per l'identificazione delle imbarcazioni
(sistema AIS Automatic Identification System ).
Stiamo cercando di fare esperienza, grazie ad un progetto che
sta nascendo, all'integrazione dei dati raccolti dalla Guardia
Costiera (nostro cliente) per il monitoraggio del traffico navale.
Come si può immaginare il traffico navale monitorato dall'Italia è di
centrale importanza non solo per il nostro Paese ma anche per l'intero
bacino del Mediterraneo e quindi per l'Europa, da questo si comprende
che il progetto è ambizioso.

Per farla breve, io mi occuperò della progettazione e realizzazione
della parte di visualizzazione e interrogazione del traffico in Real-
Time.
In un primo prototipo vorrei realizzare un WebGIS che deve poter
trattare i seguenti dati:
1) feature puntuali rappresentanti le imbarcazioni che in "near
realtime" (6 minuti c.ca) aggiornano i dati di navigazione tra cui la
geometria (lat,lon) del punto.
2) cartografia digitale navale, sostanzialmente S-57.

Avrei pensato, per le ottime potenzialità, a GeoServer per
l'implementazione del servizio, e qui vengono i miei dubbi:
a) per i dati delle imbarcazioni avrei pensato ad offrire un servizio
WFS, ma il traffico nell'area del mediterraneo supera in certi momenti
le 8000 imbarcazioni, ci sono possibili problemi di performance?
Qual'è il modo migliore di rappresentare questo tipo di dati offrendo
però la possibilità di interrogare la feature per farsi restituire i
metadata al volo? Ci sono progetti analoghi (monitoraggio flotte bus,
etc.)?
b) la cartografia nautica: nota dolente, in genere è cartografia
criptata S-63, ma ammettendo di poter ottenere la cartografia in
formato aperto S-57 è possibile gestire i raster direttamente come fa
MapServer (che grazie ad un driver GDAL apre il file S-57 e carica i
vari layer)?
c) vorrei offrire un servizio WFS in cui fatta una richiesta tramite
BBOX e finestra temporale (dal giorno X al giorno Y) vengano
restituiti i dati storici contenuti nel geoDB. E' possibile
implementare una richiesta di questo tipo su protocollo WFS?

Grazie a tutti.
Penso che l'applicazione sia di buon interesse e potrebbe essere
oggetto di discussione.

Ciao Domenico, BUON ANNO ANCHE A TE :slight_smile:

Avrei pensato, per le ottime potenzialità, a GeoServer per
l’implementazione del servizio, e qui vengono i miei dubbi:
a) per i dati delle imbarcazioni avrei pensato ad offrire un servizio
WFS, ma il traffico nell’area del mediterraneo supera in certi momenti
le 8000 imbarcazioni, ci sono possibili problemi di performance?
Qual’è il modo migliore di rappresentare questo tipo di dati offrendo
però la possibilità di interrogare la feature per farsi restituire i
metadata al volo? Ci sono progetti analoghi (monitoraggio flotte bus,
etc.)?

Secondo me non ci sono grossi problemi di performance legati a GeoServer nel rendenring dei punti…il problema poterebbe essere legato più al modo in cui hai pensato di sviluppare il WebGIS, quindi chi può vedere cosa e quali limitazioni ci sono sulla visibilità dei punti (MINSCALE, MAXSCALE, ecc…)…Certo se chiunque può vedere 8000 punti alla volta “muoversi” sulla mappa il WFS o affini (es. GeoJSON) potrebbero appesantire molto la tua applicazione e renderla lenta e poco usabile. Mi son trovato anche io a gestire la visualizzazione di migliaia di punti alla volta per alcune applicazioni WebGIS (NON real time però…) e dalla mia esperienza ti posso dire che il problema era quasi mai legato al rendering dei punti da GeoServer (e\o Mpaserver) bensì da:

  • gestione utenti e ruoli
  • indici e query su Geodatabase (PostGIS)
  • Richieste filtrate verso GeoServer (Mapserver)

Ad ogni modo, credo che WFS, GeoJSON, GeoRSS siano la tecnologia migliore per gestire le feature (atributi + geometrie) via Web… a meno che non vuoi usare una immagine restituita dal WMS + SLD (filtri le richieste tramite SLD).

b) la cartografia nautica: nota dolente, in genere è cartografia
criptata S-63, ma ammettendo di poter ottenere la cartografia in
formato aperto S-57 è possibile gestire i raster direttamente come fa
MapServer (che grazie ad un driver GDAL apre il file S-57 e carica i
vari layer)?
c) vorrei offrire un servizio WFS in cui fatta una richiesta tramite
BBOX e finestra temporale (dal giorno X al giorno Y) vengano
restituiti i dati storici contenuti nel geoDB. E’ possibile
implementare una richiesta di questo tipo su protocollo WFS?

Hai mai testato il WFSv (versioning) di GeoServer?

Grazie a tutti.
Penso che l’applicazione sia di buon interesse e potrebbe essere
oggetto di discussione.

Si, molto interessante !!

Fabio D’Ovidio

domenico febbo ha scritto:
...

Avrei pensato, per le ottime potenzialità, a GeoServer per
l'implementazione del servizio, e qui vengono i miei dubbi:
a) per i dati delle imbarcazioni avrei pensato ad offrire un servizio
WFS, ma il traffico nell'area del mediterraneo supera in certi momenti
le 8000 imbarcazioni, ci sono possibili problemi di performance?

Se devi estrarre poche feature delle 8000 direi di no, se di continuo
vari client estraggono ciascuno 8000 feature in GML beh, avrai problemi
di banda. GeoServer applica la compressione gzip al volo su tutti i dati
testuali (gml, json, kml,...), e questo aiuta, ma devi fare un paio
di prove per valutare la dimensione della richiesta media fatta
da un client, poi stimi la frequenza delle richieste e da questo
desumi i requisiti di banda del server.

Qual'è il modo migliore di rappresentare questo tipo di dati offrendo
però la possibilità di interrogare la feature per farsi restituire i
metadata al volo? Ci sono progetti analoghi (monitoraggio flotte bus,
etc.)?
b) la cartografia nautica: nota dolente, in genere è cartografia
criptata S-63, ma ammettendo di poter ottenere la cartografia in
formato aperto S-57 è possibile gestire i raster direttamente come fa
MapServer (che grazie ad un driver GDAL apre il file S-57 e carica i
vari layer)?

Al momento no. Abbiamo un lavoro non terminato per integrare GeoServer
con OGR, che legge gli S57 (ma da questi estrai dei vettoriali che io
sappia, che poi possono essere vestiti in una richiesta WMS), ma purtroppo al momento è stato abbandonato per le difficoltà di sviluppo
sotto Windows (non volego acquistare un VC++ e purtroppo sotto Win
serve quello, con gli altri compilatori non c'e' supporto e son mal
di testa...).
Se qualcuno vuole riprendere in mano il lavoro posso provare a renderlo
compilabile di nuovo (e' fermo da un anno e mezzo, le API sono cambiate
nel momento) e passare il testimone.
In alternativa, ha senso prendere i dati e caricarli in PostGIS con
uno script che usi ogr2ogr?

c) vorrei offrire un servizio WFS in cui fatta una richiesta tramite
BBOX e finestra temporale (dal giorno X al giorno Y) vengano
restituiti i dati storici contenuti nel geoDB. E' possibile
implementare una richiesta di questo tipo su protocollo WFS?

Certo, basta che ti scrivi un filtro OGC che metta insieme
il bbox con un filtro PropertyIsBetween con le due date.
In funzione del backend scelto il filtro sulle date potrebbe
non funzionare correttamente, ma per quello posso metterci una
pezza in giornata.

Ciao
Andrea

--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.