我是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)
如果 (w.area < 0) 出错了,停止(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()。所以我尝试加载马萨诸塞州的一个shape文件(在这一点上我完全是瞎猜的):
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、.. [预计剩余时间1小时21分52秒] ....10 [预计剩余时间36分12秒] ..... [预计剩余时间23分10秒] ....20 [预计剩余时间16分59秒] ..... [预计剩余时间13分22秒] ....30 [预计剩余时间11分01秒] ..... [预计剩余时间9分21秒] ....40 [预计剩余时间8分06秒] ..... [预计剩余时间7分09秒] ....50 [预计剩余时间6分23秒] ..... [预计剩余时间5分46秒] ....60 [预计剩余时间5分15秒] ...[正在检查具有2449个边的多边形...] .. [预计剩余时间4分49秒] ....70 [预计剩余时间4分27秒] ..... [预计剩余时间4分07秒] ....80 [预计剩余时间3分50秒] ..... [预计剩余时间3分36秒] ....90 [预计剩余时间3分22秒] ..... [预计剩余时间3分11秒] ....100 [ 等等。
我收到了关于相交顶点等问题的消息,并且无法构建多边形。
一些问题的背景:我正在尝试使用spatstat中的函数进行空间相对风险计算,即病例与对照组密度的空间比率。为此,我需要一个观察窗口和该窗口内的点图。我可以欺骗并使观察窗口成为围绕马萨诸塞州的矩形,但这可能会扭曲沿海地区的值。无论如何,我想学习如何正确地完成任何将来我使用此软件包的工作。感谢您提供的任何帮助。