1sp2tmap <- function(SP) { 2 if (!inherits(SP, "SpatialPolygons")) 3 stop("not a SpatialPolygons object") 4 pls <- slot(SP, "polygons") 5 IDs <- sapply(pls, function(x) slot(x, "ID")) 6 n <- length(IDs) 7 iIDs <- as.integer(1:n) 8 cID <- NULL 9 cX <- NULL 10 cY <- NULL 11 for (i in iIDs) { 12 pl <- slot(pls[[i]], "Polygons") 13 m <- length(pl) 14 for (j in 1:m) { 15 crds <- slot(pl[[j]], "coords") 16 if (is.null(cID)) { 17 cID <- i 18 cX <- as.numeric(NA) 19 cY=as.numeric(NA) 20 } else { 21 cID <- c(cID, i) 22 cX <- c(cX, as.numeric(NA)) 23 cY <- c(cY, as.numeric(NA)) 24 } 25 cID <- c(cID, rep(i, nrow(crds))) 26 cX <- c(cX, crds[,1]) 27 cY <- c(cY, crds[,2]) 28 } 29 } 30 res <- data.frame("_ID"=cID, "_X"=cX, "_Y"=cY, check.names=FALSE) 31 names(iIDs) <- IDs 32 attr(res, "ID_names") <- iIDs 33 res 34} 35