Thanks Felix, this is the answer that I was looking for!
points <- list("sp.points", Centroids, pch = 21,col="green") polys <- list("sp.lines", Counties_lines, col="white") ptLabels = list("panel.text",LatLongs[,1],LatLongs[,2],labels=ss,col="white",pos=2) print("plotting the grob") browser() grob2 = spplot(psImg, "band1", col.regions=greys, sp.layout=list(points,ptLabels,polys),cuts=length(greys), colorkey=FALSE,scales=list(draw=TRUE)) plot(grob2) the complete example will soon be posted on my Web site: http://nceas.ucsb.edu/scicomp/GISSeminar/UseCases/MapProdWithRGraphics/OneMapProdWithRGraphics.html Regards, Rick R Felix Andrews wrote: > On 9/30/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > >> # Assume: ss[] is a char vector of point labels, one per Centroid element.. >> # display list entries for first two points >> # >> pt1 = list("sp.text",c(LatLongs[1,1],LatLongs[1,2]),ss[1],col="white",pos=2) >> pt2 = list("sp.text",c(LatLongs[2,1],LatLongs[2,2]),ss[2],col="white",pos=2) >> # >> # I could create these for all 'n' list elements I suppose, but then the >> code is not general. >> > > Look at sp.text, it is nothing but a constrained version of panel.text: > > >> sp.text >> > function (loc, txt, ...) > { > if (length(loc) != 2) > stop("loc should have length 2") > if (!is.numeric(loc)) > stop("loc should be numeric") > panel.text(loc[1], loc[2], txt, ...) > } > <environment: namespace:sp> > > So you can just do this: > ptLabels <- list("panel.text", LatLongs[,1], LatLongs[,2], labels=ss, > col="white", pos=2) > > You might also be interested in maptools::pointLabel to place the > labels so they don't overlap. > > Felix > > > On 9/30/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > >> Hello: >> >> Im working on a method to create multilayer raster/vector plots using >> spplot() and supporting functions. The question is: how do I efficiently >> add display list instructions for plotting the point labels that works >> for different sized point vectors? >> >> Here is a working 'brute force' approach (I have omitted the string parsing >> code that produces the point labels) that creates the plot and labels the >> first two points only: >> >> library(sp) >> library(rgdal) >> library(maptools) >> # >> # read files >> # >> Counties <- readShapePoly("PugetSoundCountiesClp2.shp") >> psImg <- readGDAL("PugetSoundSub1.img") >> Centroids <- readShapePoints("PSCentroidPointShape") >> >> len = length([EMAIL PROTECTED]) >> LatLongs = [EMAIL PROTECTED] >> dim(LatLongs) = c(len/2,2) >> # >> # spplot 'sp.layout' list entries (demote polygons to spatial lines). >> # >> points <- list("sp.points", Centroids, pch = 21,col="green") >> Counties_lines <- as(Counties, "SpatialLines") >> polys <- list("sp.lines", Counties_lines, col="white") >> greys <- grey(0:256 / 256) >> # >> # Assume: ss[] is a char vector of point labels, one per Centroid element.. >> # display list entries for first two points >> # >> pt1 = list("sp.text",c(LatLongs[1,1],LatLongs[1,2]),ss[1],col="white",pos=2) >> pt2 = list("sp.text",c(LatLongs[2,1],LatLongs[2,2]),ss[2],col="white",pos=2) >> # >> # I could create these for all 'n' list elements I suppose, but then the >> code is not general. >> # >> grob2 = spplot(psImg, "band1", col.regions=greys, >> sp.layout=list(points,pl1,pl2,polys),cuts=length(greys), >> colorkey=FALSE,scales=list(draw=TRUE)) >> # >> plot(grob2) >> >> Something tells me Im doing this the hard way... >> I could construct the arguments to list() dynamically with string building >> code, and then call() or eval() the command, but isnt there a much simpler >> way to 1) tell sp.layout to add the point labels or 2) add the labels to >> the >> plot in a separate command? I have tried separate text() and >> update(trellis.last.object()) commands to no avail. >> >> Suggestions? >> >> Regards, Rick Reeves / NCEAS >> >> _______________________________________________ >> R-sig-Geo mailing list >> R-sig-Geo@stat.math.ethz.ch >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo >> >> > > >
begin:vcard fn:Rick Reeves n:Reeves;Rick org:UC Santa Barbara;National Center For Ecological Analysis and Synthesis adr:Suite 300;;735 State Street;Santa Barbara;CA;93101;USA email;internet:[EMAIL PROTECTED] title:Rick Reeves, Scientific Programmer/Analyst tel;work:805 892 2533 url:http://www.nceas.ucsb.edu version:2.1 end:vcard
_______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo