Calculer l'aire de chaque polygone dans R

9

Je travaille avec un fichier de formes contenant de nombreux polygones.

Comment puis-je ajouter un champ supplémentaire nommé "area_sqkm" et calculer la zone pour chaque polygone dans le fichier de formes?

HLe
la source
1
Quelles bibliothèques avez-vous installées et qu'avez-vous essayé?
GISKid
5
rgeos :: gArea (x, byid = TRUE)
mdsumner
1
Bienvenue sur gis.stackexchange! Veuillez noter qu'une bonne question sur ce site devrait montrer un certain degré de recherche de votre part, c'est-à-dire ce que vous avez essayé et - le cas échéant - le code jusqu'à présent. Pour plus d'informations, vous pouvez consulter notre FAQ .
underdark

Réponses:

19

Tu peux faire

library(raster)
x <- shapefile('file.shp')
crs(x)
x$area_sqkm <- area(x) / 1000000

En supposant que votre crs est la longitude / latitude ou avec le mètre comme unité de distance

Robert Hijmans
la source
1
les raster::area()données non projetées sont-elles plus précises que rgeos::gArea()les données projetées?
Richard DiSalvo
1
Ça peut être. Parce que les projections déforment. Si la distance entre les nœuds du polygone est élevée, la projection peut déformer davantage la zone (voir la geospherevignette).
Robert Hijmans