[R-sig-Geo] merging several shapefiles into one

Zia Ahmed zua3 at cornell.edu
Wed May 25 14:25:08 CEST 2011


  I used following code to merge a series of  shape files with similar 
file structure. We can try this, but you need to do some modification of 
the code.
Zia

###############################################################################

# Require packages: rgdal and maptool
#-------------------------------------

library(rgdal)
library(maptools)

# Get list of all shape files from county directories/sptial/
#------------------------------------------------------------

files <- list.files(pattern="soilmu_a_ia.*.shp$", 
recursive=TRUE,full.names=TRUE)
uid<-1

# Get polygons from first file (_001)
#-------------------------------------

poly.data<- readOGR(files[1],gsub("^.*/(.*).shp$", "\\1", files[1]))
n <- length(slot(poly.data, "polygons"))
poly.data <- spChFIDs(poly.data, as.character(uid:(uid+n-1)))
uid <- uid + n

# mapunit polygoan: combin remaining  polygons with first polygoan
#-----------------------------------------------------------------

for (i in 2:length(files)) {
     temp.data <- readOGR(files[i], gsub("^.*/(.*).shp$", "\\1",files[i]))
     n <- length(slot(temp.data, "polygons"))
     temp.data <- spChFIDs(temp.data, as.character(uid:(uid+n-1)))
     uid <- uid + n
     poly.data <- spRbind(poly.data,temp.data)
}

names(poly.data)
proj4string(poly.data)

On 5/25/2011 3:22 AM, Pierre Roudier wrote:
> Hi Nicolas,
>
> I do not have a R session handy, but if I remember correctly, the
> function gUnion() in the rgeos package would do what you want.
>
> Hope this helps,
>
> Pierre
>
> 2011/5/25 Nicolas Degallier<nicolas.degallier at ird.fr>:
>> Hi All,
>>
>> I have read different shapefiles that are contiguous and that have different column names with the function "readShapePoly".
>>
>> example :
>>
>> noumea<- readShapePoly(noumea.file, IDvar = "NOUMEA2_ID", proj4string = crs_rgnc)
>>
>> and
>>
>> dumbea<- readShapePoly(dumbea.file, IDvar = "DUMBEA2_", proj4string = crs_rgnc)
>>
>> Now I would like to create a new shapefile with all the polygones in the "noumea" and "dumbea" spatial polygone data frames.
>>
>> I tried :
>> spRbind(noumea, dumbea)
>>
>> I get this message error :
>>
>> Error in spRbind(as(obj, "SpatialPolygons"), as(x, "SpatialPolygons")) :
>>   non-unique polygon IDs
>>
>> I have tried with the function rbind()
>> I have tried to set noumea$NOUMEA2_ID and dumbea$DUMBEA2_ with unique values but I still get the same message error as if the function spRbind was not using those two columns as polygons ID...
>>
>> Does anyone know how I can fix this problem ?
>>
>> Thanks a lot
>>
>> Nicolas
>>
>>
>> Nicolas Degallier
>>
>> IRD UMR182
>> Laboratoire d'Océanographie et du Climat, Expérimentation et Approches Numériques (LOCEAN)
>> Tour 45-55, 4e ét., case 100, 4 place Jussieu
>> 75252  Paris Cedex 5  France
>> tél: (33) 01 44 27 51 57
>> fax: (33) 01 44 27 38 05
>>
>> E-mail:<Nicolas.Degallier at ird.fr>
>> pdf reprints:
>> http://www.locean-ipsl.upmc.fr/~ndelod/production/
>>
>> Skype:"xuxaxu"
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20110525/df96063a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: zua3.vcf
Type: text/x-vcard
Size: 281 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20110525/df96063a/attachment.vcf>


More information about the R-sig-Geo mailing list