You really don't want to bind the data to the regions. My example showed how to use a separate data frame. I won't have time to provide an even simpler example until the weekend and (I realize this is list anathema) this would work alot better as a Stack Overflow question.
On Fri, Jan 22, 2016 at 12:32 PM, Joshua Onyango <jaonya...@yahoo.com> wrote: > Hi Bob, > > Still getting the memory error to do with memory after merging the data to > plot points as per your suggestions. > > What could I be doing wrong is is there a way out to fix this? > > Thanks > > dat_merge = merge(regions,orf_data,by="Region",duplicateGeoms=TRUE) > eng_map <- fortify(regions, region="Region") > names(eng_map)[names(eng_map)=="id"]<-"Region" > big_eng = merge(dat_merge, eng_map,by = "Region",duplicateGeoms=TRUE) > > Error: cannot allocate vector of size 903.8 Mb > > > On Wednesday, 20 January 2016, 19:14, boB Rudis <b...@rudis.net> wrote: > > > That's actually why I did the second `geom_map` the way I did. Add > another column to that data frame and use it for the fill color > (preferably using `cut` to bin values ahead of time as it's unlikey > you really want to use a continuous color palette. > > On Wed, Jan 20, 2016 at 1:55 PM, Joshua Onyango <jaonya...@yahoo.com> wrote: >> Hi Bob >> >> Thanks for the help, merging region appear to work now. However still >> stuck >> on the other bit on merging data with spatial object, ("regions") in this >> case to be able to plot the data points. I mainly want to plot information >> such as % disease prevalence in every region, temperature, flock size etc >> >> Thanks advance >> >> Josh >> >> >> On Wednesday, 20 January 2016, 1:49, boB Rudis <b...@rudis.net> wrote: >> >> >> I think this might help you out a bit (it's probably worth taking the >> time to look it over as it removes much of the redundant code you >> had). >> >> library(sp) >> library(maptools) >> library(rgeos) >> library(rgdal) >> library(dplyr) >> library(ggplot2) >> library(ggthemes) >> library(ggalt) >> >> URL <- >> >> "http://census.edina.ac.uk/ukborders/easy_download/prebuilt/shape/England_gor_2011.zip" >> fil <- basename(URL) >> if (!file.exists(fil)) download.file(URL, fil) >> >> fils <- unzip(fil) >> shp <- grep("shp$", fils, value=TRUE) >> >> region <- readOGR(shp, ogrListLayers(shp)[1], stringsAsFactors=FALSE) >> >> # define new regions >> region@data$Region <- c("East", "South &S.E", "North", "North", >> "Midlands", >> "North", "SouthWest", "Midlands", "South & S.E") >> colnames(region@data) <- c("code", "name","Region") >> >> # dissolve polygons and simplify the shapes >> regions <- unionSpatialPolygons(region, region@data$Region) >> regions <- gSimplify(regions, 100, topologyPreserve=TRUE) >> regions <- gBuffer(regions, byid=TRUE, width=0) >> >> # coord_map and coord_proj will eventually work but this transformation >> # will absolutely speed up the calculations >> >> regions <- SpatialPolygonsDataFrame(spTransform(regions, >> CRS("+proj=longlat >> +ellps=sphere +no_defs")), >> data.frame(Region=names(regions), >> row.names=names(regions), >> stringsAsFactors=FALSE)) >> >> eng_map <- fortify(regions, region="Region") >> >> # new projection (good for the UK) >> eng_proj <- "+proj=aea +lat_0=54.55635146083455 +lon_0=-3.076171875" >> >> ggplot() + >> # base map >> geom_map(data=eng_map, map=eng_map, >> aes(x=long, y=lat, map_id=id), >> color=NA, fill=NA, size=0.5) + >> # sample fill of the regions >> geom_map(data=data.frame(id=unique(eng_map$id)), map=eng_map, >> aes(map_id=id, fill=id), >> color="white", size=0.15) + >> scale_fill_brewer(palette="Set2") + >> coord_proj(eng_proj) + >> theme_map() >> >> NOTE: this requires the new ggplot2 (2.0) >> >> On Tue, Jan 19, 2016 at 3:04 PM, Joshua Onyango via R-sig-Geo >> <r-sig-geo@r-project.org> wrote: >>> HelloI'm new into creating maps in R so any help would be great.I have >>> read a few articles on the internet - mainly blogs on mapping in R which >>> I >>> have tried to follow with no much success. Basically I want to merge >>> merge >>> some English regions from 8 to 5 then show information that relates to >>> disease prevalence, temperature etc >>> Here is what I have tried but sound like this cant run due to computer >>> memory or must be doing following a wrong approach. >>> >>> >>>> #Getting theshapefile into working directory >>> >>>> >>>> >>>> download.file("http://census.edina.ac.uk/ukborders/easy_download/prebuilt/shape/England_gor_2011.zip", >>> >>> destfile ="lad-region-lookup.zip")> #inzipping >>> theshapefile >>> folder >>> >>>>unzip("lad-region-lookup.zip", exdir = ".") >>> >>>> #reading theshapefile in r >>> >>>> region <-readOGR(".", "England_gor_2011") >>> >>> OGR data source withdriver: ESRI Shapefile >>> >>> Source:".", layer: "England_gor_2011" >>> >>> with 9 features >>> >>> It has 2 fields >>> >>>> # Check theshapefile has loaded correctly >>> >>>> plot(region) >>> >>>> >>> >>>> lu <-data.frame() >>> >>>> lu <-rbind(lu, region@data) >>> >>>> lu$CODE <-as.character(lu$CODE) >>> >>>> lu$NAME <-as.character(lu$NAME) >>> >>>> lu$Region <-NA >>> >>>> name=c("East", "South >>>> &S.E","North","North","Midlands","North","SouthWest","Midlands","South & >>>> S.E") >>> >>>> lu$Region <-name >>> >>>> # Merge lu(LookUp) into polygons, >>> >>>> region@data$CODE<- as.character(region@data$CODE) >>> >>>> region@data<- full_join(region@data, lu, by = "CODE") >>> >>>> # Tidy mergeddata >>> >>>> region@data<- select(region@data, -NAME.x) >>> >>>>colnames(region@data) <- c("code", "name","Region") >>> >>>> >>> >>>> # Ensureshapefile row.names and polygon IDs are sensible >>> >>>>row.names(region) <- row.names(region@data) >>> >>>> region <-spChFIDs(region, row.names(region)) >>> >>>> >>> >>>> # Now thedissolve >>> >>>> region <-gUnaryUnion(region, id = region@data$Region) >>> >>>> >>> >>>> # If you want torecreate an object with a data frame >>> >>>> # make sure row namesmatch >>> >>>>row.names(region) <- as.character(1:length(region)) >>> >>>> >>> >>>> # Extract thedata you want (the larger geography) >>> >>>> lu <-unique(lu$Region) >>> >>>> lu <-as.data.frame(lu) >>> >>>> colnames(lu)<- "Region" # your datawill probably have more than 1 row! >>> >>>> >>> >>>> # And add thedata back in >>> >>>> region <-SpatialPolygonsDataFrame(region, lu) >>> >>>> region2 <-merge(region@data, data, by="Region") >>> >>>> dat2=fortify(region,region="Region") >>> >>>>names(dat2)[names(dat2)=="id"]<-"Region" >>> >>>> dat <-merge(dat2, region2, by="Region") >>> >>> Error: cannotallocate vector of size 904.9 Mb >>> >>> In addition:Warning messages: >>> >>> 1: In`[.data.frame`(x, c(m$xi, if (all.x) m$x.alone), >>> c(by.x,seq_len(ncx)[-by.x]), : >>> >>> Reached total allocation of 4016Mb: seehelp(memory.size) >>> >>> >>> >>> >>> Any simpler approach will be highly appreciated. >>> Thanks >>> Josh >>> [[alternative HTML version deleted]] >>> >>> _______________________________________________ >>> R-sig-Geo mailing list >>> R-sig-Geo@r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo >> >> > > _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo