# Problem with plotting map in R

While plotting the `gadm` map of Russia in `R`, I have a problem at the 180 degree meridian, where part of the Russian region is plotted separately. You can see it on the plot using the following code (it's the edge left and part is on the right). Can anyone suggest how to avoid this problem?

Here is a short version of the code for my question:

``````require(sp)

``````

I see that whuber already beat me to it, but I will post my answer anyways.

If you want to keep the data in the longlat projection, you can add the "Longitudinal Wrapping" parameter to the Proj4 string.

``````library(rgdal)

p4_new <- paste(p4, "+lon_wrap=105")

``````

This will center your map at longitude 105 degrees east.

• +1 It's nice to see this option available in `spTransform`. Jun 11, 2013 at 19:30

Project the data. This example uses a polar stereographic projection centered near the middle of Russia (longitude 105 degrees east):

``````require(rgdal)
proj4.str <- CRS("+init=epsg:3413 +lon_0=105")
The problem region is in the upper right. You can see that this region has been split into two pieces and, by virtue of the projection, reassembled into a contiguous area: the common boundary is visible. That's how it is in the data: it is explicitly represented as two separate features. To remove the visible split, you would need to merge the two pieces (an operation much more easily done with a GIS than with `R`).
• The help page for `sp` mentions that this class supports " methods including print/show, plot, subset, [, [[, \\$, names, dim, summary,..." The help page for `subset` shows its syntax. The trick is knowing which field to use for finding Moscow! I found it by looking at unique values of all the fields, finally alighting on `levels(gadm\$NAME_1)`. This led to `spplot(subset(gadm.prj, subset=(NAME_1=="Moskva")),"regions")`, which does the trick. Jun 11, 2013 at 20:45