21 votos

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

Mi organización recopila muchos datos de seguimiento medioambiental (caudal de los arroyos, química del agua, etc.), la mayoría de los cuales se almacenan actualmente en Excel. Me gustaría pasarlo todo a una base de datos, probablemente PostGIS, pero necesito que los datos sean accesibles para personas sin conocimientos de bases de datos (ni SQL ni nada por el estilo).

Me gustaría disponer de algún tipo de interfaz sencilla para mi base de datos en la que el usuario seleccionara una estación de control de su interés, un tipo de variable (por ejemplo, la concentración de nitratos en un arroyo) y un intervalo de tiempo. La base de datos devolvería los datos solicitados en formato csv, que el usuario podría descargar a su ordenador. En un mundo ideal, el front-end mostraría un mapa de todas las estaciones de control en el que se podría hacer clic, pero si resulta más fácil, para empezar estaría bien una lista desplegable de los sitios disponibles. Supongo que este front-end sería probablemente un sitio web, pero no tiene por qué serlo.

¿Qué grado de dificultad entraña, por favor, y cuáles son mis distintas opciones? No soy un experto en bases de datos ni mucho menos, pero tengo una sólida formación en SIG de escritorio y me gusta escribir sencillos scripts en Python y jugar con PostGIS, SpatiaLite y las geodatabases ESRI Personal. Nunca he hecho ningún desarrollo web o web GIS, pero estoy dispuesto a aprender.

Pasé parte del día de ayer explorando algunas de las excelentes Tutoriales OpenGeo . Este enfoque parece prometedor, y al menos ahora puedo ver cómo conseguir que mis datos se muestren en un sitio web. Lo que me resulta menos obvio es cómo permitir que el usuario consulte la base de datos y obtenga los resultados.

Mi pregunta: ¿En qué tipo de estructura de software debería pensar para un proyecto como éste? p. ej.

PostGIS + GeoServer + Something else?

¿Qué otras opciones existen que debería investigar?

En un principio, sería preferible una solución sencilla pero funcional: si puedo montar un prototipo básico, me servirá para justificar que dedique más tiempo a aprender a hacer las cosas "como es debido". El código abierto también es un requisito, ya que no dispongo de presupuesto para ello hasta que pueda demostrar algunas ventajas.

¡Muchas gracias!

13voto

Mat Fergusson Puntos 101

Si ya sabes manejarte con Python y SQL, no te resultará muy difícil crear un sitio web utilizando un framework web de Python. Se me ocurren dos muy sencillos: cherry.py y web.py. Creo que aprender a usar el mapeador objeto-relacional de Django puede ser más trabajo del que vale la pena.

Python tiene una biblioteca llamada psycopg2 (http://initd.org/psycopg/, y un tutorial: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ) que permite ejecutar fácilmente consultas 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 de dicha consulta una brisa.

Como ya han dicho otros, crear un mapa en el front end añade montones de complejidad. Necesitarás algo como OpenLayers para mostrar los mapas, y algo como MapServer o GeoServer para crear imágenes de mapas a partir de tu base de datos (u otras fuentes de datos). Eso sería probablemente mejor como un segundo paso.

Por ahora, "todo" lo que parece que necesitas es una página web: un formulario que te permita seleccionar qué parámetros de consulta quieres. Al pulsar "enviar", los parámetros de consulta se envían al servidor (Apache sería una buena opción), que ejecuta tu script, el cual consulta la base de datos, crea un archivo CSV apropiado y lo devuelve al navegador. Muy fácil ;)

8voto

Adam Puntos 343

GeoDjango

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

5voto

Scott Noyes Puntos 611

Si no quieres/necesitas crear un mapa. Todo lo que necesitas es un servidor web y un lenguaje de programación (yo 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 Excel están bien formateados, la importación de los datos a la base de datos debería ser sencilla. Puedes escribir un script que genere las sentencias INSERT. Las consultas que describes también parecen manejables.

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

Otras herramientas cartográficas gratuitas que puedes consultar son Mapserver y MapGuide. MapGuide Open Source hace cosas muy interesantes, pero es más complicado y su documentación está un poco atrasada.

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

Si estás familiarizado con python yo miraría GeoDjango... No sé mucho sobre él personalmente, pero he oído cosas buenas

4voto

GetFree Puntos 495

En mi relativamente reciente tesis de licenciatura en Informática se ofrece una visión general del diseño y desarrollo de aplicaciones de cartografía web, así como el código fuente completamente documentado de una aplicación de cartografía web medioambiental basada en Google Maps y la base de datos espaciotemporal PostgreSQL/PostGIS: " Diseño y desarrollo de un prototipo que aborde la gestión, el análisis y la entrega de datos vectoriales medioambientales espaciotemporales utilizando tecnología de código abierto. Marco general y estudio de caso centrado en la gestión de las aguas subterráneas en una zona costera. "

La tesis puede descargarse de http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X