and for some reason I am still getting the error that I have non-unique id's
eventhough i had deduped both of my files. Any idea why this would be
happening?

On Tue, May 5, 2009 at 10:16 AM, Alina Sheyman <alina...@gmail.com> wrote:

>
> 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