Lire uniquement une partie d'un fichier de formes ESRI dans R

10

J'ai un très grand fichier de formes ESRI (> 8000 polygones, le fichier .shp est> 32 Mo), que je veux lire dans R sur Windows 7.

Je connais rgdal et readOGR (). Cependant, avec cette taille de fichier de formes, la lecture de l'ensemble du fichier de formes en mémoire est un processus très lent. De plus, je ne suis intéressé que par quelques polygones groupés (<100) sur les 8 000 contenus dans le fichier de formes. Le processus pour lequel je dois le faire est très répétitif, c'est-à-dire que le fichier de formes doit être chargé plusieurs fois, il est donc actuellement très lent.

Par conséquent, je me demande s'il est possible de lire uniquement une partie du fichier de formes afin d'accélérer le processus. Il semble peu pratique de charger une telle quantité massive de données, puis d'en supprimer la plupart.

bmz
la source
quelle plateforme utilisez-vous? Si vous avez accès à ArcGIS, je suppose que vous pouvez créer un script dans ArcPy qui effectue la sélection de sous-ensemble, puis exécute un processus R à partir du script python. C'est certainement possible ... Exécutez une recherche Google pour exécuter du code R à partir de python.
GeoJohn
3
Essayez peut-être d'exporter dans un nouveau fichier de formes la partie de vos données qui est importante pour vous, puis travaillez dessus dans R.
ami
cela fonctionnera probablement avec sf. Mais enregistrez-le au format d'espace de travail R avec saveRDS. Il existe des moyens de stocker de manière générique dans SQLite ou similaire, mais je doute que cela soit nécessaire
mdsumner

Réponses:

8

La seule chose qui me vient à l'esprit est de tirer parti de la nouvelle bibliothèque "sfr" et de sa classe d'entités simple associée pour le sous-ensemble. La bibliothèque sfr est actuellement disponible sur GitHub et voici un tutoriel pour vous aider à démarrer.

Je ne crois pas que vous pouvez diffuser des données sur la base d' une requête sous - ensemble cependant, ceci à une vitesse de location en temps de lecture considérablement et est censé être l' avenir des classes spatiales R .

Une autre option serait de stocker vos données spatiales dans une base de données (par exemple, PostGIS) et d'interroger à partir de la base de données. Cela peut être un moyen extrêmement efficace de traiter des données volumineuses.

Jeffrey Evans
la source
2
Le sfpackage est disponible sur CRAN depuis la version 0.2 (2016-10-26): cran.r-project.org/web/packages/sf/index.html
rcs
1

Je pense que l'utilisation d'un SIG tel que QGIS et la sélection des fonctionnalités dont vous avez besoin serait une bonne approche.
Si vous devez fusionner les résultats, vous pouvez créer un fichier avec les 7900 polygones que vous ne souhaitez pas traiter, puis traiter les 100 polygones et les rejoindre après le traitement.

MichaelStoner
la source
0

Vous pouvez créer un sous-ensemble d'un fichier de formes à l'aide de la org2ogrcommande, comme illustré ici:

ogr2ogr sélection d'entités par attributs

Vous devrez cependant déterminer une condition pour sélectionner les fonctionnalités que vous souhaitez.

Spacedman
la source