1 2R version 4.0.3 (2020-10-10) -- "Bunny-Wunnies Freak Out" 3Copyright (C) 2020 The R Foundation for Statistical Computing 4Platform: x86_64-pc-linux-gnu (64-bit) 5 6R is free software and comes with ABSOLUTELY NO WARRANTY. 7You are welcome to redistribute it under certain conditions. 8Type 'license()' or 'licence()' for distribution details. 9 10R is a collaborative project with many contributors. 11Type 'contributors()' for more information and 12'citation()' on how to cite R or R packages in publications. 13 14Type 'demo()' for some demos, 'help()' for on-line help, or 15'help.start()' for an HTML browser interface to help. 16Type 'q()' to quit R. 17 18> suppressPackageStartupMessages(library(rgdal)) 19> load(system.file("etc/test_dfs.RData", package="rgdal")) 20> load(system.file("etc/obj_with_comments.RData", package="rgdal")) 21> Ps1_nc <- Ps1 22> comment(Ps1_nc) <- NULL 23> comment(slot(Ps1_nc, "polygons")[[1]]) <- NULL 24> drivers <- c("GeoJSON", "ESRI Shapefile") 25> drivers <- drivers[drivers %in% ogrDrivers()$name] 26> tfbase <- tempfile() 27> for (driver in drivers) { 28+ tf <- paste0(tfbase, driver, "P", sep=".") 29+ writeOGR(SpatialPolygonsDataFrame(P, data=df9), tf, "GeoJSON", 30+ driver=driver, verbose=TRUE) 31+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 32+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 33+ cat("P with driver:", driver, "\n") 34+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 35+ cat(" comment", isTRUE(all.equal(sapply(slot(rP, "polygons"), comment), sapply(slot(P, "polygons"), comment))), "\n") 36+ cat(" coords", isTRUE(all.equal(lapply(slot(P, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 37+ cat(" holes", isTRUE(all.equal(lapply(slot(P, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 38+ tf <- paste0(tfbase, driver, "Ph", sep=".") 39+ writeOGR(SpatialPolygonsDataFrame(Ph, data=df9), tf, "GeoJSON", 40+ driver=driver, verbose=TRUE) 41+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 42+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 43+ cat("Ph with driver:", driver, "\n") 44+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 45+ cat(" comment", isTRUE(all.equal(sapply(slot(rP, "polygons"), comment), sapply(slot(Ph, "polygons"), comment))), "\n") 46+ cat(" coords", isTRUE(all.equal(lapply(slot(Ph, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 47+ cat(" holes", isTRUE(all.equal(lapply(slot(Ph, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 48+ tf <- paste0(tfbase, driver, "Phs", sep=".") 49+ writeOGR(SpatialPolygonsDataFrame(Phs, data=df9), tf, "GeoJSON", 50+ driver=driver, verbose=TRUE) 51+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 52+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 53+ cat("Phs with driver:", driver, "\n") 54+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 55+ cat(" comment", isTRUE(all.equal(sapply(slot(rP, "polygons"), comment), sapply(slot(Phs, "polygons"), comment))), "\n") 56+ cat(" coords", isTRUE(all.equal(lapply(slot(Phs, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 57+ cat(" holes", isTRUE(all.equal(lapply(slot(Phs, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 58+ tf <- paste0(tfbase, driver, "MP", sep=".") 59+ writeOGR(SpatialPolygonsDataFrame(MP, data=df3), tf, "GeoJSON", 60+ driver=driver, verbose=TRUE) 61+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 62+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 63+ cat("MP with driver:", driver, "\n") 64+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 65+ cat(" comment", isTRUE(all.equal(sapply(slot(rP, "polygons"), comment), sapply(slot(MP, "polygons"), comment))), "\n") 66+ cat(" coords", isTRUE(all.equal(lapply(slot(MP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 67+ cat(" holes", isTRUE(all.equal(lapply(slot(MP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 68+ tf <- paste0(tfbase, driver, "MPh", sep=".") 69+ writeOGR(SpatialPolygonsDataFrame(MPh, data=df3), tf, "GeoJSON", 70+ driver=driver, verbose=TRUE) 71+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 72+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 73+ cat("MPh with driver:", driver, "\n") 74+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 75+ cat(" comment", isTRUE(all.equal(sapply(slot(rP, "polygons"), comment), sapply(slot(MPh, "polygons"), comment))), "\n") 76+ cat(" coords", isTRUE(all.equal(lapply(slot(MPh, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 77+ cat(" holes", isTRUE(all.equal(lapply(slot(MPh, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 78+ load(system.file("etc/obj_without_comments.RData", package="rgdal")) 79+ if (requireNamespace("rgeos", quietly=TRUE)) { 80+ tf <- paste0(tfbase, driver, "aP", sep=".") 81+ writeOGR(SpatialPolygonsDataFrame(aP, data=df9), tf, "GeoJSON", 82+ driver=driver, verbose=TRUE) 83+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 84+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 85+ cat("aP with driver:", driver, "\n") 86+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 87+ cat(" coords", isTRUE(all.equal(lapply(slot(aP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 88+ cat(" holes", isTRUE(all.equal(lapply(slot(aP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 89+ } 90+ if (requireNamespace("rgeos", quietly=TRUE)) { 91+ tf <- paste0(tfbase, driver, "aPh", sep=".") 92+ writeOGR(SpatialPolygonsDataFrame(aPh, data=df9), tf, "GeoJSON", 93+ driver=driver, verbose=TRUE) 94+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 95+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 96+ cat("aPh with driver:", driver, "\n") 97+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 98+ cat(" coords", isTRUE(all.equal(lapply(slot(aPh, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 99+ cat(" holes", isTRUE(all.equal(lapply(slot(aPh, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 100+ } 101+ if (requireNamespace("rgeos", quietly=TRUE)) { 102+ tf <- paste0(tfbase, driver, "aMP", sep=".") 103+ writeOGR(SpatialPolygonsDataFrame(aMP, data=df3), tf, "GeoJSON", 104+ driver=driver, verbose=TRUE) 105+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 106+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 107+ cat("aMP with driver:", driver, "\n") 108+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 109+ cat(" coords", isTRUE(all.equal(lapply(slot(aMP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 110+ cat(" holes", isTRUE(all.equal(lapply(slot(aMP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 111+ } 112+ if (requireNamespace("rgeos", quietly=TRUE)) { 113+ tf <- paste0(tfbase, driver, "aMPh", sep=".") 114+ writeOGR(SpatialPolygonsDataFrame(aMPh, data=df3), tf, "GeoJSON", 115+ driver=driver, verbose=TRUE) 116+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 117+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 118+ cat("aMPh with driver:", driver, "\n") 119+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 120+ cat(" coords", isTRUE(all.equal(lapply(slot(aMPh, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 121+ cat(" holes", isTRUE(all.equal(lapply(slot(aMPh, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 122+ } 123+ if (requireNamespace("rgeos", quietly=TRUE)) { 124+ tf <- paste0(tfbase, driver, "Ps1", sep=".") 125+ writeOGR(SpatialPolygonsDataFrame(Ps1, data=df1), tf, "GeoJSON", 126+ driver=driver, verbose=TRUE) 127+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 128+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 129+ cat("Ps1 with driver:", driver, "\n") 130+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 131+ cat(" coords", isTRUE(all.equal(lapply(slot(Ps1, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 132+ cat(" holes", isTRUE(all.equal(lapply(slot(Ps1, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 133+ } 134+ if (requireNamespace("rgeos", quietly=TRUE)) { 135+ tf <- paste0(tfbase, driver, "Ps1_nc", sep=".") 136+ writeOGR(SpatialPolygonsDataFrame(Ps1_nc, data=df1), tf, "GeoJSON", 137+ driver=driver, verbose=TRUE) 138+ #rP <- as(readOGR(tf, "GeoJSON", verbose=FALSE), "SpatialPolygons") 139+ rP <- as(readOGR(tf, verbose=FALSE), "SpatialPolygons") 140+ cat("Ps1_nc with driver:", driver, "\n") 141+ unlink(paste(tf, "*", sep=""), recursive=driver == "ESRI Shapefile") 142+ cat(" coords", isTRUE(all.equal(lapply(slot(Ps1, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "coords")), check.attributes=FALSE)), "\n") 143+ cat(" holes", isTRUE(all.equal(lapply(slot(Ps1, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), lapply(slot(rP, "polygons"), function(x) lapply(slot(x, "Polygons"), slot, "hole")), check.attributes=FALSE)), "\n") 144+ } 145+ } 146Object initially classed as: wkbPolygon 147SFS comments in Polygons objects 148Writing 9 wkbPolygon objects 149P with driver: GeoJSON 150 comment TRUE 151 coords TRUE 152 holes TRUE 153Object initially classed as: wkbPolygon 154SFS comments in Polygons objects 155Writing 9 wkbPolygon objects 156Ph with driver: GeoJSON 157 comment TRUE 158 coords TRUE 159 holes TRUE 160Object initially classed as: wkbPolygon 161SFS comments in Polygons objects 162Writing 9 wkbPolygon objects 163Phs with driver: GeoJSON 164 comment TRUE 165 coords TRUE 166 holes TRUE 167Object initially classed as: wkbPolygon 168SFS comments in Polygons objects 169Object reclassed as: wkbMultiPolygon 170Writing 3 wkbMultiPolygon objects 171MP with driver: GeoJSON 172 comment TRUE 173 coords TRUE 174 holes TRUE 175Object initially classed as: wkbPolygon 176SFS comments in Polygons objects 177Object reclassed as: wkbMultiPolygon 178Writing 3 wkbMultiPolygon objects 179MPh with driver: GeoJSON 180 comment TRUE 181 coords TRUE 182 holes TRUE 183Object initially classed as: wkbPolygon 184SFS comments in Polygons objects 185Writing 9 wkbPolygon objects 186aP with driver: GeoJSON 187 coords TRUE 188 holes TRUE 189Object initially classed as: wkbPolygon 190SFS comments in Polygons objects 191Writing 9 wkbPolygon objects 192aPh with driver: GeoJSON 193 coords TRUE 194 holes TRUE 195Object initially classed as: wkbPolygon 196SFS comments in Polygons objects 197Object reclassed as: wkbMultiPolygon 198Writing 3 wkbMultiPolygon objects 199aMP with driver: GeoJSON 200 coords TRUE 201 holes TRUE 202Object initially classed as: wkbPolygon 203SFS comments in Polygons objects 204Object reclassed as: wkbMultiPolygon 205Writing 3 wkbMultiPolygon objects 206aMPh with driver: GeoJSON 207 coords TRUE 208 holes TRUE 209Object initially classed as: wkbPolygon 210SFS comments in Polygons objects 211Object reclassed as: wkbMultiPolygon 212Writing 1 wkbMultiPolygon objects 213Ps1 with driver: GeoJSON 214 coords TRUE 215 holes TRUE 216Object initially classed as: wkbPolygon 217SFS comments in Polygons objects 218Object reclassed as: wkbMultiPolygon 219Writing 1 wkbMultiPolygon objects 220Ps1_nc with driver: GeoJSON 221 coords TRUE 222 holes TRUE 223Object initially classed as: wkbPolygon 224SFS comments in Polygons objects 225Writing 9 wkbPolygon objects 226P with driver: ESRI Shapefile 227 comment TRUE 228 coords TRUE 229 holes TRUE 230Object initially classed as: wkbPolygon 231SFS comments in Polygons objects 232Writing 9 wkbPolygon objects 233Ph with driver: ESRI Shapefile 234 comment TRUE 235 coords TRUE 236 holes TRUE 237Object initially classed as: wkbPolygon 238SFS comments in Polygons objects 239Writing 9 wkbPolygon objects 240Phs with driver: ESRI Shapefile 241 comment TRUE 242 coords TRUE 243 holes TRUE 244Object initially classed as: wkbPolygon 245SFS comments in Polygons objects 246Object reclassed as: wkbMultiPolygon 247Writing 3 wkbMultiPolygon objects 248MP with driver: ESRI Shapefile 249 comment TRUE 250 coords TRUE 251 holes TRUE 252Object initially classed as: wkbPolygon 253SFS comments in Polygons objects 254Object reclassed as: wkbMultiPolygon 255Writing 3 wkbMultiPolygon objects 256MPh with driver: ESRI Shapefile 257 comment TRUE 258 coords TRUE 259 holes TRUE 260Object initially classed as: wkbPolygon 261SFS comments in Polygons objects 262Writing 9 wkbPolygon objects 263aP with driver: ESRI Shapefile 264 coords TRUE 265 holes TRUE 266Object initially classed as: wkbPolygon 267SFS comments in Polygons objects 268Writing 9 wkbPolygon objects 269aPh with driver: ESRI Shapefile 270 coords TRUE 271 holes TRUE 272Object initially classed as: wkbPolygon 273SFS comments in Polygons objects 274Object reclassed as: wkbMultiPolygon 275Writing 3 wkbMultiPolygon objects 276aMP with driver: ESRI Shapefile 277 coords TRUE 278 holes TRUE 279Object initially classed as: wkbPolygon 280SFS comments in Polygons objects 281Object reclassed as: wkbMultiPolygon 282Writing 3 wkbMultiPolygon objects 283aMPh with driver: ESRI Shapefile 284 coords TRUE 285 holes TRUE 286Object initially classed as: wkbPolygon 287SFS comments in Polygons objects 288Object reclassed as: wkbMultiPolygon 289Writing 1 wkbMultiPolygon objects 290Ps1 with driver: ESRI Shapefile 291 coords TRUE 292 holes TRUE 293Object initially classed as: wkbPolygon 294SFS comments in Polygons objects 295Object reclassed as: wkbMultiPolygon 296Writing 1 wkbMultiPolygon objects 297Ps1_nc with driver: ESRI Shapefile 298 coords TRUE 299 holes TRUE 300> 301> proc.time() 302 user system elapsed 303 3.956 0.066 4.418 304