Notre organisation envisage de déplacer notre workflow de géotraitement vers PostGIS. Nous utilisons actuellement ArcGIS, avec une pléthore d'outils Python personnalisés utilisés dans ModelBuilder. Nous déplaçons la plupart de nos données dans PostGIS pour qu'elles soient utilisées par une variété d'applications, et nous demandons maintenant s'il est également judicieux d'y effectuer également le traitement des données.
Nous traitons les données pour qu'elles soient compatibles avec notre logiciel. Un client achète notre logiciel, nous donne ses données et nous les traitons pour les optimiser afin de les utiliser dans notre logiciel. Cela nous oblige à créer une variété d'outils pour gérer différentes qualités de données d'entrée. Nous ne pouvons pas nous attendre à recevoir des données dans un format ou un schéma particulier, nous créons donc des outils pour mapper les champs d'entrée aux champs de sortie, analyser des champs uniques en plusieurs champs, fusionner plusieurs jeux de données, etc. Nous effectuons également des jointures spatiales, des intersections, des espaces blancs. et concaténer des champs et de nombreuses autres opérations courantes. PostGIS semble parfaitement capable de répondre à tous nos besoins de traitement.
Pour ceux d'entre vous qui utilisent PostGIS pour faire votre traitement de données, avez-vous des conseils d'organisation, d'outils à utiliser, etc.?
- l'utilisez-vous en conjonction avec le traitement python QGIS?
- les gens utilisent-ils un ORM Python pour un traitement non Web? Je penche pour l'utilisation de GeoDjango car il dispose d'un Python ORM pour PostGIS. Notre test initial d'utilisation de PostGIS pour traiter des données contient de nombreux blocs de texte SQL volumineux en code Python et nous pensons que l'ORM GeoDjango peut aider à créer un code plus facile à gérer et lisible. Il y a aussi l' ORM GeoAlchemy qui interagit de manière similaire avec PostGIS, et ne semble pas être aussi spécifique au Web que Django.
Je n'ai pas entendu parler de personnes utilisant PostGIS pour faire du géotraitement autant que je vois des personnes utilisant QGIS ou ArcGIS, donc je veux savoir si c'est une alternative comparable.
Réponses:
J'aime vraiment utiliser PostGIS à des fins de géotraitement.
Mes deux résons principaux sont:
1) Il est souvent beaucoup plus rapide d'effectuer des tâches complexes dans la base de données car vous obtenez l'aide du planificateur de requêtes pour faire les choses dans le bon ordre.
2) Enregistrez simplement les lignes sql que vous avez utilisées dans un fichier texte et vous avez une très bonne documentation de ce que vous avez fait.
Mon flux de travail, si les tâches impliquent un grand nombre d '"étapes" pour être quelque chose comme:
1- Construire des parties de la requête ou tout cela en fonction de la nature de la tâche
2- Tester la requête sur une petite partie de l'ensemble de données pour voir comment cela fonctionne
3- Faites quelques ajustements si nécessaire
4- Exécutez la requête sur l'ensemble de données
5- Enregistrez les lignes dans un fichier texte avec quelques notes.
Tout cela est souvent aussi rapide que de démarrer ArcGIS et d'attendre une licence du serveur de licences.
la source
Nous utilisons PostGIS et une sorte d'environnement de programmation Python pour un certain nombre de services Web de géotraitement de production que nous avons développés; aucune plainte!
GeoDjango est un excellent choix si vous travaillez principalement (ou exclusivement) avec des fonctionnalités pour une application Web. Il ne prend pas en charge PostGIS Raster ou le type de données raster de PostGIS 2.0. Il vient nativement avec la dernière version de Django, maintenant. Vous pouvez compenser un manque de prise en charge raster et de robustesse globale en utilisant des requêtes SQL brutes personnalisées dans Django.
Pour des applications de géotraitement plus robustes, et en particulier si vous cherchez à utiliser un modèle relationnel objet, essayez GeoAlchemy2. La bibliothèque GeoAlchemy d'origine, qui étend SQLAlchemy, prend en charge les données d'entités; GeoAlchemy2 l'étend en fournissant un support (limité) pour le nouveau type de données raster dans PostGIS 2.0.
Et puis, il y a toujours les liaisons Python pour GDAL et OGR!
la source
Bien que cela soit possible, il est difficile d'imaginer que vous voudriez faire beaucoup de géotraitement à l'intérieur d'un moteur de base de données ou d'une infrastructure Web. Je vous recommande de regarder les bibliothèques de code sous-jacentes - geos, proj.4 et gdal. Il existe des liaisons ou des bibliothèques Python pour les trois. Une autre option à examiner est le plugin de géotraitement Sextante pour QGIS, car il permet la construction de modèles / workflows.
Quelques autres réflexions:
N'excluez pas l'utilisation de PostGIS. Il offre de bonnes capacités de stockage et de serveur, et expose certaines fonctionnalités geos et proj.4 via SQL. Il fonctionne également bien avec les autres outils mentionnés: Django, QGIS et Python.
Outre l'utilisation possible du plugin Sextante susmentionné, QGIS est bon pour la visualisation, dispose de certains outils pour travailler avec postgres et comprend également une console Python.
Si vous recherchez ORM et que vous souhaitez un frontal web, Django le fera. Si cela ne vous dérange pas une interface moins que sexy, les pages d'administration vous donneront une interface CRUD avec relativement peu d'effort - même la modification de la géométrie si vous utilisez GeoDjango.
la source
Jetez un œil à ETL , en particulier à FME pour les opérations spatiales (ou à la GeoKettle open source ).
J'aime vraiment utiliser FME, car il crée un flux de travail visuel, et vous pouvez séparer la logique des opérations spatiales, des jointures, des fusions ... tout, et vous pouvez travailler avec des formats autres que des bases de données et différentes bases de données ... Vous pouvez faire beaucoup et facile et rapide. Si vous avez de l'expérience avec le constructeur de modèles, vous le récupérerez rapidement, et il y a beaucoup de documentation en ligne.
Le seul inconvénient de FME est qu'il coûte de l'argent. Mais je pense que ça vaut le coup.
Une alternative à l'utilisation de FME est probablement GDAL et OGR avec peut-être Python pour les lier ensemble. Ou, comme vous le dites, tout faire dans PostgreSQL. Je pense qu'un ETL a un rôle important dans la gestion des données spatiales, et il fait beaucoup de choses que vous ne pouvez pas faire uniquement dans votre base de données.
Je ne l'ai pas utilisé, mais GeoServer fournit une implémentation de WPS , je ne l'ai pas utilisée, mais d'autres peuvent commenter comment cela pourrait vous être utile?
Je ne peux pas commenter l'utilisation de GeoDjango, mais je pensais que c'était plus un CMS, comme un frontal pour visualiser les données.
la source