[R-sig-Geo] New (?) use of polypath() in package sp causing a problem?
MacQueen, Don
macqueen1 at llnl.gov
Fri Aug 10 18:43:04 CEST 2012
(see below)
On 8/10/12 1:04 AM, "Roger Bivand" <Roger.Bivand at nhh.no> wrote:
>On Fri, 10 Aug 2012, MacQueen, Don wrote:
>
>> I have encountered a problem I've never seen before.
>>
>> The problem is:
>>
>>> x11(type='Xlib')
>>> plot(sfbound)
>> Warning message:
>> In polypath(x = mcrds[, 1], y = mcrds[, 2], border = border, col = col,
>>:
>> Path drawing not available for this device
>>
>> And nothing is plotted.
>>
>> The object sfbound is a SpatialPolygonsDataFrame object with one simple
>> polygon in it.
>> Previously I have had no problem plotting such objects with
>> x11(type='Xlib').x11(type='cairo') succeeds.
>>
>>
>> It looks very likely that this relates to this entry in NEWS for R
>>2.12.0:
>>
>> -- quote --
>> Added support for polygons with holes to the graphics
>> engine. This is implemented for the pdf(),
>> postscript(), x11(type="cairo"), windows(),
>> and quartz() devices (and associated raster formats),
>> but not for x11(type="Xlib") or xfig() or
>> pictex(). The user-level interface is the
>> polypath() function in graphics and
>> grid.path() in grid.
>> -- end quote --
>>
>> That is, presuming a relatively recent change in sp in which polyplot()
>>is
>> now used and previously was not, the change described in NEWS would
>> explain why I'm seeing this.
>>
>>
>>
>> The problem is, I have found that for plots in which a very large number
>> of objects are being plotted, the Xlib version of X11() is much faster
>> than the cairo version. And I frequently plot spatial objects with
>> thousands of line segments in them, where the performance difference is
>> substantial, to the point of making use of the cairo version
>>intolerable.
>>
>> I guess the question is -- am I correct in this analysis?
>> If so, do I have any alternative when I need to plot spatial objects
>>with
>> huge numbers of points/lines/polygons in them?
>
>Don,
>
>The analysis is correct (r1248). If the hole status of Polygon objects is
>known to be correct, and the par(bg=) and pbg= values are set to match,
>the plots will be the same. polypath analyses the polygon rings itself
>and
>provides transparency in polygon painting - it doesn't paint in holes.
>The
>legacy polygon function first painted the whole exterior ring, then
>overpainted holes with the pbg= colour, which is "transparent" by
>default.
>For many purposes, polypath is preferable, but as you know, cairo is much
>slower than X11. So using X11 ought still to be OK, in the plot method
>set
>usePolypath=FALSE. We can add back an option and set the argument by
>default to that option if that would help.
>
>The details for the plot method in the code:
>
>https://r-forge.r-project.org/scm/viewvc.php/pkg/sp/R/SpatialPolygons-disp
>layMethods.R?root=rspatial&view=log
>
>and for spplot methods look in the same repository.
>
>Hope this helps,
>
>Roger
It does help, especially the pointer to usePolypath=FALSE, which lets me
plot with X11/Xlib. Thank you.
In terms of adding back an option, would that be a global option of some
sort, so that users like me don't have to supply usePolypath=FALSE every
time? That would indeed be helpful, if it's not too much trouble.
-Don
>
>>
>> Thanks
>> -Don
>>
>>
>>> str(sfbound)
>> Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
>> ..@ data :'data.frame': 1 obs. of 1 variable:
>> .. ..$ name: Factor w/ 1 level "Boundary.kml": 1
>> ..@ polygons :List of 1
>> .. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots
>> .. .. .. ..@ Polygons :List of 1
>> .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
>> .. .. .. .. .. .. ..@ labpt : num [1:2] -121.7 37.7
>> .. .. .. .. .. .. ..@ area : num 3.71e-06
>> .. .. .. .. .. .. ..@ hole : logi FALSE
>> .. .. .. .. .. .. ..@ ringDir: int 1
>> .. .. .. .. .. .. ..@ coords : num [1:8, 1:2] -122 -122 -122 -122 -122
>> ...
>> .. .. .. ..@ plotOrder: int 1
>> .. .. .. ..@ labpt : num [1:2] -121.7 37.7
>> .. .. .. ..@ ID : chr "1"
>> .. .. .. ..@ area : num 3.71e-06
>> ..@ plotOrder : int 1
>> ..@ bbox : num [1:2, 1:2] -121.7 37.7 -121.7 37.7
>> .. ..- attr(*, "dimnames")=List of 2
>> .. .. ..$ : chr [1:2] "x" "y"
>> .. .. ..$ : chr [1:2] "min" "max"
>> ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
>> .. .. ..@ projargs: chr "+proj=longlat +ellps=GRS80 +datum=NAD83
>> +no_defs +towgs84=0,0,0"
>>
>>
>>> sessionInfo()
>> R version 2.15.1 (2012-06-22)
>> Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
>>
>> locale:
>> [1] C
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets methods base
>>
>> other attached packages:
>> [1] sp_0.9-99 rmacq_1.1-8
>>
>> loaded via a namespace (and not attached):
>> [1] grid_2.15.1 lattice_0.20-6 tools_2.15.1
>>
>>
>>
>>
>
>--
>Roger Bivand
>Department of Economics, NHH Norwegian School of Economics,
>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
>
--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
More information about the R-sig-Geo
mailing list