Ich habe Probleme beim Zeichnen meiner Geodaten mit ggplot2. Die Karte sieht gut aus, wenn sie mit spplot geplottet wird. Ich gehe also davon aus, dass das Zerreißen in der Befestigungsphase erfolgt.
Der Code lautet wie folgt:
#install the packages
library(rgdal)
library(mapproj)
library(raster)
library(rgeos)
library(ggplot2)
library(plyr)
if (!require(gpclib)) install.packages("gpclib", type="source")
gpclibPermit()
setwd("C:/Users/My Documents")
#read in laa to regional mapping
#must aggregate to higher level regions as data is provided at this higher level
laa_region_mapping <- read.csv("laa_region.csv", header = TRUE)
#read in LAA polygons
laa_polygons <- readOGR("ctyua_ew_generalised_WGS84.json", "OGRGeoJSON")
#merge by laa to add region column to polygon data
laa_polygons_with_region_data <- merge(laa_polygons, laa_region_mapping,
by.x = "CTYUA13NM", by.y = "LAA",
all.x = TRUE, all.y = TRUE)
# aggregate laa polygons by the 21 regions (aggregate by regoin_code)
region_polygons <- raster::aggregate(laa_polygons_with_region_data, "region_code")
Das Aggregat hat funktioniert, wie aus dem spplot hervorgeht (Hinweis: Ich habe in diesem SE-Beitrag herausgefunden, wie die Aggregate nach Regionen sortiert werden: Verbinden Sie räumliche Polygone durch Code in R ).
#plot the resulting polygons using spplot
spplot(region_polygons)
Aber wenn ich die räumlichen Daten so verstärke, dass ich ggplot verwenden kann, reißt es an den Rändern.
#fortify and merge to create the data frame ggplot will show on the map
region_polygons@data$id <- rownames(region_polygons@data)
region_polygons.points <- fortify(region_polygons, region = "id")
# plot the fortified df using ggplot
ggplot(data = region_polygons.points, aes(x= long, y = lat, group = id, fill=id)) + geom_polygon()
Wie kann ich dieses Zerreißen stoppen?
Ich habe mir ähnliche Antworten auf SE angesehen, aber die Antworten deuten darauf hin, dass während einer Zusammenführung ein Zerreißen auftritt ( Was ist die Ursache für das "Zerreißen" von Polygonen (Artefakten) mit R, ggplot und geom_polygon? ). Ich denke, mein Zerreißen tritt im Stadium der Befestigung auf, da der Spplot vor der Befestigung gut aussieht.
Antworten:
Sie sollten
group=group
in deraes
Zuordnung verwenden. Hier ist ein reproduzierbares Beispiel für Ihr Problem:quelle
id
ist dies die Merkmals-ID undgroup
die ID einzelner Ringe (Inseln, Löcher usw.). Wenn Sie also mitid
als Gruppe zeichnen, werden alle Teile Ihres Features als ein Ring gezeichnet, daher das "Zerreißen", wenn es zwischen Inseln springt.group
Ästhetik dies nicht löst (was für dieses spezielle Beispiel nicht gilt), wird diesy <- y[order(y$order),]
wahrscheinlich versucht . Dieorder
Spalte wirdfortify
aus diesem Grund von der Funktion erstellt .