Hi

This is a rounding (truncation) problem.
Working on a fix.

Paul

Sharpie wrote:

Michael Sumner-2 wrote:
I think there's something about the "discrete cell" versus "centre value"
interpretation here, and you are pushing the "pixels" through R's graphics
engine as well as whatever the png device has to do.

I can't enlighten you about the details of that, but by creating an image
file more directly with "pixels as data" you can get the result exactly:

test <- matrix(c(0, 255), 3, 5)
library(rgdal)
## transpose to get orientation right
x <- image2Grid(list(x = 1:ncol(test), y = 1:nrow(test), z = t(test)))
writeGDAL(x, "raster.png", driver = "PNG", type = "Byte")



On Mon, Oct 18, 2010 at 3:17 PM, Sharpie <ch...@sharpsteen.net> wrote:

I am working on dumping raster data from R into PNG files using
rasterImage().  I am working with a test matrix from the rasterImage()
example and using it to produce a PNG image with the following code:


# From the example for rasterImage(). A 3 pixel by 5 pixel b/w
checkerboard.
testImage <- as.raster(0:1, nrow=3, ncol=5)

testImage
    [,1]      [,2]      [,3]      [,4]      [,5]
[1,] "#000000" "#FFFFFF" "#000000" "#FFFFFF" "#000000"
[2,] "#FFFFFF" "#000000" "#FFFFFF" "#000000" "#FFFFFF"
[3,] "#000000" "#FFFFFF" "#000000" "#FFFFFF" "#000000"

png('test.png', width=5, height=3, units='px')

# Just want the image, no margins, boarders or other fancy stuff.
par(mar = c(0,0,0,0) )
plot.new()
plotArea = par('fig')

rasterImage(testImage, plotArea[1], plotArea[3],
 plotArea[2], plotArea[4], interpolate = FALSE )

dev.off()


However, using R 2.12.0, 64 bit on Windows 7 I have a strange issue where
the image is shifted up by one row and to the left by one row.  In other
words, the bottom row of pixels is missing along with the right column.
 The
code works as I expect it to on OS X and Debian.


Am I misusing the plotting commands in some way or should I submit an
off-by-one bugreport to Bugzilla?

Any suggestions or comments are most welcome.

-Charlie

-----
Charlie Sharpsteen
Undergraduate-- Environmental Resources Engineering
Humboldt State University
--
View this message in context:
http://r.789695.n4.nabble.com/Incorrect-positioning-of-raster-images-on-Windows-tp2999649p2999649.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
and provide commented, minimal, self-contained, reproducible code.



--
Michael Sumner
Institute for Marine and Antarctic Studies, University of Tasmania
Hobart, Australia
e-mail: mdsum...@gmail.com




Hi Micheal,

I appreciate the suggestion.  However, rgdal is very heavyweight and
installing the GDAL library is not a trivial operation automagically handled
`install.packages()` on every platform R supports.  As I am not doing
spatial analysis, I am very reluctant to add rgdal to the dependency list of
my package.

I would very much prefer to find the root cause of the difference in `png()`
behavior on Windows when compared to OS X and Linux.  If anyone on this list
has some insight to share, I would be very grateful to hear it.

I waffled a bit on whether to send this to R-help or R-devel, in the light
of day (as opposed to the foggy darkness that surrounds 2am) think it may be
more of an R-devel question.  Forwarding it there now.

-Charlie

-----
Charlie Sharpsteen
Undergraduate-- Environmental Resources Engineering
Humboldt State University

--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
p...@stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to