【发布时间】:2018-08-25 03:50:38
【问题描述】:
我有两个包含长纬度的列表,如下所示
> typeof(sec1)
[1] "list"
> sec1
lon lat
1 10.77996 76.51189
2 10.78049 76.51223
3 10.78101 76.51257
4 10.78154 76.51290
5 10.78206 76.51324
6 10.78259 76.51358
7 10.78271 76.51357
> typeof(sec2)
[1] "list"
> sec2
lon lat
1 10.77224 76.65794
2 10.77090 76.65812
3 10.76956 76.65830
4 10.76821 76.65848
5 10.76687 76.65866
6 10.76552 76.65884
7 10.76559 76.65886
8 10.76566 76.65889
9 10.76574 76.65892
我想使用 R 中的 sf 包创建一个多面几何体。
根据文档,我需要将数字矩阵列表传递给 st_multipolygon 函数...但似乎没有 crs 转换选项
我在下面的尝试
> a<-st_multipolygon(list(sec1,sec2))
Error in vapply(y, ncol, 0L) : values must be length 1,
but FUN(X[[1]]) result is length 0
失败..
我知道我犯了一些根本性的错误..有人可以帮忙
谢谢
【问题讨论】:
-
您的
sec1和sec2对象实际上是列表还是data.frames? (即尝试typeof(data.frame()))。使用dput(sec1)和dput(sec2)共享您的数据 -
谢谢我想我得到了提示.. dput 告诉他们它们是 calss data.frame...
-
所以我想我需要将它们转换为长纬度的向量..并创建两个单独的列表..然后使用它创建几何..post 我需要将其转换为 sfc crs...对吗?
-
你可以先
mp <- sf::st_multipolygon(x = list(as.matrix(sec1), as.matrix(sec2)),然后sf::st_sfc(mp) -
现在我的dput看起来像> dput(sec1)列表(c(10.77996083,76.51189278),c(10.7804860757556,76.5122294885443),C(10.7810113472407,76.512566195987),C(10.78153644457,76.5129029023281)... . 但我得到 > 扇区多边形