web-dev-qa-db-fra.com

sp :: over () pour l'analyse de point dans un polygone

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 .enter image description here

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?

24
DotPi

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) 
19
Simon O'Hanlon

Trouvé cette syntaxe concise et intuitive pour over:

   pnts[ind_adm,] 

à partir de this Intro document

18
Arto Pihlaja

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)
7
rafa.pereira