Roman Luštrik tarafından gönderilen bağlantıyı takip ettim ve aşağıdaki cevap http://r-sig-geo.2731867.n2.nabble.com/suggestion-to-MERGE-or-UNION-3-shapefiles-td5914413.html#a5916751'un hafif bir değişikliğidir.
Aşağıdaki kod, Census 2000 5-Digit ZIP Code Tabulation Areas (ZCTAs) Cartographic Boundary Files'dan edinilen .shp
dosyalarını birleştirmenize ve bunları çizmenize izin verecektir.
Bu durumda, Massachusetts, New Hampshire ve Maine için .shp
dosyalarını ve ilişkili .dbf
ve .shx
dosyalarını karşıdan yükledim.
library('maptools')
library('rgdal')
setwd('c:/location.of.shp.files')
# this location has the shapefiles for zt23_d00 (Maine), zt25_d00 (Mass.), and zt33_d00 (New Hampshire).
# columns.to.keep
# allows the subsequent spRbind to work properly
columns.to.keep <- c('AREA', 'PERIMETER', 'ZCTA', 'NAME', 'LSAD', 'LSAD_TRANS')
files <- list.files(pattern="*.shp$", recursive=TRUE, full.names=TRUE)
uid <-1
# get polygons from first file
poly.data<- readOGR(files[1], gsub("^.*/(.*).shp$", "\\1", files[1]))
n <- length(slot(poly.data, "polygons"))
poly.data <- spChFIDs(poly.data, as.character(uid:(uid+n-1)))
uid <- uid + n
poly.data <- poly.data[columns.to.keep]
# combine remaining polygons with first polygon
for (i in 2:length(files)) {
temp.data <- readOGR(files[i], gsub("^.*/(.*).shp$", "\\1",files[i]))
n <- length(slot(temp.data, "polygons"))
temp.data <- spChFIDs(temp.data, as.character(uid:(uid+n-1)))
temp.data <- temp.data[columns.to.keep]
uid <- uid + n
poly.data <- spRbind(poly.data,temp.data)
}
plot(poly.data)
# save new shapefile
combined.shp <- 'combined.shp'
writeOGR(poly.data, dsn=combined.shp, layer='combined1', driver='ESRI Shapefile')
Bu bağlantı (http://r-sig-geo.2731867.n2.nabble.com/suggestion-to-MERGE-or-UNION-3-shapefiles-td5914413.html#a5916751) birleştirme hakkında. Dudak arşivi, mekansal verileri ele almak için bir altın madeni olmalıdır. –
Mmm ... R-sig-geo'un Nabble'a yapmış olduğunu bilmiyordu. Diğer R forumları ile gruplandırılmamış Talihsiz. – Sharpie
Bunu gerçekleştirmek için neredeyse beş yıl süren CBS'm vardı ama ... "kloroplet" değil "chloropleth" –