Nuestra organización está considerando trasladar nuestro flujo de trabajo de geoprocesamiento a PostGIS. Actualmente estamos utilizando ArcGIS, con una gran cantidad de herramientas Python personalizadas utilizadas en ModelBuilder. Estamos trasladando la mayoría de nuestros datos a PostGIS para que sean consumidos por una variedad de aplicaciones, y ahora estamos preguntando si también tiene sentido realizar el procesamiento de datos allí.
Procesamos datos para que sean compatibles con nuestro software. Un cliente compra nuestro software, nos proporciona sus datos y los procesamos para que se optimicen para su uso en nuestro software. Esto requiere que construyamos una variedad de herramientas para manejar diferentes calidades de datos de entrada. No podemos esperar recibir datos en un formato o esquema particular, por lo que creamos herramientas para asignar campos de entrada a campos de salida, analizar campos individuales en múltiples campos, fusionar múltiples conjuntos de datos, 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 aquellos de ustedes que usan PostGIS para procesar sus datos, ¿tienen algún consejo sobre organización, herramientas para usar, etc.?
- ¿Lo usa junto con el procesamiento QGIS python?
- ¿Las personas utilizan un ORM de Python para el procesamiento no web? Me he inclinado hacia el uso de GeoDjango ya que tiene un ORM de Python para PostGIS. Nuestra prueba inicial de uso de PostGIS para procesar datos tiene muchos bloques de texto SQL grandes en código Python y estamos pensando que GeoDjango ORM puede ayudar a crear un código más manejable y legible. También está el GeoAlchemy ORM que interactúa de manera similar con PostGIS, y no parece ser tan específico de la web como lo es Django.
No he oído hablar de personas que usan PostGIS para hacer geoprocesamiento tanto como veo personas que usan QGIS o ArcGIS, por lo que quiero saber si es una alternativa comparable.
fuente
Respuestas:
Realmente me gusta usar PostGIS para fines de geoprocesamiento.
Mis dos resons principales son:
1) A menudo es mucho más rápido realizar tareas complejas en la base de datos porque obtiene la ayuda del planificador de consultas para hacer las cosas en el orden correcto.
2) Simplemente guarde las líneas sql que utilizó en un archivo de texto y tendrá una muy buena documentación de lo que ha hecho.
Mi flujo de trabajo, si las tareas involucran muchos "pasos", solía ser algo como:
1- Construir partes de la consulta o todas dependiendo de la naturaleza de la tarea
2- Probar la consulta en una pequeña parte del conjunto de datos para vea cómo funciona
3- Realice algunos ajustes si es necesario
4- Ejecute 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.
fuente
Utilizamos PostGIS y algún tipo de entorno de programación Python para una serie de servicios web de geoprocesamiento de producción que hemos desarrollado; ¡sin quejas!
GeoDjango es una gran opción si está trabajando principalmente (o exclusivamente) con funciones para una aplicación web. No es compatible con el tipo de datos de trama PostGIS Raster o PostGIS 2.0. Viene de forma nativa con la última versión de Django, ahora. Puede compensar la falta de soporte de ráster y la solidez general mediante el uso de consultas SQL sin formato personalizadas en Django.
Para aplicaciones de geoprocesamiento más robustas, y particularmente si está buscando usar un modelo relacional de objetos, pruebe GeoAlchemy2. La biblioteca original de GeoAlchemy, que extiende SQLAlchemy, proporciona soporte para datos de características; GeoAlchemy2 lo extiende al proporcionar soporte (limitado) para el nuevo tipo de datos ráster en PostGIS 2.0.
Y luego, ¡siempre están los enlaces de Python para GDAL y OGR!
fuente
Aunque es posible, es difícil imaginar que desearía hacer mucho geoprocesamiento dentro de un motor de base de datos o un marco web. Le recomiendo que mire las bibliotecas de código subyacentes: geos, proj.4 y gdal. Hay enlaces o bibliotecas de Python para los tres. Otra opción a considerar es el complemento de geoprocesamiento Sextante para QGIS, ya que permite la construcción de modelos / flujos de trabajo.
Algunos otros pensamientos:
No descarte el uso de PostGIS. Proporciona buenas capacidades de almacenamiento y servidor, y expone algunas funciones 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 plugin Sextante mencionado anteriormente, QGIS es bueno para la visualización, tiene algunas herramientas para trabajar con postgres y también incluye una consola Python.
Si está buscando ORM y quiere un front-end web, Django lo hará. Si no le importa una interfaz poco atractiva, las páginas de administración le proporcionarán una interfaz CRUD con relativamente poco esfuerzo, incluso la edición de geometría si usa GeoDjango.
fuente
Eche un vistazo a ETL , específicamente, FME para operaciones espaciales (o GeoKettle de código abierto ).
Realmente me gusta usar FME, ya que crea un flujo de trabajo visual, y puede separar la lógica para operaciones espaciales, uniones, fusiones ... todo, y puede trabajar con formatos que no son de base de datos y diferentes bases de datos ... Puede hacer mucho, fácil y rápido. Si tiene experiencia con el creador de modelos, lo recogerá rápidamente, además hay mucha documentación en línea.
La única desventaja de FME es que cuesta dinero. Pero creo que vale la pena.
Una alternativa al uso de FME es probablemente GDAL y OGR junto con quizás Python para unirlos. O, como dices, hacerlo todo en PostgreSQL. Creo que un ETL tiene un papel importante en la disputa de datos espaciales, y hace mucho que no puedes hacer solo en tu base de datos.
No lo he usado, pero GeoServer proporciona una implementación de WPS , no lo he usado, pero otros pueden comentar sobre 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.
fuente