[R-sig-Geo] Map2points() substitute for class "map"

Roger Bivand Roger.Bivand at nhh.no
Mon Feb 12 21:14:38 CET 2007


On Mon, 12 Feb 2007, Fernando Mayer wrote:

> Roger, thanks for your explanations. Thanks also to Edzer Pebesma who 
> provided soma additional improvements. However, now I think I have 2 
> problems, as follows:
> 
> Roger Bivand escreveu:
> 
> > If you comment out the lines:
> > 
> > #  if(missing(map)) stop("map object is missing.")
> > #  if(!inherits(map, "Map")) stop("Map.obj must be of class Map")
> > #  if(missing(variable)) stop("variable to be plot is missing")
> > 
> > in ProportionalSymbolMap(), and rename the map argument as verts, you can 
> > pass the coordinates in:
> > 
> > library(maps)
> > map <- map("county", "illinois", fill=TRUE, col="transparent", plot=FALSE)
> > library(maptools)
> > str(map)
> > ID <- substring(map$names, 10)
> > ill <- map2SpatialPolygons(map, ID, proj4string=CRS("+proj=longlat"))
> > plot(ill, axes=TRUE)
> > x <- runif(102)
> > ProportionalSymbolMap_rev(coordinates(ill), x, max.size=0.3)
> 
> # Problem 1
> 
> Doing exactly this, I have an error in
> 
>  > plot(ill, axes=TRUE)
> Error in as.vector(x, "double") : cannot coerce to vector
> 
> and I was not able to find out what is going wrong. However if I do
> 
>  > map("county", "illinois", fill=TRUE, col="transparent", plot=T)
> 
> before all that code code and ignore the error, I can see the map with 
> the proportional symbols. So I don't know exactly how long this error 
> influence on what was to be the point here. But, I understood 
> something new here and know comes the

At a distance it's difficult to say - but from #2 below, it doesn't 
matter, because the map is only a background, it does nothing itself.

> 
> # Problem 2
> 
> As far as I could understand, the polygon IDs are used to identify 
> where the symbols are to be plotted (after the processment with 
> map2SpatialPolygons()). Maybe it was my mistake haven't said this 
> before, but what I'm trying to do is to plot the symbols not in the 
> land, but in the ocean. So I think there's no polygon IDs in this case 
> isn't?

Well, using map() to access boundary data is usually to attach data to the
polygons, but your case is different, you only need a background. My first
idea would be to see whether the PBSmapping package already has what you
need - they are Northern Pacific, but that doesn't have to hurt for your
South Atlantic location. 

I think that I would try to get the coastlines you need from map() or
Rgshhs() in maptools (possibly with a higher resolution GSHHS database),
and convert them to a PBSmapping object. The reason for suggesting
PBSmapping is that the functions provided there are for fisheries
research, and so may be closer to you than more general functions.

library(maptools)
gshhs.c.b <- system.file("share/gshhs_c.b", package="maptools")
SA <- Rgshhs(gshhs.c.b, xlim=c(295,340), ylim=c(-10,-55))$SP
plot(SA, axes=TRUE, col="grey")
SA_PBS <- SpatialPolygons2PolySet(SA)
plotMap(SA_PBS)

I found the map on page 19 of their User Guide quite like what you are 
after, but they choose to colour-fill the quadrats.
 
The same things can be done with generic sp class objects too.

Roger

> 
> What I'm trying to do exactly is maps to plot fishery data, with the 
> symbols proportional to catch, effort, etc. I was trying something 
> like this [1], which is a function using map(), degAxis(), quantile(), 
> points(), legend(), etc. However I would like to improve this, mainly 
> the legend and the way the symbols are plotted. That's why I was 
> trying the ProportionalSymbolMap(). But now, because of the polygon 
> IDs I'm not sure anymore how this could be done.
> 
> [1] http://img468.imageshack.us/img468/9397/rplot005us9.png
> 
> Thanks again for the explanations,
> 

-- 
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