[R-sig-Geo] Problem in converting SpatialPolygonsDataFrame to owin object

Edzer J. Pebesma e.pebesma at geo.uu.nl
Wed Sep 13 09:33:20 CEST 2006


Debarchana Ghosh wrote:
> Hi,
>
> Using readShapePoly from maptools I've read a ESRI shapefile to a object of
> class 'SpatialPolygonsDataFrame'.
>
> xx<-readShapePoly("tcma.shp")
>   
>> plot(xx, border="blue", las=1)
>> str(xx)
>>     
>
> Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
>   ..@ data       :`data.frame': 7 obs. of  5 variables:
>   .. ..$ COUNTY   : Factor w/ 7 levels "27003","27019",..: 1 2 3 4 5 6 7
>   .. ..$ CountyDum: num [1:7] 1 2 3 4 5 6 7
>   .. ..$ area     : num [1:7] 1.15e+09 9.74e+08 1.52e+09 1.57e+09 4.40e+08...
>   .. ..$ X        : num [1:7] 480680 436555 494806 462435 492163 ...
>   .. ..$ Y        : num [1:7] 5013322 4963352 4946475 4983552 4984842 ...
>
> However I'm getting errors to convert xx(SpatialPolygonsDataFrame-object) to
> 'owin' object by using spspatstat package.
>
>   
>> xx1<-as(as(xx, "SpatialPolygons"), "owin")
>>     
> Polygons 1 and 4 cross over
> Polygons 1 and 5 cross over
> Polygons 1 and 7 cross over
> Polygons 2 and 4 cross over
> Polygons 2 and 6 cross over
> Polygons 3 and 4 cross over
> Polygons 3 and 5 cross over
> Polygons 3 and 6 cross over
> Polygons 3 and 7 cross over
> Polygons 4 and 5 cross over
> Polygons 4 and 6 cross over
> Polygons 5 and 7 cross over
> Error in owin(poly = opls) : Polygon data contain overlaps between polygons
>   
These error messages are from spatstat, and seem to indicate that there 
is a problem with the polygons you provide: do they have line segments 
that intersect?
> Also,
>   
>>  
>>     
> Error in asMethod(object) : W must be a SpatialPolygons object
>   
You can ignore this message; proceed with the previous version.
> After getting this error I realised SpatialPolygons is not same as
> SpatialPolygonDataFrame. If I'm correct how will I convert
>   
SpatialPolygonDataFrame simply extends SpatialPolygons with a data slot 
containing the attributes. The is() relation holds, but it was 
inherits() that was used in the code. Changed that.
> 'SpatialPolygonDataFrame' to 'SpatialPolygons' obgect?
>   
The

as(xx, "SpatialPolygons")
works fine; I modified the code such that
xx1<-as(xx, "owin")

will work fine as well in the future.
--
Edzer




More information about the R-sig-Geo mailing list