Hello all,

I try to convert a sp SpatialPolygons object with a hole to a PBS PolySet 
object - my ultimate goal is to plot the polygon with hatching considering the 
hole.

My problem is that maptools/SpatialPolygons2PolySet only produces PolySet 
objects with increasing POS even for polygons with holes; however, the 
documentation of PolySet indicates that “We adopt the convention that POS goes 
from 1 to n along an outer boundary, but from n to 1 along an inner boundary, 
regardless of rotational direction.” 


#Create simple doughnut-shaped polygon
library(sp)
library(maptools)

coords1 <- matrix(c(108, -54, -108, -54, -108, 54, 108, 54, 108, -54), ncol=2, 
byrow=TRUE)
coords2 <- matrix(c(36, -18, -36, -18, -36, 18, 36, 18, 36, -18), ncol=2, 
byrow=TRUE)

polySP <- SpatialPolygons(list(Polygons(list(Polygon(coords1, hole=FALSE), 
Polygon(coords2, hole=TRUE)), ID=1)), proj4string=CRS("+proj=longlat 
+datum=WGS84"))

#Convert sp-SpatialPolygons to PBS-PolySet with maptools function
polyPBS <- SpatialPolygons2PolySet(polySP)

#-> POS for SID == 2 are increasing and thus do not reflect PBS standards for a 
polygon with a hole
   PID SID POS    X   Y
1    1   1   1  108 -54
2    1   1   2 -108 -54
3    1   1   3 -108  54
4    1   1   4  108  54
5    1   1   5  108 -54
6    1   2   1   36 -18
7    1   2   2   36  18
8    1   2   3  -36  18
9    1   2   4  -36 -18
10   1   2   5   36 -18

I believe that it would require only a small change to 
maptools/SpatialPolygons2PolySet to produce PolySet objects that meet the PBS 
standards also for polygons with holes, i.e., replace the line
        POS <- c(POS, 1:k)
with
        POS <- if(slot(srs[[j]], "hole")) c(POS, k:1) else c(POS, 1:k)
inside the loops: for (i in 1:n) … for (j in 1:m) …



Sincerely,
Daniel Schlaepfer


My session infos:
sessionInfo()
        R version 3.1.1 (2014-07-10)
        Platform: x86_64-apple-darwin13.3.0 (64-bit)

        locale:
        [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

        attached base packages:
        [1] stats     graphics  grDevices
        [4] utils     datasets  methods  
        [7] base     

        other attached packages:
        [1] PBSmapping_2.67.60 maptools_0.8-30   
        [3] sp_1.0-15         

        loaded via a namespace (and not attached):
        [1] foreign_0.8-61  grid_3.1.1     
        [3] lattice_0.20-29


-------------------------------------------------------
Daniel Schlaepfer, PhD
University of Wyoming
Laramie, WY 82071

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

Reply via email to