Saya mengalami masalah dalam memplot data spasial saya menggunakan ggplot2. Peta terlihat baik-baik saja ketika diplot menggunakan spplot, jadi saya berasumsi bahwa robekan terjadi pada tahap fortifikasi.
Kode tersebut adalah sebagai berikut:
#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")
Agregat telah berfungsi, seperti yang dapat dilihat oleh spplot (catatan: Saya menemukan cara agregat menurut wilayah dari pos SE ini: Gabung poligon spasial dengan kode dalam R )
#plot the resulting polygons using spplot
spplot(region_polygons)
Tetapi ketika saya memperkuat data spasial sehingga saya bisa menggunakan ggplot, ada sobekan di tepinya.
#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()
Bagaimana saya bisa menghentikan robekan ini?
Saya telah melihat respons yang serupa pada SE, tetapi tanggapan tersebut menyarankan bahwa robekan terjadi selama penggabungan ( Apa penyebab 'robeknya' poligon (artefak) menggunakan R, ggplot dan geom_polygon? ). Saya pikir air mata saya terjadi pada tahap fortifikasi sebagai tempat sebelum sebelum fortifikasi terlihat baik-baik saja.
Jawaban:
Anda harus Anda gunakan
group=group
dalamaes
pemetaan. Ini adalah contoh masalah Anda yang dapat direproduksi:sumber
id
adalah id fitur, dangroup
id dari masing-masing cincin (pulau, lubang, dll.). Jadi jika Anda menggambar denganid
sebagai grup itu menarik semua bit fitur Anda sebagai satu cincin, maka "merobek" saat melompat antar pulau.group
estetika yang benar tidak menyelesaikannya (yang tidak berlaku untuk contoh khusus ini), mencobay <- y[order(y$order),]
mungkin akan berhasil. Theorder
kolom dibuat olehfortify
fungsi karena alasan ini.