如何创建SpatialLine对象

时间:2015-01-17 11:24:37

标签: r spatial sp

我使用sp包创建SpatialLines对象并将其保存在对象列表allLines中。稍后我将需要将SpatialLines相互比较,但这超出了当前的问题。

到目前为止,我只需构建SpatialLines个对象。这是基于hrbrmstr的答案的最后一个代码:

library(sp)
allLines <- NULL
x <- c(1,5,4,8)
y <- c(1,3,4,7)
xy <- cbind(x,y)
xy.sp = sp::SpatialPoints(xy)
spl <- SpatialLines(list(Lines(Line(xy.sp), ID="a")))
allLines <- rbind(allLines,spl)

错误讯息:

  

(函数(classes,fdef,mtable)中的错误:无法找到   函数'proj4string'的继承方法,用于签名'“NULL”'

如何解决这个问题?

3 个答案:

答案 0 :(得分:8)

时:

library(sp)

x <- c(1,5,4,8)
y <- c(1,3,4,7)
SpatialLines(list(Lines(Line(cbind(x,y)), ID="a")))

## An object of class "SpatialLines"
## Slot "lines":
## [[1]]
## An object of class "Lines"
## Slot "Lines":
## [[1]]
## An object of class "Line"
## Slot "coords":
##      x y
## [1,] 1 1
## [2,] 5 3
## [3,] 4 4
## [4,] 8 7
## 
## 
## 
## Slot "ID":
## [1] "a"
## 
## 
## 
## Slot "bbox":
##   min max
## x   1   8
## y   1   7
## 
## Slot "proj4string":
## CRS arguments: NA
你正在寻找什么?

答案 1 :(得分:1)

回到上一个问题,试试

library(sp)
as(xy.spdf, "SpatialLines")

或者,要创建一个Lines对象(可能不是您想要的),

as(xy.spdf, "SpatialLines")@lines[[1]]

答案 2 :(得分:0)

如果您遇到此问题以找出如何制作一组(函数名brew所隐含),则可以在{{ 1}}库,位于“ SpatialLines-class”下。

我发现他们的示例有些奇怪,因此我对其进行了编辑,以使我通常可以看到数据。

SpatialLines

line plot

sp

两个空间线图均如下所示: enter image description here

请注意,在示例中,矩阵对象已命名行。我看不到这样做有什么好处,而且令人困惑,因为名称重叠但与给定的ID不对应。