Skip to content

[spatstat] problem with a psp Line Segment Pattern when plotting and pointsOnlines performing

5 messages · Michael Sumner, Mathieu Rajerison

#
Hi,

I Have a problem with a psp object.

I can't plot it, neither perform a pointsOnLines calculation on it.

---
Here is what I obtain with my different operations:
OGR data source with driver: ESRI Shapefile
Source: "voie.shp", layer: "voie"
with 1 features and 14 fields
Feature type: wkbLineString with 2 dimensions
Message d'avis :
In as.psp.SpatialLinesDataFrame(from) : 13 columns of data frame discarded
Erreur dans image.default(c(893999.767449278, 895777.422954333), c(Inf, -Inf
:
'x' and 'y' values must be finite and non-missing

#plot(track) is OK
Erreur dans ppp(x = x, y = y, window = win) :
all coordinate values are NA or NaN
---

Any help would be appreciated.

The related SpatialLinesDataFrame track object is attached to this mail if
you'd like to have a look..

Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20110922/f5a904b5/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: track.RData
Type: application/octet-stream
Size: 2925 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20110922/f5a904b5/attachment.obj>
#
The problem is that the first attribute on the track object, "ID" is
NA - and when plot.psp is trying to draw a legend it has nothing to
base the image "ribbon" on.

This should avoid the error:

plot(track.psp, ribbon = FALSE)

Try subsetting the attributes in the coercion to psp, choose which
column you want from names(track) but note that with only one row the
ribbon legend will never be very interesting:

track.psp <- as(track[,"PREC_PLANI"], "psp")

plot(track.psp)

Finally, do include sessionInfo() as requested - you have not let us
know that you require packages sp, rgdal, maptools, and spatstat - and
all of that is very important when determining what is going on.

Cheers, Mike.

On Thu, Sep 22, 2011 at 7:29 PM, Mathieu Rajerison
<mathieu.rajerison at gmail.com> wrote:

  
    
#
It seems it is because one of your line segments is of length zero,
using your attachment:

load("track.RData")
library(spatstat)
which(!lengths.psp(track.psp) > 0)
[1] 17

Dropping the offender:

noZeroLengths <- track.psp[lengths.psp(track.psp) > 0]

(pts <- pointsOnLines(noZeroLengths, eps=50))
 planar point pattern: 1134 points
window: rectangle = [865841.7, 888666.8] x [6265115, 6300668] units

You might want to investigate why you have a zero length line segment
in your original shapefile, there's a lot of options for what you
might do in R but where you catch it depends on your main goals I
guess.

I think there are some good suggestions here for catching these cases
in spatstat and sp, but I haven't looked closely enough yet to say
anything helpful.

Cheers, Mike.

On Thu, Sep 22, 2011 at 9:00 PM, Mathieu Rajerison
<mathieu.rajerison at gmail.com> wrote: