我有一个包含行的数据集,我已将它们导入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 条线,带封闭多边形