Come creare un front-end semplice per un database PostGIS?


21

La mia organizzazione raccoglie molti dati di monitoraggio ambientale (flusso, chimica dell'acqua, ecc.), La maggior parte dei quali è attualmente archiviata in Excel. Vorrei inserire tutto in un database - probabilmente PostGIS - ma ho bisogno che i dati siano accessibili a persone che non conoscono i principi del database (niente SQL o simili).

Vorrei avere una sorta di front-end semplice per il mio database in cui l'utente seleziona una stazione di monitoraggio di interesse, un tipo variabile (ad es. Concentrazione di nitrati di flusso) e un intervallo di tempo. Il database restituisce quindi i dati richiesti in formato CSV, che l'utente può scaricare sul proprio computer. In un mondo ideale, il front-end mostrerebbe una mappa cliccabile di tutte le stazioni di monitoraggio, ma se è più semplice un elenco a discesa di siti disponibili andrebbe bene per cominciare. Immagino che questo front-end sia probabilmente un sito Web, ma non deve esserlo.

Quanto è difficile, per favore, e quali sono le mie varie opzioni? Non sono affatto un esperto di database, ma ho un solido background nel Desktop GIS e sono felice di scrivere semplici script Python e di giocare con i geodatabase personali PostGIS, SpatiaLite ed ESRI. Non ho mai fatto alcun sviluppo web o GIS web, ma sono desideroso di imparare.

Ho trascorso parte di ieri esplorando alcuni degli eccellenti tutorial di OpenGeo . Questo approccio sembra promettente e almeno ora posso vedere come visualizzare i miei dati su un sito Web. Quello che è meno ovvio per me è come lascio che l'utente interroghi il database e ottenga i risultati.

La mia domanda: a quale tipo di struttura software dovrei pensare per un progetto come questo? per esempio

PostGIS + GeoServer + Something else?

Quali altre opzioni sono disponibili che dovrei ricercare?

Inizialmente sarebbe preferibile una soluzione semplice ma funzionale: se riesco a mettere insieme un prototipo di base, posso usarlo per giustificare passare più tempo a imparare a fare le cose "correttamente". L'open source è anche un requisito in quanto non ho budget per questo fino a quando non posso dimostrare alcuni vantaggi.

Grazie mille!


2
Se lasci la mappa, puoi fare tutto con Apache e PHP. Devi solo creare un modulo di input per lo script PHP che recupera i dati da PostGIS. (È possibile sostituire PHP con Python.) ... Ma allora questo non sarebbe una domanda per GIS.SE
Sottosuolo

Grazie mille a tutti quelli che hanno risposto! Queste sono tutte risposte utili e mi hai dato un sacco di cose da seguire. Mi piacerebbe "accettarli" tutti, ma ho dato i punti a @canisrufus poiché ho trovato il suo ultimo paragrafo molto utile e non ho mai incontrato web.py prima. Anche GeoDango è fantastico. Saluti!
JamesS,

@jamesS Stavo per espandere il mio ultimo paragrafo, ma ha iniziato a sembrare ingiustificatamente fuori tema. Se hai domande o desideri un monologo più lungo su come impostare, puoi contattarmi in chat qui.
canisrufus,

@JamesS Qualche progresso su questo? Lavorando sullo stesso argomento, ho appena iniziato a sviluppare un progetto Django
Luca Moiana,

Ciao @Luca Moiana. Come prototipo, ho seguito i consigli nella risposta accettata di seguito utilizzando web.py, Apache e PostGIS (ma il mio sito Web non includeva una mappa alla fine). Pochi anni dopo, abbiamo adottato il sistema informativo idrologico CUAHSI , che è fantastico. Ci vuole un po 'di configurazione, ma offre una vasta gamma di strumenti per archiviare, cercare, esplorare, analizzare e visualizzare i dati ambientali.
JamesS,

Risposte:


13

Se conosci già Python e SQL, non sarebbe troppo difficile creare un sito Web utilizzando un framework Web Python. Due semplici - cherry.py e web.py - vengono in mente. Penso che apprendere a fondo il mappatore relazionale degli oggetti di Django potrebbe essere più lavoro di quanto valga la pena.

Python ha una libreria chiamata psycopg2 (http://initd.org/psycopg/, e un tutorial: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ) che ti consente di eseguire facilmente query su PostGRESQL / PostGIS. Ha anche un modulo CSV (http://docs.python.org/library/csv.html) che renderà la creazione del CSV da tale query un gioco da ragazzi.

Come altri hanno già detto, la creazione di una mappa sul front-end aggiunge risma di complessità. Avrai bisogno di qualcosa come OpenLayer per visualizzare le mappe e qualcosa come MapServer o GeoServer per creare immagini di mappe dal tuo database (o altre fonti di dati). Probabilmente sarebbe meglio come secondo passo.

Per ora, "tutto" sembra che ti serva un'unica pagina Web: un modulo che ti consente di selezionare i paremeter di query che desideri. Premono "Invia", i parametri della query vengono inviati al server (Apache sarebbe una buona scelta), che quindi esegue lo script, che interroga il database, crea un file CSV appropriato e lo restituisce al browser. Facile da usare;)


2
Non è NECESSARIO MapServer / GeoServer per creare immagini. Puoi semplicemente ottenere i dati direttamente da PostGIS e visualizzarli come dati vettoriali sulla tua mappa. Tuttavia, a seconda della complessità dei dati, potresti trasferire una notevole quantità di dati. Dipende dalla situazione. Inoltre, visualizzarli come dati vettoriali ti dà la possibilità di fare clic su un oggetto per mostrare / modificare i suoi dati.
Mr_Chimp,

@mr_chimp Oh, questo è un buon punto. La mia preoccupazione era il livello di sfondo, ma si potrebbe semplicemente usare Google Maps o OSM o ecc. In effetti, tendo a pensare che il livello vettoriale sia generalmente una soluzione migliore (per l'utente), ma come fai notare ci sono delle limitazioni. E, naturalmente, il modo più semplice per trasferire i vettori sarebbe quello di farli servire qualcosa come MapServer o GeoServer;)
canisrufus,

Come sempre si tratta di utilizzare lo strumento giusto per il lavoro. Poiché JamesS ha già un database PostGIS, potrebbe anche prendere i dati direttamente da lì. A meno che non stia dimenticando qualcosa, impostare MapServer / qualunque cosa sarebbe solo un passo in più (anche se normalmente sarebbe il modo più veloce).
Mr_Chimp,

8

GeoDjango

È abbastanza facile da configurare e ottiene alcune funzionalità di base. È Python, quindi almeno conosci la lingua. Potrebbe essere eccessivo per le tue esigenze. Ma, se mai vuoi far crescere il sito, hai un framework maturo su cui costruire.


5

Se non vuoi / devi creare una mappa. Tutto ciò di cui hai bisogno è un web server e un linguaggio di programmazione (preferisco Apache perché è facile da usare e configurare, ma ci sono altre opzioni) e Postgres con PostGIS o qualche altro database.

Se i file Excel sono formattati correttamente, l'importazione dei dati nel database dovrebbe essere semplice. È possibile scrivere uno script in grado di generare le istruzioni INSERT. Le query che descrivi sembrano anche gestibili.

Se / quando si desidera eseguire la parte di mapping, Apache, GeoServer e OpenLayers sarebbe una soluzione semplice e gratuita. GeoServer (come sai) può facilmente utilizzare PostGIS per WMS o altri formati di output. Tutto quello che devi fare è aggiungere un negozio che si collega a PostGIS, quindi aggiungere livelli dalle tabelle in PostGIS.

Altri strumenti di mappatura gratuiti che puoi consultare sarebbero Mapserver e MapGuide. MapGuide Open Source fa cose piuttosto interessanti ma è più complicato e la sua documentazione è un po 'indietro.

MySQL ha anche un'estensione spaziale, ma non ha tante caratteristiche e funzioni spaziali di PostGIS.

Se hai familiarità con Python, guarderei GeoDjango ... Non ne so molto personalmente ma ho sentito cose positive


4

Puoi trovare una panoramica dei problemi di progettazione e sviluppo delle applicazioni di mappatura web, oltre al codice sorgente completamente documentato per un'applicazione di mappatura web ambientale basata su Google Maps e sul database spazio-temporale PostgreSQL / PostGIS, nel mio relativamente recente Master in tesi di informatica: " Progettazione e sviluppo di un prototipo che affronti la gestione, l'analisi e la consegna dei dati ambientali vettoriali spazio-temporali utilizzando la tecnologia Open Source. Quadro generale e case study incentrati sulla gestione delle acque sotterranee in un'area costiera "

La tesi può essere scaricata da http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.