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

时间:2016-10-27 22:44:31

标签: r vector dataframe leaflet

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

> 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 个答案:

答案 0 :(得分: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,])