Suite

Itérer sur le bloc de données de polygones spatiaux dans R


J'essaie d'itérer sur les lignes d'un bloc de données de polygone spatial dans R, mais je ne parviens pas à trouver la bonne indexation. Je ne veux pas sélectionner par attributs, mais plutôt simplement itérer sur le bloc de données de polygone spatial.


Si vous n'avez pas besoin d'appliquer un sous-ensemble conditionnel, vous pouvez simplement utiliser un index de crochets sur les lignes, sans faire référence à l'emplacement @data.

library(sp) data(meuse) coordonnees(meuse) <- ~x+y # Sous-ensemble première observation et plot p <- meuse[1,] plot(meuse, pch=20) plot(p, pch=20, cex= 1.5, col="red", add=TRUE) # afficher la valeur elev pour chaque observation for(i in 1:nrow(meuse)) { p <- meuse[i,] cat("elev", i, [email protected] $elev, "
") }

En utilisant le "diviser" fonction de la bibliothèque de base permet d'utiliser appliquer -itérateurs de style (plus rapides que les boucles "for" et beaucoup plus efficaces en mémoire pour les grands ensembles de données)

par exemple :

library("rgdal") shp<-"MY_SHP_PATH" my_layer <- readOGR(shp , GDAL1_integer64_policy = TRUE) split_layer=split(my_layer , my_layer$KEY_FIELD) sapply(split_layer, function(my_geom)<- #GET ID id$ ID_FIELD #GET NAME nom<-my_geom$NAME_FIELD #GET élévation élévation<-my_geom$ELEVATION_FIELD # + pour obtenir la géométrie (s'il n'y a qu'une seule forme de polygone dans l'élément) #… sinon itérer sur "polygones"… coords_poly<-my_geom @polygones[[1]]@polygones[[1]]@coords #etc… })

'

Cela devrait également fonctionner pour les points ("SpatialPointsDataFrame") et les types associés…