[R-sig-Geo] looping sp data
Barry Rowlingson
b.rowlingson at lancaster.ac.uk
Fri Jul 22 17:30:57 CEST 2011
On Fri, Jul 22, 2011 at 3:45 PM, ahelmore <aelmore at usgs.gov> wrote:
> Hi there,
>
> I have a rather lengthy bit of code I want to run on a series of point
> files, but I can't even figure out how to load shapefiles in a simple loop.
> Since readOGR takes shapefile names without the .shp extension, I thought I
> could make a list of unduplicated file names, sans extensions and use that
> to run the loop, but I'm getting a missing layer error. After staring at it
> for way too long, I'm looking for a leg up. Can anyone tell me where my
> thinking/code is off?
>
> Here's what isn't working:
>
> patt.xml <- ".*eden.*xml.*"
> patt.shp <- ".*eden.*shp.*"
> data.shp.xml <-list.files(pattern=patt.shp) # list of eden .shp & .shp.xml
> data
> data.xml <-list.files(pattern=patt.xml) # list of eden .shp.xml data
> data.shp <- data.shp.xml[!data.shp.xml %in% data.xml] # list of .shp files
> data.eden <- gsub(".shp","",data.shp) #stripping the extension
>
>
> for (x in 1:length(data.eden)) {
> data<-readOGR(x)
> summary(data)
> }
>
> It gives me: Error in readOGR(x) : missing layer
readOGR takes the directory or folder with the shapefile and the
truncated shapefile name. So to load ca.shp that is in my current
directory I do:
> ca=readOGR(".","ca")
OGR data source with driver: ESRI Shapefile
Source: ".", layer: "ca"
with 58 features and 15 fields
Feature type: wkbPoint with 2 dimensions
Technically the source is the directory, and ca.shp is the layer, in
OGR terminology.
You might find readShapeSpatial() in maptools useful, it loads
shapefiles given the path to a .shp file:
> ca2 = readShapeSpatial("ca.shp")
however ca and ca2 aren't identical - I think its just minor
differences in the attributes...
Barry
More information about the R-sig-Geo
mailing list