Suite

Les fichiers .sbn et .sbx (index spatial) accéléreront-ils les opérations dans GDAL/OGR ?

Les fichiers .sbn et .sbx (index spatial) accéléreront-ils les opérations dans GDAL/OGR ?


J'essaie de croiser de grands ensembles de données en OGR et en python à l'aide de requêtes SQL telles queST_IntersectsetST_Contient. Ces opérations s'exécutent très rapidement dans ArcMap mais je conçois un système pour les automatiser, utilisant donc OGR et python. Mon code prend une éternité à exécuter (jours). J'ai lu récemment que l'indexation spatiale aiderait à accélérer ces opérations. Je peux générer ces fichiers en indexant les fichiers de formes dans ArcMap, qui génère des fichiers .sbx et .sbn. Si ces fichiers accompagnent mes fichiers .shp .dbf .shx et .prj dans les répertoires correspondants, la rapidité des opérations en bénéficiera-t-elle ?

Sinon, la vitesse de fonctionnement augmentera-t-elle si les fichiers de formes sont chargés dans une base de données postGIS au lieu d'être lus via le système de fichiers ?


La réponse est oui. Le secret des fichiers .sbn et .sbx a fait l'objet d'une ingénierie inverse et GDAL les supporte depuis la version 1.10. Lis

http://erouault.blogspot.fr/2012_06_01_archive.html

La page de manuel GDAL http://www.gdal.org/drv_shapefile.html donne également ces informations :

À partir d'OGR 1.10, il peut également utiliser les fichiers d'index spatial ESRI (.sbn / .sbx), mais leur écriture n'est pas prise en charge actuellement.

Cependant, votre problème peut signifier que les opérations OGR que vous utilisez n'utilisent pas d'index spatial. Cela ne se fait pas automatiquement mais quelqu'un doit écrire le code. L'option -spat dans ogr2ogr prend certainement en charge les deux variantes d'index spatial des fichiers de formes.


Le mystère sbn (et sbx) a été résolu en 2012 : Geospatial Python : SBN Mystery - Résolu !

La communauté SIG a désormais accès aux formats de fichier sbn et sbx ainsi qu'à l'algorithme de regroupement des entités d'un fichier de formes en « bacs spatiaux ».

Le premier résultat de la rétro-ingénierie du format .sbn est le travail de Marc Pfister (Outils pour créer le format d'indexation spatiale .sbn d'ESRI) et après, le support a été ajouté dans GDAL >= 1.10, (GDAL/OGR utilisant Shapefile natif .sbn index spatial) comme le dit ser30184.

Mais il s'agit d'un arbre d'index spatial simple et il existe de nombreuses autres solutions en Python (Pypi : index spatial, moyen le plus rapide de joindre de nombreux points à de nombreux polygones en python et de nombreux autres exemples dans GIS SE)

Le moyen le plus rapide à l'heure actuelle est la combinaison de Fiona (un autre wrapper Python de la bibliothèque OGR C/C++) , Shapely (enveloppe Python de la bibliothèque C++ Geos) et Rtree ( wrapper Python de la bibliothèque C libspatialindex).