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!
fuente
Respuestas:
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;)
fuente
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.
fuente
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
fuente
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
fuente