R: Break polygons at meridian for recentering

nowrapRecenter {maptools} | R Documentation

## Break polygons at meridian for recentering

### Description

When recentering a world map, say to change an "Atlantic" view with longitude range -180 to 180, to a "Pacific" view, with longitude range 0 to 360, polygons crossed by the new offset, here 0/360, need to be clipped into left and right sub.polygons to avoid horizontal scratches across the map. The `nowrapSpatialPolygons` function performs this operation using polygon intersection, and `nowrapRecenter` recenters the output SpatialPolygons object.

### Usage

    nowrapRecenter(obj, offset = 0, eps = rep(.Machine$double.eps^(1/2.5), 2),
     avoidGEOS = FALSE)
    nowrapSpatialPolygons(obj, offset = 0, eps=rep(.Machine$double.eps^(1/2.5), 2),
     avoidGEOS = FALSE)

### Arguments

`obj` | A SpatialPolygons object
`offset` | offset from the Greenwich meridian
`eps` | vector of two (left and right) fuzz factors to retract the ring from the offset (2.5 root to accommodate rgeos precision rules)
`avoidGEOS` | default FALSE; use polyclip or gpclib code even if rgeos is available

### Value

A SpatialPolygons object

### Author(s)

Roger Bivand

### See Also

`recenter-methods`, `nowrapSpatialLines`

### Examples

    ## Not run:
    if (require(maps)) {
    world <- map("world", fill=TRUE, col="transparent", plot=FALSE)
    worldSpP <- map2SpatialPolygons(world, world$names, CRS("+proj=longlat +ellps=WGS84"))
    worldSpP <- worldSpP[-grep("Antarctica", row.names(worldSpP)),]
    # incomplete polygons
    worldSpP <- worldSpP[-grep("Ghana", row.names(worldSpP)),]
    # self-intersection mouth of Volta
    worldSpP <- worldSpP[-grep("UK:Great Britain", row.names(worldSpP)),]
    # self-intersection Humber estuary
    worldSpPr <- recenter(worldSpP)
    plot(worldSpPr)
    title("Pacific view without polygon splitting")
    worldSpPnr <- nowrapRecenter(worldSpP)
    plot(worldSpPnr)
    title("Pacific view with polygon splitting")
    }

    ## End(Not run)
    if (rgeosStatus()) {
    crds <- matrix(c(-1, 1, 1, -1, 50, 50, 52, 52), ncol=2)
    rcrds <- rbind(crds, crds[1,])
    SR <- SpatialPolygons(list(Polygons(list(Polygon(rcrds)), ID="r1")),
     proj4string=CRS("+proj=longlat +ellps=WGS84"))
    bbox(SR)
    SRr <- recenter(SR)
    bbox(SRr)
    SRnr <- nowrapRecenter(SR)
    bbox(SRnr)
    }

[Package maptools version 0.9-3 Index]