Re: [R] spatstat => owin + image

2011-09-26 Thread tkdweber
Hej,

Thanks for the idea. I will try and see if I can make progress.
+ I appologise for the shortcut explanations. I'll dedicate myself to
greater accuracy in future.
tkd


--
View this message in context: 
http://r.789695.n4.nabble.com/spatstat-owin-image-tp3837023p3843284.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
and provide commented, minimal, self-contained, reproducible code.


Re: [R] spatstat => owin + image

2011-09-23 Thread Rolf Turner

On 24/09/11 02:32, tkdweber wrote:

Dear Community

I am at my wits end and seek advice.
My wish is to plot coordinates (x,y in WGS84_UMTS for the ones interested)
of sampling points.
This I can do by the standard spatstat prodcedure via owin.


You appear to  be rather confused from the very start.

The function owin() does not *plot* anything; it is used to
create an *observation window* for a spatial point pattern.
In spatstat every spatial point pattern object must include
such a window.

I then try to
add an image, which is
a map/satellite photo in the background.

You would probably do better by plotting the image first
and then adding the points on top of the image.  In general,
in my experience, plotting an image on top of points obscures
the points (hides them completely).

To avoid this you have to mess around with the value of ``alpha''
somehow, and the game is not worth the candle.

Firstly
Problem: With the current code, I can not get the edges of the image to
match the boarders of the plot
itself (not the entire plot window, solely the coordinate system)
The size of the image I have (from GPS work)


I have absolutely no idea what you are asking here.

Any ideas?

Secondly, I am confused of how to get coordinates into an owin plot. It
doesnt want to work.


Likewise.  This is far too vague for me (or anyone else) to be able
to give a reasonable answer.

Thirdly, is with spatstat only always one mark possible? Or can I
differentiate further?

I am again not sure what you are asking here, but I think
the answer is ``No.''  That is, more than one mark is ``possible''.
The marks component of a spatial point pattern (an object of
class "ppp") can be a *data frame*.  See ?ppp.

Currently the tools available in spatstat don't do much with data
frame marks, but such mark structures are allowed, and you can
write your own code to deal with such structures in any manner
you wish.

Code, for reference purposes
  CODE ~~
data data = read.xls("name.xls")

x1=floor(min( data[,2],na.rm=T )*(1-b))
x2=ceiling(max(data[,2],na.rm=T )*(1+b))
y1=floor(min(data[,3],na.rm=T )*(1-c))
y2=ceiling(max(data[,3],na.rm=T )*(1+c))
x1
x2
y1
y2

What (WTF) are b and c???

w = owin(c(x1,x2),c(y1,y2))
w
dat1 = as.ppp(data[,2:4],w)
is.ppp(dat1)
str(dat1)

#Get the plot information so the image will fill the plot box, and draw it
ima = readPNG("file.png")
lim = par()
rasterImage(ima, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
par(new=T)

plot(dat1, use.marks=T)
~~~


This code is not really much use to anyone since we don't have
access to "name.xls" or "file.png".  (Or, as indicated above, to
the values of "b" and "c".)

Read the posting guide.  Examples given should be that ``people
can actually run.''

Thank you for any advice.


I don't have any experience with readPNG() (*from the png package*, 
which

you might have mentioned!) nor with rasterImage().

However, after some thrashing around and experimenting with a toy 
example
I have come to the conclusion that the problem arises from the fact 
that

readPNG() creates a large border of white space around the image.

To fix this, I cobbled together the function:

raster2im <- function (A,xrange,yrange) {
B <- apply(A,c(1,2),function(x){rgb(x[1],x[2],x[3])})
B <- B[nrow(B):1,]
suppressWarnings({
i1 <- min(apply(B,2,function(x){min(which(x!="#FF"))}))
i2 <- max(apply(B,2,function(x){max(which(x!="#FF"))}))
j1 <- min(apply(B,1,function(x){min(which(x!="#FF"))}))
j2 <- max(apply(B,1,function(x){max(which(x!="#FF"))}))
})
C <- B[i1:i2,j1:j2]
im(C,xrange=xrange,yrange=yrange)
}

I suggest that you try something like the following:

require(spatstat)
require(png)
require(gdata)
data <- read.xls("name.xls")
X <- as.ppp(data[,2:3],window=ripras(data[,2:3],shape="rectangle"))
R <- readPNG("file.png")
IM <- raster2im(R,xrange=X$window$xrange,yrange=X$window$yrange)
plot(IM,valuesAreColours=TRUE)
plot(X,add=TRUE)

Note that raster2im() strips away any white edges from an image.  If you
actually *want* this ``white space'' (or part of it) you'll have to do 
something

else.

cheers,

Rolf Turner

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


[R] spatstat => owin + image

2011-09-23 Thread tkdweber
Dear Community

I am at my wits end and seek advice.
My wish is to plot coordinates (x,y in WGS84_UMTS for the ones interested)
of sampling points.
This I can do by the standard spatstat prodcedure via owin. I then try to
add an image, which is
a map/satellite photo in the background.

Firstly
Problem: With the current code, I can not get the edges of the image to
match the boarders of the plot
itself (not the entire plot window, solely the coordinate system)
The size of the image I have (from GPS work)

Any ideas?

Secondly, I am confused of how to get coordinates into an owin plot. It
doesnt want to work.

Thirdly, is with spatstat only always one mark possible? Or can I
differentiate further?


Code, for reference purposes
  CODE ~~
data data = read.xls("name.xls")

x1=floor(min( data[,2],na.rm=T )*(1-b))
x2=ceiling(max(data[,2],na.rm=T )*(1+b))
y1=floor(min(data[,3],na.rm=T )*(1-c))
y2=ceiling(max(data[,3],na.rm=T )*(1+c))
x1
x2
y1
y2

w = owin(c(x1,x2),c(y1,y2))
w
dat1 = as.ppp(data[,2:4],w)
is.ppp(dat1)
str(dat1)

#Get the plot information so the image will fill the plot box, and draw it
ima = readPNG("file.png")
lim = par()
rasterImage(ima, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
par(new=T)

plot(dat1, use.marks=T)
~~~

Thank you for any advice.

Kind Regards

TKD


--
View this message in context: 
http://r.789695.n4.nabble.com/spatstat-owin-image-tp3837023p3837023.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
and provide commented, minimal, self-contained, reproducible code.