I'm still working on trying to combine two spatial files.
So far I've done the following

zipmaps1a<- unionSpatialPolygons(zipmaps1,IDs=paste(zipmaps1$ZCTA))
zipmaps1_df<- as(zipmaps1, "data.frame") [!duplicated(zipmaps1$ZCTA),
-(1:4)]
row.names(zipmaps1_df)<- paste(zipmaps1_df$ZCTA)
zipmaps1b <- SpatialPolygonsDataFrame(zipmaps1a,zipmaps1_df)

zipmaps2a<- unionSpatialPolygons(zipmaps2,IDs=paste(zipmaps2$ZCTA))
zipmaps2_df<- as(zipmaps2, "data.frame") [!duplicated(zipmaps2$ZCTA),
-(1:4)]
row.names(zipmaps2_df)<- paste(zipmaps2_df$ZCTA)
zipmaps2b <- SpatialPolygonsDataFrame(zipmaps2a,zipmaps2_df)

I've checked both of my files and at this point they DO both contain unique
id's - no duplicate records. However when I try to go ahead and combine them
using

zipmaps_1_2 <- spRbind(spRbind(zipmaps1b, zipmaps1a))

I get the following error message
Error in spRbind(spRbind(zipmaps1b, zipmaps1a)) :
  error in evaluating the argument 'obj' in selecting a method for function
'spRbind'

I'm not sure what else I need to specify in my spRbind command


On Wed, Apr 29, 2009 at 12:32 PM, Roger Bivand <roger.biv...@nhh.no> wrote:

> On Wed, 29 Apr 2009, Alina Sheyman wrote:
>
>  Using examples in Chapter 5, I am trying to get rid of non-unique
>> polygons.
>>
>
> Actually, maybe my advice wasn't well-judged, unless you are happy to
> interpret code in a fairly naked setting, you may actually need the book
> text to see what is going on. The code treats a number of different issues,
> not all of which are necessarily relevant for your case.
>
>  I'm working with a Massachusetts shapefile by zips. The file consists the
>> following fields
>> ZCTA  NAME LSAD   LSAD_TRANS
>>
>> I've done the following  to get rid of duplicate records
>>
>>  zipmaps1_df <- as(zipmaps1,
>>> "data.frame")[!duplicated(zipmaps1$LSAT_TRANS)]
>>>
>> # not LSAD_TRANS?
>
>> row.names(zipmaps1_df) <- zipmaps1_df$LSAD_TRANS
>>> zipmaps1a <- SpatialPolygonsDataFrame(zipmaps1, zipmaps1_df) ,
>>>
>>
>>
> I guess that you need all of the features (geometries) in zipmaps1, but
> that some zipcodes have several features. Don't discard geometries unless
> you know that that is what you really want to do. Even if they are not
> contiguous, use:
>
> zipmaps1u <- unionSpatialPolygons(as(zipmaps1, "SpatialPolygons"),
>  as.character(zipmaps1$LSAD_TRANS))
>
> to group all of the features belonging to each value of LSAD_TRANS as
> Polygon objects in unique Polygons objects (with multiple features).
>
> The output (re. your next mail) is a SpatialPolygons object. How you then
> aggregate the data.frame part of the input object is up to you. The ID
> values of the Polygons objects in zipmaps1u will be the unique values of
> LSAD_TRANS. Unless you need to work with attribute data, you could stay just
> with SpatialPolygons objects until you are through.
>
>  but get the following error message
>> Error in SpatialPolygonsDataFrame(zipmaps1, zipmaps1_df) :
>>  row.names of data and Polygons IDs do not match
>>
>>
>> How do I find out what field R is treating as Polygon ID, so that I can
>> set
>> my row.names to that?
>>
>
> If you need it later on, you could look at spChFIDs as I suggested before.
>
> Hope this helps,
>
> Roger
>
>
>
>>
>> On Wed, Apr 29, 2009 at 2:42 AM, Roger Bivand <roger.biv...@nhh.no>
>> wrote:
>>
>>  On Tue, 28 Apr 2009, Alina Sheyman wrote:
>>>
>>>  I'm trying to combine two shapefiles using
>>>
>>>> zipmaps5 <- spRbind(zipmaps1,zipmaps2)
>>>>
>>>> and getting the following error message
>>>> Error in spRbind(as(obj, "SpatialPolygons"), as(x, "SpatialPolygons")) :
>>>>  non-unique polygon IDs
>>>>
>>>> Does anyone know how I can get rid of duplicate polygons in a shapefile?
>>>>
>>>>
>>> This isn't the problem. The real problem is that zipmaps1 and zipmaps2
>>> have
>>> non-unique polygon IDs, so that it isn't obvious to the function what you
>>> want to do. By default:
>>>
>>> sapply(slot(zipmaps1, "polygons"), slot, "ID")
>>>
>>> is set to the FID of the shapefile in readOGR() and equivalently in
>>> readShapeSpatial() in maptools. These typically run 0:(n-1). For two
>>> objects, they obviously overlap. Please use spChFIDs() methods in
>>> maptools
>>> to assign IDs that are unique for the output object; in the worst case:
>>>
>>> zipmaps1 <- spChFIDs(zipmaps1, paste("map1", sapply(slot(zipmaps1,
>>>  "polygons"), slot, "ID"), sep="_"))
>>>
>>> and a different "map*" string for zipmaps2 will work, but a unique,
>>> meaningful ID is best.
>>>
>>> This is covered in detail in the code examples for Chapter 5 in our book,
>>> and on the help page for ?"spChFIDs-methods".
>>>
>>> Hope this helps,
>>>
>>> Roger
>>>
>>>
>>>  thank you!
>>>>
>>>>       [[alternative HTML version deleted]]
>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> R-sig-Geo@stat.math.ethz.ch
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>
>>>>
>>>>  --
>>> Roger Bivand
>>> Economic Geography Section, Department of Economics, Norwegian School of
>>> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
>>> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
>>> e-mail: roger.biv...@nhh.no
>>>
>>>
>>>
>>
> --
> Roger Bivand
> Economic Geography Section, Department of Economics, Norwegian School of
> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
> e-mail: roger.biv...@nhh.no
>
>

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to