12 votos

¿Cómo utilizar PostGIS para manejar flujos de trabajo de geoprocesamiento complejos?

Nuestra organización está considerando trasladar nuestro flujo de trabajo de geoprocesamiento a PostGIS. Actualmente utilizamos ArcGIS, con una plétora de herramientas personalizadas de Python utilizadas en ModelBuilder. Estamos trasladando la mayor parte de nuestros datos a PostGIS para que sean consumidos por una variedad de aplicaciones, y ahora nos preguntamos si también tiene sentido realizar el procesamiento de datos allí.

Tratamos los datos para que sean compatibles con nuestro software. Un cliente compra nuestro software, nos da sus datos y nosotros los procesamos para optimizarlos para su uso en nuestro software. Esto nos obliga a crear una serie de herramientas para manejar diferentes calidades de datos de entrada. No podemos esperar recibir datos en un formato o esquema concreto, así que creamos herramientas para asignar campos de entrada a campos de salida, analizar campos individuales en campos múltiples, fusionar conjuntos de datos múltiples, etc. También realizamos uniones espaciales, intersecciones, recortar espacios en blanco y concatenar campos, y muchas otras operaciones comunes. PostGIS parece ser perfectamente capaz de realizar todas nuestras necesidades de procesamiento.

Para los que utilizáis PostGIS para el tratamiento de los datos, ¿tenéis algún consejo de organización, herramientas a utilizar, etc.?

  • ¿lo utilizas junto con el procesamiento en python de QGIS?
  • ¿hay gente que utiliza un ORM de Python para el procesamiento no web? Me he inclinado por usar GeoDjango ya que tiene un ORM de Python para PostGIS. Nuestra prueba inicial de usar PostGIS para procesar datos tiene muchos bloques de texto SQL grandes en código Python y estamos pensando que el ORM de GeoDjango puede ayudar a crear un código más manejable y legible. También está el GeoAlquimia ORM que interactúa de forma similar con PostGIS, y no parece ser tan específico para la web como lo es Django.

No he oído que la gente utilice PostGIS para hacer geoprocesamiento tanto como veo que la gente utiliza QGIS o ArcGIS, así que quiero saber si es una alternativa comparable.

8voto

Lars Mæhlum Puntos 4569

Me gusta mucho utilizar PostGIS para el geoprocesamiento.

Mis dos razones principales son:

1) A menudo es mucho más rápido realizar tareas complejas en la base de datos porque se cuenta con la ayuda del planificador de consultas para hacer las cosas en el orden correcto.

2) Simplemente guarda las líneas sql que has utilizado en un archivo de texto y tendrás una muy buena documentación de lo que has hecho.

Mi flujo de trabajo, si las tareas implican muchos "pasos", suele ser algo así:
1- Construir partes de la consulta o toda ella dependiendo de la naturaleza de la tarea
2- Probar la consulta en una pequeña parte del conjunto de datos para ver cómo funciona
3- Haga algunos ajustes si es necesario
4- Ejecutar la consulta en todo el conjunto de datos
5- Guarde las líneas en un archivo de texto con algunas notas.
Todo esto suele ser tan rápido como iniciar ArcGIS y esperar una licencia del servidor de licencias.

5voto

Arthur Puntos 1172

Utilizamos PostGIS y algún tipo de entorno de programación Python para una serie de servicios web de geoprocesamiento que hemos desarrollado; ¡no hay quejas!

GeoDjango es una gran opción si estás trabajando principalmente (o exclusivamente) con características para una aplicación web. No soporta PostGIS Raster o el tipo de datos raster de PostGIS 2.0. Viene de forma nativa con la última versión de Django, ahora. Puedes compensar la falta de soporte de rasterización y la robustez general utilizando consultas SQL personalizadas y sin procesar en Django.

Para aplicaciones de geoprocesamiento más robustas, y sobre todo si quieres utilizar un modelo relacional de objetos, prueba GeoAlchemy2. La biblioteca original de GeoAlchemy, que extiende SQLAlchemy, ofrece soporte para datos de características; GeoAlchemy2 lo amplía proporcionando soporte (limitado) para el nuevo tipo de datos raster en PostGIS 2.0.

Además, siempre están los enlaces de Python para GDAL y OGR.

3voto

Scro Puntos 1729

Aunque es posible, es difícil imaginar que se quiera hacer mucho geoprocesamiento dentro de un motor de base de datos o un marco web. Te recomiendo que mires las bibliotecas de código subyacentes -- geos, proj.4, y gdal. Hay enlaces o bibliotecas de Python para las tres. Otra opción para mirar es el plugin de geoproceso Sextante para QGIS, ya que permite la construcción de modelos/flujos de trabajo.

Algunos otros pensamientos:

No descarte el uso de PostGIS. Ofrece buenas capacidades de almacenamiento y de servidor, y expone algunas funcionalidades de geos y proj.4 a través de SQL. También funciona bien con las otras herramientas mencionadas: Django, QGIS y Python.

Además del posible uso del mencionado plugin de Sextante, QGIS es bueno para la visualización, tiene algunas herramientas para trabajar con postgres, y también incluye una consola de Python.

Si buscas un ORM y quieres un front-end web, Django lo hará. Si no te importa una interfaz menos que sexy, las páginas de administración te darán una interfaz CRUD con relativamente poco esfuerzo - incluso la edición de geometría si usas GeoDjango.

3voto

Ricardo Reyes Puntos 3428

Echa un vistazo a ETL específicamente, FME para las operaciones espaciales (o el código abierto GeoKettle ).

Me gusta mucho usar FME, ya que crea un flujo de trabajo visual, y puedes separar la lógica de las operaciones espaciales, las uniones, las fusiones... todo, y puedes trabajar con formatos que no son de base de datos, y con diferentes bases de datos... Puedes hacer mucho, y fácil, y rápido. Si tienes experiencia con model builder, te harás con él rápidamente, y además hay mucha documentación online.

La única desventaja de la FME es que cuesta dinero. Pero creo que merece la pena.

Una alternativa al uso de FME es probablemente GDAL y OGR junto con quizás Python para unirlo. O, como dices, hacerlo todo en PostgreSQL. Creo que un ETL tiene un papel importante en el manejo de datos espaciales, y hace mucho que no se puede hacer sólo en su base de datos.

No lo he utilizado, pero GeoServer proporciona una implementación de WPS No he utilizado esto, pero otros pueden comentar cómo esto podría ser útil para usted?

No puedo comentar sobre el uso de GeoDjango, pero pensé que era más un CMS, como un front-end para ver datos.

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