J'ai un fichier de formes nommé "ind_adm" et un SpatialPointsDataFrame appelé "pnts". Les "pnts" contiennent des points générés de manière aléatoire et certains d'entre eux chevauchent le polygone. Voir l'image ci-dessous .
Maintenant, je veux faire un point dans l’analyse des polygones, c’est-à-dire savoir quels points se trouvent à l’intérieur du polygone gris qui représente la frontière de l’Inde. Pour cela, j'utilise la fonction over () dans la bibliothèque sp.
pt.in.poly <- sp::over(ind_adm, pnts, fn = mean) #do the join
Cependant, le résultat que je reçois est
>pt.in.poly
values
0 6.019467
Je devrais en fait obtenir l'index des points qui sont "dans" le polygone.
Où vais-je mal?
Vous ne devriez pas fournir de fonction. Vous agrégez les valeurs d'attribut de vos points sur la géométrie du polygone (c'est-à-dire que le nombre renvoyé est la valeur mean
de l'attribut des points compris dans le polygone). De plus, vous avez x
et y
dans le mauvais sens pour ce que vous voulez faire. Devrait être...
over( pnts , ind_adm , fn = NULL)
Vous pouvez utiliser le package point.in.poly
fom spatialEco
. Il "intersecte les classes d'entités ponctuelles et polygonales et ajoute des attributs de polygone aux points".
library(spatialEco)
new_shape <- point.in.poly(pnts, ind_adm)