[R] How do I ensure that the polygon in spatstat::owin(poly=<polygon>) does not have ³negative area²

MacQueen, Don macqueen1 at llnl.gov
Thu Sep 19 15:30:36 CEST 2013


I suggest taking this question to r-sig-geo, if you haven't already.
-Don

-- 
Don MacQueen

Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062





On 9/18/13 9:07 PM, "Jeff Marcus" <jeff.n.marcus at gmail.com> wrote:

>I am a new user of the R spatstat package and am having problems creating
>a
>polygonal observation window with owin(). Code follows:
>
>library("maps")
>library ("sp")`
>library("spatstat")
>mass.map <- map("state", "massachusetts:main", fill=T) # This returns
>a data frame includding x and y components that form a polygon of
>massachusetts mainland`
>
>mass.win <- owin(poly=data.frame(x=mass.map$x, y=mass.map$y)
>
> Error in if (w.area < 0) stop(paste("Area of polygon is negative -",
>"maybe traversed in >wrong direction?")) : missing value where TRUE/FALSE
>needed
>
>I tried things like reversing the order of the polygon and got same error.
>
> mass.win <- owin(poly=data.frame(x=rev(mass.map$x), y=rev(mass.map$y)))
>
> Polygon contains duplicated vertices
>
> Polygon is self-intersecting Error in owin(poly = data.frame(x =
>rev(mass.map$x), y = rev(mass.map$y))) : Polygon data contain duplicated
>vertices and self-intersection
>
>Then I figured that maybe the polygon returned by map() is not meant to be
>fed to owin(). So I tried loading a massachusetts shape file (I am totally
>taking guesses at this point).:
>
>x <- readShapePoly("../Geog/OUTLINE25K_POLY") ## The shape file for
>MASS, loaded from MassGIS website
>mass.poly <- x <- readShapePoly("../Geog/OUTLINE25K_POLY",
>force_ring=T, delete_null_obj=T) ## I got following error whether or
>not I used force_ring
>
> mass.owin <- as(mass.poly, "owin") Checking 1006 polygons...1, Polygon 1
>contains duplicated vertices [Checking polygon with 91844 edges...] 2, 3,
>.. [etd 1:21:52] ....10 [etd 36:12] ..... [etd 23:10] ....20 [etd 16:59]
>..... [etd 13:22] ....30 [etd 11:01] ..... [etd 9:21] ....40 [etd 8:06]
>..... [etd 7:09] ....50 [etd 6:23] ..... [etd 5:46] ....60 [etd 5:15]
>...[Checking polygon with 2449 edges...] .. [etd 4:49] ....70 [etd 4:27]
>..... [etd 4:07] ....80 [etd 3:50] ..... [etd 3:36] ....90 [etd 3:22]
>.....
>[etd 3:11] ....100 [ etc.
>
>I got messages complaining about intersecting vertices, etc. and it failed
>to build the polygon.
>
>Some context on problem: I am trying to use functions in spatstat for
>spatial relative risk calculations, i.e, the spatial ratio of denstity of
>cases vs. controls. For that I need an observation window and point plot
>within that window. I could cheat and make the observation window a
>rectangle around massachusetts but that would presumably distort values
>near the coast. In any case, I'd like to learn how to do this right for
>any
>future work I do with this package. Thanks for any help you can provide.
>
>Note: I cross-posted this to STack Overflow and then realized that r-help
>is probably a better forum.
>
>
> Jeff
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>R-help at 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.



More information about the R-help mailing list