¿Cómo crear un front-end simple para una base de datos PostGIS?


21

Mi organización recopila una gran cantidad de datos de monitoreo ambiental (flujo de flujo, química del agua, etc.), la mayoría de los cuales se encuentran actualmente almacenados en Excel. Me gustaría tener todo en una base de datos, probablemente PostGIS, pero necesito que los datos sean accesibles para personas sin conocimiento de los principios de base de datos (sin SQL ni nada de eso).

Me gustaría tener algún tipo de front-end simple para mi base de datos donde el usuario seleccione una estación de monitoreo de interés, tipo variable (por ejemplo, concentración de nitrato de flujo) y un intervalo de tiempo. La base de datos luego devolvería los datos solicitados en formato csv, que el usuario podría descargar a su computadora. En un mundo ideal, el front-end mostraría un mapa en el que se puede hacer clic de todas las estaciones de monitoreo, pero si es más fácil, una lista desplegable de sitios disponibles estaría bien para comenzar. Supongo que este front-end probablemente sea un sitio web, pero no tiene que ser así.

¿Qué tan difícil es esto, por favor, y cuáles son mis diversas opciones? No soy un experto en bases de datos de ninguna manera, pero tengo una sólida formación en Desktop GIS y estoy feliz de escribir scripts Python simples y jugar con geodatabases personales PostGIS, SpatiaLite y ESRI. Nunca he realizado ningún desarrollo web o SIG web, pero tengo muchas ganas de aprender.

Pasé parte de ayer explorando algunos de los excelentes tutoriales de OpenGeo . Este enfoque parece prometedor, y al menos ahora puedo ver cómo mostrar mis datos en un sitio web. Lo que es menos obvio para mí es cómo dejo que el usuario consulte la base de datos y obtenga resultados.

Mi pregunta: ¿en qué tipo de estructura de software debería estar pensando para un proyecto como este? p.ej

PostGIS + GeoServer + Something else?

¿Qué otras opciones hay disponibles que debería investigar?

Inicialmente, se preferiría una solución simple pero funcional: si puedo armar un prototipo básico, puedo usarlo para justificar pasar más tiempo aprendiendo cómo hacer las cosas "correctamente". El código abierto también es un requisito, ya que no tengo ningún presupuesto para esto hasta que pueda probar algunos beneficios.

¡Muchas gracias!


2
Si deja de lado el mapa, puede hacer todo esto con solo Apache y PHP. Solo tendrá que crear un formulario de entrada para el script PHP que recupere los datos de PostGIS. (Puede sustituir PHP con Python.) ... Pero entonces esto no sería una pregunta para GIS.SE
underdark

¡Muchas gracias a todos los que respondieron! Estas son todas respuestas útiles y me has dado muchas cosas para seguir. Me gustaría "aceptar" todos ellos, pero le he dado los puntos a @canisrufus ya que su último párrafo me pareció muy útil y no he encontrado web.py antes. GeoDango también se ve increíble. ¡Salud!
JamesS

@jamesS Iba a expandir mi último párrafo, pero comenzó a parecer injustificadamente fuera de tema. Si tiene preguntas o desea un monólogo más largo sobre cómo configurarlo, puede contactarme aquí en el chat.
canisrufus

@JamesS ¿Algún progreso en eso? Trabajando en el mismo topis, acabo de comenzar a desarrollar un proyecto Django
Luca Moiana

Hola @Luca Moiana. Como prototipo, seguí los consejos en la respuesta aceptada a continuación usando web.py, Apache y PostGIS (pero mi sitio web no incluía un mapa al final). Unos años después, hemos adoptado el Sistema de Información Hidrológica CUAHSI , que es excelente. Requiere un poco de configuración, pero ofrece una amplia gama de herramientas para almacenar, buscar, explorar, analizar y visualizar datos ambientales.
JamesS

Respuestas:


13

Si ya conoces Python y SQL, no sería demasiado difícil construir un sitio web utilizando un marco web de Python. Me vienen a la mente dos simples: cherry.py y web.py. Creo que aprender el mapeador relacional de objetos de Django podría ser más trabajo de lo que vale.

