簡體   English   中英

通過識別R中的線來定義多邊形對象

[英]Defining polygon object by identifying lines in R

我有一個包含線的數據集,並將其導入到R中。我想仔細查看它們的坐標,並定義每個點的相同的第一個和最后一個坐標(如果有->(尋找多邊形))。 因此,我正在使用Slot,這使我能夠仔細查看所需對象的細節。 我的最終目標是為每條線定義相同的點坐標(第一個和最后一個)的數量,以便發現數據中潛在多邊形的數量。 解決我的難題是以下問題:有多少線對象有可能成為多邊形? 為此,我完成了幾個步驟:第一步,將數據讀入R。第二步,我使用slot仔細查看了每個點的坐標(點的順序代表線對象)。 第三步:我嘗試定義相同點的數量,但是遇到一個錯誤,指出找不到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條線具有閉合面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM