R:奇怪的地图格式
我得到了一个包含以下数据的文件:R:奇怪的地图格式,r,format,type-conversion,gis,geo,R,Format,Type Conversion,Gis,Geo,我得到了一个包含以下数据的文件: str(dat) List of 2 $ x: Named num [1:28643] 2714769 2728569 NA 2728569 2740425 ... ..- attr(*, "names")= chr [1:28643] "h" "h" "" "h" ... $ y: Named num [1:28643] 925000 925000 NA 925000 925000 ... ..- attr(*, "names")= chr [1:
str(dat)
List of 2
$ x: Named num [1:28643] 2714769 2728569 NA 2728569 2740425 ...
..- attr(*, "names")= chr [1:28643] "h" "h" "" "h" ...
$ y: Named num [1:28643] 925000 925000 NA 925000 925000 ...
..- attr(*, "names")= chr [1:28643] "h" "h" "" "h" ...
- attr(*, "class")= chr [1:2] "bor" "list"
dat$x[1:10]
h h h h h h h
2714769 2728569 NA 2728569 2740425 NA 2740425 2751585 NA 2751585
dat$y[1:10]
h h h h h h h
925000 925000 NA 925000 925000 NA 925000 925000 NA 925000
class(dat)
"bor" "list"
table(names(dat$x))
h
479 28164
table(names(dat$y))
h
479 28164
plot(dat,type='l')可以生成一张漂亮的地图
我在第38页的“R应用空间数据分析”(Bivand,Pebesma,Gomez-Rubio;Springer 2008)中读到了一种古老/简单的线条形式——“对象”,它在S中使用,似乎与我的文件有相似之处。此格式将行定义为“起点;终点;NA”三元组
你知道这种格式吗?
如何将其转换为sp对象
提前感谢根据您的信息,这里有一个可能的方法: 假设您的数据表示线,并且
NA
值表示每行的结束,则可以通过以下操作将数据转换为空间线:
# Creating artificial data for the example
dat <- list()
dat$x <- rnorm(1000) + rep(c(rep(0, 99), NA), 10)
dat$y <- dat$x + rnorm(1000)
# For simplicity, convert to data frame
# (this would be the first step for you to do with your data)
mydat <- data.frame(x = dat$x, y = dat$y)
# Convert each part to a line, using the NA values as breaks
mylines <- list()
last <- 1
for(i in 1:nrow(mydat)){
if(is.na(mydat$x[i])){
print(i)
mylines[[as.character(i)]] <- Lines(Line(mydat[last:(i-1),]), ID = as.character(i))
last <- i+1
}
}
# Convert to spatial lines object
mylines <- SpatialLines(mylines)
# Plot to see if it worked
plot(mylines)
#为示例创建人工数据
dat对象的类别是什么?我不知道该格式,但您似乎有一个线段列表。$x
和$y
中所有条目的名称是否始终为h
?它们可以作为识别属于不同直线/多边形的线段的候选对象。另一个问题是,在dat对象的整个长度上,结构是否始终相同,即h-h-NA
?如果没有,可能还有其他的结构…类在'class'属性中-它是'bor'-不管是什么。现在,是直线、点还是多边形?