Python tiene una biblioteca llamada psycopg2 (http://initd.org/psycopg/, y un tutorial: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ) que le permite ejecutar fácilmente consultas en PostGRESQL / PostGIS. También tiene un módulo CSV (http://docs.python.org/library/csv.html) que facilitará la creación de su CSV a partir de dicha consulta.

Como han dicho otras personas, crear un mapa en la parte delantera agrega montones de complejidad. Necesitará algo como OpenLayers para mostrar los mapas, y algo como MapServer o GeoServer para crear imágenes de mapas desde su base de datos (u otras fuentes de datos). Eso probablemente sería mejor como un segundo paso.

Por ahora, "todo" parece que necesita una sola página web: un formulario que le permite seleccionar qué parámetros de consulta desea. Al presionar "enviar", los parámetros de consulta se envían al servidor (Apache sería una buena opción), que luego ejecuta su script, que consulta la base de datos, crea un archivo CSV apropiado y lo devuelve al navegador. Fácil como py;)


2
No NECESITA MapServer / GeoServer para crear imágenes. Puede obtener los datos directamente de PostGIS y mostrarlos como datos vectoriales en su mapa. Sin embargo, dependiendo de la complejidad de sus datos, podría transferir una cantidad considerable de datos. Depende de la situación. Además, mostrarlos como datos vectoriales le da la opción de hacer clic en un objeto para mostrar / editar sus datos.
Mr_Chimp

@mr_chimp Oh, ese es un buen punto. Mi preocupación había sido la capa de fondo, pero uno podría usar Google Maps u OSM, etc. De hecho, tiendo a pensar que la capa de vectores es generalmente una mejor solución (para el usuario), pero como usted señala, hay limitaciones. Y, por supuesto, la forma más sencilla de transferir los vectores sería tener algo como MapServer o GeoServer para servirlos;)
canisrufus

Como siempre, se trata de utilizar la herramienta adecuada para el trabajo. Como JamesS ya tiene una base de datos PostGIS, también puede obtener los datos directamente desde allí. A menos que me olvide de algo, configurar MapServer / lo que sea solo sería un paso adicional (aunque normalmente, por supuesto, sería la forma más rápida).
Mr_Chimp

8

GeoDjango

Es bastante fácil de configurar y tiene algunas funciones básicas. Es Python, así que al menos estás familiarizado con el lenguaje. Puede ser excesivo para sus necesidades. Pero, si alguna vez quieres hacer crecer el sitio, tienes un marco maduro sobre el cual construir.


5

Si no quiere / necesita crear un mapa. Todo lo que necesita es un servidor web y un lenguaje de programación (prefiero Apache porque es fácil de usar y configurar, pero hay otras opciones) y luego Postgres con PostGIS o alguna otra base de datos.

Si sus archivos de Excel están bien formateados, importar los datos a la base de datos debería ser simple. Puede escribir un script que pueda generar las instrucciones INSERT. Las consultas que describe suenan como si también fueran manejables.

Si quiere hacer la parte de mapeo, Apache, GeoServer y OpenLayers serían una solución simple y gratuita. GeoServer (como sabe) puede usar fácilmente PostGIS para WMS u otro formato de salida. Todo lo que tiene que hacer es agregar una tienda que se conecte a PostGIS y luego agregar capas de las tablas en PostGIS.

Otras herramientas de mapeo gratuitas que puede ver serían Mapserver y MapGuide. MapGuide Open Source hace algunas cosas bastante interesantes, pero es más complicado y su documentación está un poco retrasada.

MySQL también tiene una extensión espacial, pero no tiene tantas características y funciones espaciales como PostGIS.

Si está familiarizado con Python, miraría GeoDjango ... No sé mucho al respecto personalmente, pero he escuchado cosas buenas


4

Puede encontrar una descripción general de los problemas de diseño y desarrollo de aplicaciones de mapeo web, además del código fuente completamente documentado para una aplicación de mapeo web ambiental basada en Google Maps y la base de datos espacio-temporal PostgreSQL / PostGIS, en mi relativamente reciente disertación de MSc en Informática: " Diseño y desarrollo de un prototipo que aborde la gestión, análisis y entrega de datos de vectores ambientales espacio-temporales utilizando tecnología de código abierto. Marco general y estudio de caso centrado en la gestión de aguas subterráneas en una zona costera "

La disertación se puede descargar de http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.