我正在分析使用高分辨率GPS设备(精确到1厘米)记录的平面点图案。我的数据框包含UTM坐标(米)到两位小数,然后使用同样位于UTM中的研究区域多边形将其转换为ppp对象。
一切都按预期方式导入和绘图,我可以在要执行的ppp对象上运行任何spatstat
函数。但是,将数据帧转换为ppp对象时,坐标将舍入到最接近的0.1 m。
在创建ppp对象时,是否可以定义/控制小数位数?在分析相关性和间距时,我想保留低至0.01 m的有效数字。
dat <- ppp(df[,1],df[,2], window = poly_owin)
summary(dat)
Planar point pattern: 1755 points
*Pattern contains duplicated points*
Coordinates are given to 1 decimal place
i.e. rounded to the nearest multiple of 0.1 m
我在df
和dat
中都进行了检查,并且坐标未在0.1 m处被截断-数据仍在0.01 m的水平上存在。然而,dat
的Fry图显示了以10 cm为增量的规则间距,因此将点离散化为0.1 m以进行分析。
非常感谢您的帮助。
编辑(来自上一个示例的扩展数据集):
head(df)
POINT_X POINT_Y
1 337974.8571 6458115.131
2 337985.2904 6458132.547
3 337985.5247 6458131.010
4 337989.2619 6458130.392
5 337989.0793 6458128.664
6 337988.8296 6458127.859
head(coords(dat))
x y
1 337974.8571 6458115.131
2 337985.2904 6458132.547
3 337985.5247 6458131.010
4 337989.2619 6458130.392
5 337989.0793 6458128.664
6 337988.8296 6458127.859
summary(dat)
Planar point pattern: 6755 points
Average intensity 0.359048833914 points per square m
*Pattern contains duplicated points*
Coordinates are given to 1 decimal place
i.e. rounded to the nearest multiple of 0.1 m
Window: polygonal boundary
single connected closed polygon with 122 vertices
enclosing rectangle: [337968.2137, 338168.078494] x [6458047.265,
6458200.4235] m
Window area = 18813.6 square m
Unit of length: 1 m
Fraction of frame area: 0.615
编辑2
head(coords(frypoints(dat)))
x y
1 10.4333 17.4160000002
2 10.6676 15.8789999997
3 14.4048 15.2609999999
4 14.2222 13.5329999998
5 13.9725 12.7280000001
6 10.7175 12.7379999999
fryplot(dat, width = 0.3)
答案 0 :(得分:0)
这听起来很奇怪。在spatstat
中,不进行四舍五入-摘要
方法只是检测是否似乎将坐标赋予某些对象
小数位数,然后发出信号。
library(spatstat)
df <- data.frame(x = runif(4, 0, 10), y = runif(4, 0, 10))
dat <- ppp(df[,1], df[,2], window = square(10))
coords(dat)
#> x y
#> 1 0.2025274 3.458709
#> 2 9.2649444 2.272643
#> 3 5.3580148 1.270116
#> 4 8.4807510 7.745455
summary(dat)
#> Planar point pattern: 4 points
#> Average intensity 0.04 points per square unit
#>
#> Coordinates are given to 7 decimal places
#>
#> Window: rectangle = [0, 10] x [0, 10] units
#> Window area = 100 square units
df2 <- round(df, 2)
dat2 <- ppp(df2[,1], df2[,2], window = square(10))
coords(dat2)
#> x y
#> 1 0.20 3.46
#> 2 9.26 2.27
#> 3 5.36 1.27
#> 4 8.48 7.75
summary(dat2)
#> Planar point pattern: 4 points
#> Average intensity 0.04 points per square unit
#>
#> Coordinates are given to 2 decimal places
#> i.e. rounded to the nearest multiple of 0.01 units
#>
#> Window: rectangle = [0, 10] x [0, 10] units
#> Window area = 100 square units
能否请您尝试将以下输出添加到您的 问题吗?
head(df)
head(coords(dat))
编辑:当前,spatstat
使用all.equal
来猜测数据的舍入。但是,这仅适用于8位有效数字,因此,当您的坐标值较大时,它会被愚弄。确实, NOT 并不意味着坐标实际上已被截断-这只是一种猜测机制。输入数据逐字复制。您如何观察到“ dat
的Fry图以10厘米为增量显示规则间距”?您能否报告head(coords(frypoints(dat)))
的输出?
答案 1 :(得分:0)
spatstat
不舍入坐标数据。函数ppp
将输入数据直接复制到点图案对象中,而无需更改数据。
print.ppp
的打印输出提到四舍五入,因为它试图猜测数据的精确度。猜测由spatstat
函数rounding
执行,对于给定数目的数字round(x, k)
,该函数基本上检查x
是否与k
相同。
因此,我的解释是,尽管您的空间坐标数据以更高的精度记录,但实际上已离散到最接近的0.1 m。尽管rounding.ppp
有时会由于数字故障而弄错,但是您对Fry图的描述也支持相同的解释。