[R-sig-Geo] convert a PBSmapping grid to shapefile

Roger Bivand Roger.Bivand at nhh.no
Thu Feb 17 16:18:37 CET 2011

On Thu, 17 Feb 2011, Armelle ROUYER wrote:

> Dear all,
> I used the PBSmapping package to make a grid with the abundance of fishes. 
> Each cell has an allocated value. I want to convert this grid into a 
> shapefile in order to export it on ArcGIS.
> So I tried the function "PolySet2SpatialPolygons". The grid is correctly 
> transformed into polygons but the allocated value is ignored. Then I tried 
> the function "SpatialPolygonsDataFrame" but it didn't work properly (only 13 
> values are associated with the 50 cells).
> I am not sure that I am using the right functions. So if you have any idea or 
> suggestion thank you for your help.

gt <- GridTopology(c(0.5, 0.5), c(1, 1), c(5, 10))
sp <- as(gt, "SpatialPolygons")
proj4string(sp) <- CRS("+proj=longlat")
PS0 <- SpatialPolygons2PolySet(sp)
PD0 <- as.PolyData(data.frame(PID=1:50, col=rep(rainbow(10), each=5),
plotPolys(PS0, polyProps=PD0, projection="LL")
# the above to set up a PolySet opject, PolyData object, and plot them
sp1 <- PolySet2SpatialPolygons(PS0)
mo <- match(as.character(PD0$PID), row.names(sp1))
# check mo - this is an easy match, in practice it may need more study
sp2 <- SpatialPolygonsDataFrame(sp1, data=data.frame(col=PD0$col[mo],
plot(sp2, col=sp2$col, axes=TRUE)

seems to work. You match on the PolyData PID column and the row.names() of 
the SpatialPolygons object, which are the unique PolySet PID values. In 
this case, and probably in general, the PIDs in the PolyData and PolySet 
match by design. If there isn't an exact match, you'll need to construct 
an object of the correct length manually.


> Regards.

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.Bivand at nhh.no

More information about the R-sig-Geo mailing list