Suite

R utiliser fortify pour projeter un fichier de formes sur google map donne des résultats erronés

R utiliser fortify pour projeter un fichier de formes sur google map donne des résultats erronés


J'ai un shapefile qui ressemble à ça

> str(FieldsMap) Classe formelle 'SpatialPolygonsDataFrame' [package "sp"] avec 5 slots… @ data :'data.frame': 3 obs. de 2 variables :… $ id : int [1:3] 3 2 1… $ Attr : Facteur avec 3 niveaux "A","B","C": 3 2 1… @ polygones :Liste de 3… $ :Classe formelle 'Polygones' [package "sp"] avec 5 slots… @ Polygones :Liste de 1… $ :Classe formelle 'Polygon' [package "sp"] avec 5 slots… @ labpt : num [1:2] 8.6 47.7… @ zone : num 5.88e-08… @ trou : logi FALSE… @ ringDir : int 1… @ coords : num [1:6, 1:2] 8.6 8.61 8.61 8.61 8.6… @ plotOrder : int 1… @ labpt : num [1:2] 8.6 47.7… @ ID : chr "0"… @ area : num 5.88e-08… $ :Classe formelle 'Polygones' [package "sp"] avec 5 slots… @ Polygones :Liste de 1 … $ :Classe formelle 'Polygon' [package "sp"] avec 5 slots… @ labpt : num [1:2] 8.61 47.68… @ area : num 1.41e-06… @ hole : logi FALSE… @ ringDir: int 1 … @ coords : num [1:15, 1:2] 8.61 8.61 8.61 8.61 8.61… @ plotOrder: int 1… @ labpt : num [1:2] 8.61 47.68… @ ID : chr "1"… @ area : num 1.41e-06… $ :Classe formelle 'Polygones' [package "sp"] avec 5 slots… @ Polygons :Liste de 1… $ :Classe formelle 'Polygon' [package "sp"] avec 5 slots… @ labpt : num [1:2 ] 8.61 47.68… @ zone : num 1.11e-06… @ trou : logi FALSE… @ ringDir : int 1… @ coords : num [1:17, 1:2] 8.61 8.61 8.61 8.61 8.61… @ plotOrder : int 1… @ labpt : num [1:2] 8.61 47.68… @ ID : chr "2"… @ area : num 1.11e-06… @ plotOrder : int [1:3] 2 3 1… @ bbox : num [1:2 , 1:2] 8,6 47,68 8,61 47,68… - attr(*, "dimnames")=Liste de 2… $ : chr [1:2] "x" "y"… $ : chr [1:2] "min" "max"… @ proj4string:Classe formelle 'CRS' [package "sp"] avec 1 slot… @ projargs: chr "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"

Non, je veux tracer les polygones avecggmapsur une carte google donc je lance :

MapExtent<-bbox(FieldsMap) Map<-get_map(MapExtent,maptype="hybrid") mapTransform<-fortify(FieldsMap,region="id") p1<-ggmap(Map)+geom_polygon(data=mapTransform,aes(long ,lat,group=as.factor(group)),fill="green",color="green") p1

Cependant, les polygones n'ont pas la bonne forme après fortification et ne sont pas exactement au bon endroit (quelques centaines de mètres). Est-ce que n'importe qui a une idée sur la façon dont résoudre ceci ? Traçageplot(FieldsMap)donne la bonne forme du polygone. J'ai également remarqué qu'après la fortification, il n'y a parfois aucun polygone tracé à l'aide d'un autre fichier de formes. L'affichage des deux fichiers de formes dans QGIS fonctionne comme il se doit, donc je supposefortifierpour causer le problème, car en regardant l'intrigue j'ai l'impression que parfois des points manquent ou sont connectés dans le mauvais ordre.


Si vos polygones ne chevauchent pas correctement la carte, vous avez un problème de système de référence de coordonnées (CRS). Si votre fournisseur de carte est Google Maps, le CRS est WGS84. Ainsi, vous devez modifier le CRS de votre SpatialPolygonDataFrame.

library(sp) library(rgdal) proj4string(FieldsMap) # Donne le CRS des données FieldsMap=spTransform(FieldsMap,CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")) # Pour le convertir en WGS84

Utilisez ensuiteggplot2::fortify(FieldsMap,byid="votre identifiant var")pour convertir votre SpatialPolygonDataFrame en un DataFrame, que vous pouvez utiliser comme entrée pourggplot. Faire attention,fortifier()parfois déformer les polygones. Si vous voulez un graphique simple, préférez le standardterrain()une fonction.


Voir la vidéo: Xamma korsin-Shu rostmiu0026! КУРИНМАС МАТО!