Zia,<div><br></div><div>The error you received was '<span class="Apple-style-span" style="color: rgb(255, 102, 0); ">invalid class "SpatialPolygons" object: non-unique Polygons ID slot values'.</span></div>
<div>Renaming the Polygons IDs so that they are unique should fix your problem.</div><div><br></div><div>The following code along with some test shapefiles I used are attached.</div><div><br></div><div><div>library(rgdal)</div>
<div>setwd("C:/test")</div><div><br></div><div># obtain shapefiles in current directory</div><div>files <- list.files(pattern = "shp")</div><div><br></div><div># get polygons from first file</div><div>
data.first <- readOGR(files[1], gsub(".shp","",files[1]))</div><div>polygons <- slot(data.first, "polygons")</div><div><br></div><div># add polygons from remaining files</div><div>for (i in 2:length(files)) {</div>
<div>   data.temp <- readOGR(files[i], gsub(".shp","",files[i]))</div><div>   polygons <- c(slot(data.temp, "polygons"),polygons)</div><div>}</div><div><br></div><div># rename IDs of Polygons</div>
<div>for (i in 1:length(polygons)) {</div><div>   slot(polygons[[i]], "ID") <- paste(i)</div><div>}</div><div><br></div><div># ain't that spatial</div><div>spatialPolygons <- SpatialPolygons(polygons)</div>
<div>spdf <- SpatialPolygonsDataFrame(spatialPolygons, data.frame(fakeData=1:length(polygons)))</div><div><br></div><div># output combined results</div><div>plot(spatialPolygons)</div><div>writeOGR(spdf, dsn="C:/test/combined.shp", layer="combined", driver="ESRI Shapefile")</div>
<div><br></div><div># end of code</div><div><br></div><div>My test shapefiles had very different attribute tables, so I didn't bother combining the data tables.</div><div>However, the code above should at least show you that your method can work.</div>
<div><br></div><div>I found it interesting that when I combined the polygons in the opposite order:</div><div>polygons <- c(polygons,slot(data.temp, "polygons"))</div><div><br></div><div>the SoutheasternStates polygons completely covered up the Florida polygons in QGis, but</div>
<div>the Florida polygons showed up when plotting in R:</div><div>plot(spatialPolygons)</div><div><br></div><div>Does the R 'plot' function order the polygons before displaying them? Is it possible to view the code</div>
<div>for a function like plot(SpatialPolygons)?</div><div><br></div><div>Matt</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div><font class="Apple-style-span" color="#FF6600"><br>
</font><br><div class="gmail_quote">On Wed, Jan 20, 2010 at 4:14 PM, Zia Ahmed <span dir="ltr"><<a href="mailto:zua3@cornell.edu">zua3@cornell.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">



  
  

<div bgcolor="#ffffff" text="#000000">
<big>Thanks! I am trying to write a function to merge or combine
several shape files. <br>
<br>
First I try to use following function when all shape files in one
folder. It showed error. <br>
<br>
</big><small><font face="Courier New, Courier, monospace">setwd("E:/Zia/SURRGO_Data/SSURGO_RAW_DATA/Test1")<br>
library(rgdal)<br>
## obtain shapefile names in current directory<br>
fs <- list.files(pattern = "shp")<br>
 ## read the first one<br>
 d <- readOGR(fs[1], gsub(".shp", "", fs[1]))<br>
 for (i in 2:length(fs)) {<br>
 d.tmp <- readOGR(fs[i], gsub(".shp", "", fs[i])) <br>
 }<br>
 d <- rbind(d, d.tmp)<br>
</font></small>>  d <- rbind(d, d.tmp)<br>
<font color="#ff6600">Error in validObject(.Object) : <br>
invalid class "SpatialPolygons" object: non-unique Polygons ID slot
values<br>
</font><br>
<big><br>
Then I am trying to use following code, but it did  not work. it  <font face="Courier New, Courier, monospace"><u>created a empty layer. </u><font face="Times New Roman, Times, serif">I think I did something wrong. 
Any idea, </font></font><u><font face="Courier New, Courier, monospace"></font></u><br>
<br>
</big><small><font face="Courier New, Courier, monospace"># Code for
similar file name (shape.shp)<br>
setwd("E:/Zia/SURRGO_Data/SSURGO_RAW_DATA/Testf")<br>
library(rgdal)<br>
<br>
files <- list.files(pattern = "shp")  # get all the names in the
directory<br>
files <- files[<a href="http://file.info" target="_blank">file.info</a>(files)$isdir]  # only keep the directories<br>
<br>
layer<- file('layer.shp')  # output file<br>
for (Dir in files){<br>
    input <- readOGR(file.path(Dir, "shape.shp"))  <br>
    rbind(input, layer)   <br>
}<br>
close(layer)</font></small><br>
<br>
<big>I have a situations  like   all shape files are different names
(like...001.shp, ...003.shp, ....005.shp  so on ) and were saved in
different folders (like fn001, fn003, fn005.......
If someone helps me to write correct code  for solving this it will be
great. <br>
<br>
Zia  </big><br>
<br></div></blockquote></div></div>