通过标识 R 中的线来定义多边形对象



我有一个包含行的数据集,我已将它们导入R。我想仔细看看它们的坐标,如果有一些 -->(寻找多边形),请定义每个点的相同第一个和最后一个坐标。因此,我正在使用Slot,这使我能够仔细查看所需对象的详细信息。 我的最终目标是为每条线定义相同点坐标(第一个和最后一个)的数量,以便发现数据中潜在多边形的数量。 回顾我的困难是以下问题: 有多少线对象有可能成为多边形? 为此,我做了几个步骤: 第一步,我将数据读入 R。 第二步,我使用插槽仔细查看每个点的坐标(点序列表示线对象)。 第三步:我试图定义相同点的数量,但我遇到了一个错误,说找不到CRD

在下面,您可以查看代码

enter library(maptools)
#Read data directly from National Geophysical Data Center (NGDC) coastline 
#extractor. 
shorelinedat="http://www.asdar-book.org/RC1/datasets/auckland_mapgen.dat"
#Assign CRS
llCRS <- CRS("+proj=longlat +ellps=WGS84")
#Read data from mapgen into a SpatialLines object.
auck_shore <- MapGen2SL("auckland_mapgen.dat", llCRS)
#Required code to identify the lines.
lns <- slot(auck_shore, "lines")
table(sapply(lns, function(x) length(slot(x, "Lines"))))

这是我遇到错误的代码

#identifying the number of identical coordinates
islands_auck <- sapply(lns, function(x) {
+ crds <- slot(slot(x, "Lines")[[1]], "coords")
+ identical(crds[1, ], crds[nrow(crds), ])
+ })

这是错误

Error in +crds <- slot(slot(x, "Lines")[[1]], "coords") : 
object 'crds' not found

如果有人能给出提示,我将不胜感激。

这只是一个猜测,这些+真的在你的代码中吗?如果我尝试分配给一个前面带有+的变量(就像您在发布的代码示例中所做的那样),我会收到与您相同的错误:

+ crds <- 5
Error in +crds <- 5 : object 'crds' not found

运行多行代码块时,R 会在控制台中插入+以显示连续行,但这只是一个视觉效果,它们在实际代码中是非法的。

我遇到的问题与最终代码中的语法有关,我在下面修改了它们

islands_auck <- sapply(lns, function(x) {
crds <- slot(slot(x, "Lines")[[1]], "coords")
identical(crds[1, ], crds[nrow(crds), ])
})
table(islands_auck)

所以最终的结果将是

islands_auck
FALSE  TRUE 
16    64 

16 条不相等的第一个和最后一个坐标的线(闭合多边形) 64 条线,带封闭多边形

最新更新