Je veux joindre spatialement avec SpatialPolygonsDataFrame et SpatialPointsDataFrame.
obtenir une seule donnée ponctuelle dans plusieurs polygones, sous le code.
sp::over(meuse, srdf)
Certains points de données dans plusieurs polygones. Je veux que les données de points conservent toutes les données de polygone.
par exemple: point A dans les polygones a et b.
peut maintenant obtenir:
| point | polygon |
-------------------
| A | a |
Je reçois comme ça:
| point | polygon |
-------------------
| A | a |
| A | b |
Utiliser des données:
coordinates(meuse) = ~x+y
sr1=Polygons(list(Polygon(cbind(c(180114, 180553, 181127, 181477, 181294, 181007, 180409,
180162, 180114), c(332349, 332057, 332342, 333250, 333558, 333676,
332618, 332413, 332349)))),'1')
sr2=Polygons(list(Polygon(cbind(c(180042, 180545, 180553, 180314, 179955, 179142, 179437,
179524, 179979, 180042), c(332373, 332026, 331426, 330889, 330683,
331133, 331623, 332152, 332357, 332373)))),'2')
sr3=Polygons(list(Polygon(cbind(c(179110, 179907, 180433, 180712, 180752, 180329, 179875,
179668, 179572, 179269, 178879, 178600, 178544, 179046, 179110),
c(331086, 330620, 330494, 330265, 330075, 330233, 330336, 330004,
329783, 329665, 329720, 329933, 330478, 331062, 331086)))),'3')
sr4=Polygons(list(Polygon(cbind(c(180304, 180403,179632,179420,180304),
c(332791, 333204, 333635, 333058, 332791)))),'4')
sr5=Polygons(list(Polygon(cbind(c(179500, 180000, 180000, 179500),
c(331000, 331000, 331500, 331500)))), '5')
sr=SpatialPolygons(list(sr1,sr2,sr3,sr4, sr5))
srdf=SpatialPolygonsDataFrame(sr, data.frame(row.names=c('1','2','3','4', '5'), PIDS=1:5, y=runif(5)))
st_join
est maintenant dans la version CRAN publiéeUtilisation
over(meuse, srdf, returnList=TRUE)
Le premier point recouvre un polygone, le 135e point en recouvre deux:
Notez que si vous ne voulez que les index de polygones superposés et pas tous les attributs, convertissez simplement les polygones en SpatialPolygons et vous obtenez une liste de numéros d'index plutôt que des blocs de données avec tous les attributs dans:
la source
Je peux obtenir data.frame sous le code:
C'est la
.id
colonne ajoutée automatiquement .Si vous obtenez des données de meuse filtrées ou modifiées, faites-le sous le code.
la source