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

19

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 almacenan actualmente en Excel. Me gustaría incluir todo en una base de datos, probablemente PostGIS, pero necesito que los datos sean accesibles para personas sin conocimiento de los principios de la base de datos (sin SQL ni nada de eso).

Me gustaría tener algún tipo de interfaz simple para mi base de datos donde el usuario seleccione una estación de monitoreo de interés, tipo de 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 seleccionable de todas las estaciones de monitoreo, pero si es más fácil, para empezar, una lista desplegable de sitios disponibles estaría bien. Supongo que este front-end probablemente sería un sitio web, pero no tiene por qué serlo.

¿Qué tan difícil es esto, por favor, y cuáles son mis diferentes 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 de Python simples y jugar con las geodatabases personales de PostGIS, SpatiaLite y ESRI. Nunca he hecho ningún desarrollo web ni SIG web, pero estoy dispuesto a 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 permito al usuario consultar la base de datos y obtener 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 presupuesto para esto hasta que pueda probar algunos beneficios.

¡Muchas gracias!

    
pregunta JamesS 19.08.2011 - 11:41

4 respuestas

12

Si ya conoces Python y SQL, no sería demasiado difícil crear un sitio web utilizando un marco web de Python. Dos simples - cherry.py y web.py - vienen a la mente. Creo que aprender su camino por el mapeador relacional de objetos de Django podría ser más trabajo de lo que vale la pena.

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

Como han dicho otras personas, la creación de un mapa en el extremo frontal agrega resmas 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 lo que necesita es una página web: un formulario que le permite seleccionar qué parámetros de consulta desea. Al pulsar "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;)

    
respondido por el canisrufus 19.08.2011 - 19:05
8

GeoDjango

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

    
respondido por el Sean 19.08.2011 - 17:30
5

Si no quieres / necesitas 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 tienen un formato agradable, importar los datos a la base de datos debería ser simple. Puede escribir un script que puede generar las instrucciones INSERT. Las consultas que usted describe suenan como que también son manejables.

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

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

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

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

    
respondido por el Nate 19.08.2011 - 17:32
4

Puede encontrar una descripción general de los problemas de diseño y desarrollo de las aplicaciones de creación de mapas web, además del código fuente completamente documentado para una aplicación de creación de mapas web basada en Google Maps y en la base de datos espacio-temporal PostgreSQL / PostGIS, en mi relativamente reciente maestría en Ciencias de la Computación disertación: " Diseño y desarrollo de un prototipo que aborda la gestión, el análisis y la entrega de datos vectoriales ambientales espacio-temporales utilizando tecnología Open Source. 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 desde enlace

    
respondido por el Ezio 17.11.2011 - 17:22

Lea otras preguntas en las etiquetas