首页 文章

使用Leaflet在数据框或向量中绘制lat长信息

提问于
浏览
0

我有一个数据框,其中包含许多包含lat长坐标对的列 . 我希望使用传单包在 Map 中绘制这些图,以查看我的数据的外观 .

> str(siteCoor)
'data.frame':   3122 obs. of  18 variables:
 $ Longitude: num  -8.61 -8.61 -8.61 -8.61 -8.61 ...
 $ Latitude : num  52.7 52.7 52.7 52.7 52.7 ...
 $ 1        : num  -8.6 -8.6 -8.6 -8.58 -8.58 ...
 $ 2        : num  52.7 52.7 52.7 52.7 52.7 ...
 $ 3        : num  -8.61 -8.61 -8.61 -8.58 -8.58 ...
 $ 4        : num  52.7 52.7 52.7 52.7 52.7 ...
 $ 5        : num  -8.62 -8.62 -8.62 -8.58 -8.58 ...
 $ 6        : num  52.7 52.7 52.7 52.7 52.7 ...
 $ 7        : num  -8.62 -8.62 -8.62 -8.59 -8.59 ...
 $ 8        : num  52.7 52.7 52.7 52.7 52.7 ...
 $ 9        : num  -8.63 -8.63 -8.63 -8.59 -8.59 ...
 $ 10       : num  52.7 52.7 52.7 52.7 52.7 ...
 $ 11       : num  -8.63 -8.63 -8.63 -8.6 -8.6 ...
 $ 12       : num  52.7 52.7 52.7 52.7 52.7 ...
 $ 13       : num  -8.64 -8.64 -8.64 -8.6 -8.6 ...
 $ 14       : num  52.7 52.7 52.7 52.7 52.7 ...
 $ Longitude: num  -8.61 -8.61 -8.61 -8.61 -8.61 ...
 $ Latitude : num  52.7 52.7 52.7 52.7 52.7 ...

我希望在整个列表中逐行绘制'经度'和'纬度',1&2,3和4,5和6,7和8,9和10,11和12,13和14以及'经度'和'纬度' . 它需要遵循这个顺序,以使多边形有意义 .

看过R中addPolygons函数的帮助后,我发现lat和long都需要采用矢量格式 .

下面是我正在使用的代码,但当我将数据帧转换为矢量格式(使用双方括号)时,我有一个我无法理解的错误 . 我也尝试过使用as.vector函数但我无法使用它 .

有人可以提供一点方向吗?

map <- leaflet() %>%
  addTiles() %>%
  addPolygons(lng=siteCoor[[,c(1,3,5,7,9,11,13,15,17)]],lat=siteCoor[[,c(2,4,6,8,10,12,14,16,18)]])

我运行时收到的错误是:

Error in .subset2(x, ..2, exact = exact) : 
  recursive indexing failed at level 2

我的数据如下:

> head(siteCoor[,c(1,3,5,7,9,11,13,15,17)])
  Longitude         1         3         5         7         9        11        13 Longitude.1
1 -8.609117 -8.602693 -8.609117 -8.615541 -8.621770 -8.627613 -8.632894 -8.637452   -8.609117
2 -8.609117 -8.602693 -8.609117 -8.615541 -8.621770 -8.627613 -8.632894 -8.637452   -8.609117
3 -8.609117 -8.602693 -8.609117 -8.615541 -8.621770 -8.627613 -8.632894 -8.637452   -8.609117
4 -8.609117 -8.578536 -8.580931 -8.584184 -8.588194 -8.592841 -8.597983 -8.603464   -8.609117
5 -8.609117 -8.578536 -8.580931 -8.584184 -8.588194 -8.592841 -8.597983 -8.603464   -8.609117
6 -8.609117 -8.578536 -8.580931 -8.584184 -8.588194 -8.592841 -8.597983 -8.603464   -8.609117

> head(siteCoor[,c(2,4,6,8,10,12,14,16,18)])
  Latitude        2        4        6        8       10       12       14 Latitude.1
1 52.69373 52.71586 52.71620 52.71586 52.71484 52.71319 52.71094 52.70817   52.69373
2 52.69373 52.71586 52.71620 52.71586 52.71484 52.71319 52.71094 52.70817   52.69373
3 52.69373 52.71586 52.71620 52.71586 52.71484 52.71319 52.71094 52.70817   52.69373
4 52.69373 52.70049 52.70361 52.70644 52.70888 52.71085 52.71231 52.71320   52.69373
5 52.69373 52.70049 52.70361 52.70644 52.70888 52.71085 52.71231 52.71320   52.69373
6 52.69373 52.70049 52.70361 52.70644 52.70888 52.71085 52.71231 52.71320   52.69373

1 回答

  • 1

    你可以试试这个:

    m <- as.matrix(t(siteCoor), byrow=T)
    dim(m) <- c(2,length(m)/2)
    map <- leaflet() %>% addTiles() %>%
           addPolygons(lng=m[1,],lat=m[2,])
    

相关问题