- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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)
Error in if (w.area < 0) stop(paste("Area of polygon is negative -", "maybe traversed in >wrong direction?")) : missing value where TRUE/FALSE needed
我尝试了诸如反转多边形顺序之类的方法,但得到了同样的错误。
mass.win <- owin(poly=data.frame(x=rev(mass.map$x), y=rev(mass.map$y)))
多边形包含重复的顶点
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
然后我想也许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_ringmass.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.
我收到提示顶点相交等的消息,但未能构建多边形。
有关问题的一些背景:我正在尝试使用 spatstat 中的函数进行空间相对风险计算,即病例密度与对照密度的空间比率。为此,我需要一个观察窗口和该窗口内的点图。我可以作弊,将观察窗口设置为马萨诸塞州周围的矩形,但这可能会扭曲海岸附近的值。无论如何,我想了解如何在我将来使用此包进行的任何工作中正确执行此操作。感谢您的任何帮助,您可以提供。
最佳答案
编辑 2021-02-04:我再次遇到了这个顺时针/逆时针问题,并发现我自己的答案是解决 spatstat 问题的唯一答案。答案不是很有帮助。对其进行了改进,使其可用于更广泛的应用程序。
spatstat
包希望 owin
对象坐标指定逆时针。引用1.36-0版本的文档:
single polygon: If poly is a matrix or data frame with two columns, ora structure with two component vectors x and y of equal length, thenthese values are interpreted as the cartesian coordinates of thevertices of a polygon circumscribing the window. The vertices must belisted anticlockwise. No vertex should be repeated (i.e. do not repeatthe first vertex).
library("maps")
library ("sp")
library("spatstat")
mass.map <- map("state", "massachusetts:main", fill=T)
首先,您需要确定多边形是顺时针还是逆时针运行。做法here可以用来找出答案。将其表示为函数:
#' @title Check whether points for an owin are clockwise
#' @param x a dataframe with x coordinates in the first column and y coordinates in the second.
#' @details Similarly to owin, the polygon should not be closed
#' @return A logical telling whether the polygon is arranged clockwise.
#' @author The idea has been scavenged from https://stackoverflow.com/a/1165943/1082004
clockwise <- function(x) {
x.coords <- c(x[[1]], x[[1]][1])
y.coords <- c(x[[2]], x[[2]][1])
double.area <- sum(sapply(2:length(x.coords), function(i) {
(x.coords[i] - x.coords[i-1])*(y.coords[i] + y.coords[i-1])
}))
double.area > 0
}
现在,看看mass.map
中的坐标是否是顺时针方向:
clockwise(data.frame(x=mass.map$x, y=mass.map$y))
#> TRUE
他们是。使用 rev
逆时针旋转坐标函数,反转 x
和 y
的向量:
mass.win <- owin(poly=data.frame(x=rev(mass.map$x), y=rev(mass.map$y)))
plot(mass.win)
关于r - 如何确保 spatstat::owin(poly=<polygon>) 中的多边形没有 "negative area",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18885777/
这可能非常简单,但我花了很多时间试图弄清楚但没有任何运气,也许任何人都可以帮助我。 我通过 spatstat 中的 ppm() 函数拟合了点模式模型(下面的可重现代码),当我绘制残差时,它会自动在残差
我正在分析某些粒子的生长模式,并想将点模式与强度相同(每单位面积的点数相同)的完美六角晶格的点模式进行比较。我已经编写了一个执行此操作的函数,但它有一个固有错误,我不确定它的来源。本质上,在函数运行完
我用 Java 编写了一个核密度估计器,它以 ESRI 形状文件的形式输入并输出估计表面的 GeoTIFF 图像。为了测试这个模块,我需要一个示例 shapefile,并且出于某种原因我被告知要从 R
请允许我以最简单的任务开始这个问题:如果我有四个点,它们是矩形的顶点,并以4x2矩阵存储,如何将其转换为矩形窗口? (请不要使用任何特定于绘制矩形的特殊命令,因为将矩形升高只是为了表示常规几何对象的一
我有两个名为intersections(代表街道系统的交叉路口)和users(代表网络用户)的大型数据框,如下所示: intersections 有三列:x、y 和 label_street。它们分别
我似乎无法找到如何在 R Kest 函数 (spatstat) 中计算搜索距离“r”。包裹documentation陈述如下: r Optional. Vector of values for the
我的目标是分析线性网络上关于欧几里德距离的简单点模式,而不是linearK 中实现的最短路径距离以及 spatstat 及其子函数的相关函数包。浏览网页,我发现了有前途的命名函数 linearKEuc
我试图找到由不规则多边形限制的两点之间的欧几里德距离。 (即,距离必须计算为通过给定窗口的路线) 这是一个可重现的示例: library(spatstat) #Simple example of a
你好所有潜在的帮助者, 我有一个 SpatialPolygonDataFrame从 tigris 获得的对象包,我想在创建 ppp 时将其用作多边形窗口目的。这是我尝试过的: # Needed pac
我不确定点模式分析的有效性我正在尝试使用具有模拟包络的非齐次 L-cross 函数来测试两种类型点之间的空间关联。模拟包络与观察到的数据值的图似乎很奇怪(模拟值非常大),并且它表明抑制而不是聚类(我希
我不确定点模式分析的有效性我正在尝试使用具有模拟包络的非齐次 L-cross 函数来测试两种类型点之间的空间关联。模拟包络与观察到的数据值的图似乎很奇怪(模拟值非常大),并且它表明抑制而不是聚类(我希
所以我遇到的问题很基本,但我似乎无法解决它。我一直在使用 spatstat 的 F、G、J、K 和 L 函数,我想将一个点过程的 F 函数绘制在与另一个点过程的 F 函数相同的图上。这很容易,只是我的
我的最终目标是使用包 spatstat 计算数据帧列表的 Clark-Evans-Index (clarkevans.test)。 所以我有一个我的点数据列表: points.li points.l
我有一组随机片段在 window 中绘制一种镶嵌(三角形、矩形......) (在 spatstat R 中)。我需要将它转换成一组多边形 (SpatialPolygons) 来计算一些指标(如面积、
我是 R spatstat 包的新用户,在使用 owin() 创建多边形观察窗口时遇到问题。代码如下: library("maps") library ("sp")` library("spatsta
在 R 包中 spatstat (我使用的是当前版本, 1.31-0 ),有一个选项 use.gam .当您将此设置为 true 时,您可以在线性预测器中包含平滑项,与使用 R 包 mgcv 相同的方
我是一名优秀的程序员,十分优秀!