Suite

Dissoudre dans ogr / python

Dissoudre dans ogr / python


J'ai un ensemble d'environ 100 000 polygones (format .shp). En utilisant python et ogr, je voudrais les dissoudre dans une classe d'entités pour accélérer les autres opérations en aval. La commande que j'utilise est :

ogr2ogr -f "ESRI Shapefile" dissolve.shp input.shp -dialect sqlite -sql "select ST_Collect(Geometry),common_attribute from input GROUP BY common_attribute"

La commande prend un certain temps à s'exécuter (maintenant plus d'une heure, probablement beaucoup plus longtemps). Le fondu enchaîné dans ArcGIS et le regroupement par champ commun donnent le résultat souhaité en quelques secondes seulement. Mes questions sont (1) Pourquoi ArcGIS est-il tellement plus rapide ? (2) Comment puis-je accélérer cette opération


Lorsque vous dites à GDAL d'utiliser le dialecte SQLite SQL, la plus grande partie du travail est effectuée par la bibliothèque Spatialite. Il y a quelques semaines, un autre utilisateur a signalé que ST_Collect dans Spatialite était assez lent pour toutes les tâches plus importantes https://groups.google.com/forum/#!topic/spatialite-users/t3QrvA1qQyg.

Une semaine plus tard, Alessandro Furieri a annoncé une optimisation du code qui a rendu ST_Collect environ 400 fois plus rapide https://groups.google.com/forum/#!topic/spatialite-users/drNS_tiquJc.

Malheureusement, il faudra un certain temps avant que tous les utilisateurs de GDAL puissent profiter de cette accélération. Le correctif doit d'abord aller à la version publiée de Spatialite et GDAL doit être construit avec cette version. Ceux qui peuvent construire des programmes peuvent construire Spatialite à partir du tronc et l'utiliser pour construire GDAL.


Voir la vidéo: GDAL Tutorial #1: Introduction + Installation