我是 R spatstat 包的新用户,在使用 owin() 创建多边形观察窗口时遇到问题。代码如下:
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)
if (w.area < 0) stop(paste("Area of polygon is negative -", "maybe traversed in >wrong direction?")) 出错:需要 TRUE/FALSE 的地方缺少值
我尝试了诸如颠倒多边形的顺序之类的事情并得到了同样的错误。
mass.win <- owin(poly=data.frame(x=rev(mass.map$x), y=rev(mass.map$y)))
多边形包含重复的顶点
owin(poly = data.frame(x = rev(mass.map$x), y = rev(mass.map$y))) 中的多边形是自相交错误:多边形数据包含重复的顶点和自相交
然后我想也许 map() 返回的多边形并不意味着要馈送到 owin()。所以我尝试加载一个马萨诸塞州的形状文件(此时我完全在猜测)。:
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") 检查 1006 个多边形...1,多边形 1 包含重复的顶点 [检查具有 91844 条边的多边形...] 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] ...[检查具有 2449 条边的多边形...] .. [etd 4:49] ....70 [ etd 4:27] ..... [etd 4:07] ....80 [etd 3:50] ..... [etd 3:36] ....90 [etd 3:22] 。 .... [等 3:11] ....100 [等。
我收到消息抱怨顶点相交等,但它未能构建多边形。
关于问题的一些背景:我正在尝试使用 spatstat 中的函数进行空间相对风险计算,即病例密度与对照的空间比率。为此,我需要一个观察窗口和该窗口内的点图。我可以作弊,使观察窗口围绕马萨诸塞州成为一个矩形,但这可能会扭曲海岸附近的值。在任何情况下,我都想学习如何在我以后使用这个包所做的任何工作中正确地做到这一点。感谢您的任何帮助,您可以提供。