2016-10-27 1 views
0

У меня есть dataframe, который содержит несколько столбцов, содержащих длинные координатные пары длин. Я хочу построить их на карте, используя пакет листовок, чтобы посмотреть, как выглядят мои данные.Построение lat long info в dataframe или vector with Leaflet

> 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 и 'долгота' & «Локатор» по строкам для просмотра всего списка. Он должен следовать этой последовательности, чтобы полигон имел смысл.

Посмотрев на помощь для функции addPolygons в R, я вижу, что и lat, и long должны быть в векторном формате.

Ниже приведен код, который я использую, но когда я преобразовал dataframe в векторный формат (используя двойные квадратные скобки), у меня есть ошибка, которую я не могу понять. Я также попытался использовать функцию 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 
+0

Что если вы пишете 'addPolygons (lng = siteCoor [, 1], lat = siteCoor [, 2])%>% addPolygons (lng = siteCoor [3], ш = siteCoor [4]) ... '? – HubertL

+0

Привет HubertL, мне нужно построить строки файла, а не столбцы. Если я построю их по столбцам, моя карта будет испорчена. Действительно, мне нужно взять строку 1 и передать столбцы 1 и 2 в destPoint, а затем в столбцы 3 и 4, затем 5 и 6 и так далее и так далее, до тех пор, пока не достигнет последней длинной пары lat в столбцах 17 и 18. Затем функция destPoint затем перейдите к следующей строке, строка 2, где она начинается снова. Если функция не заканчивается, в длинной паре лат в столбцах 17 и 18 будет появляться многоугольная линия с новой длинной парой лат в столбце 1 и 2 строки. Имеет ли это смысл? – TheGoat

ответ

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,]) 
+0

Привет, HubertL, это вроде сработало, но мои полигоны не выходили так, как ожидалось. Как упоминалось выше в моем первом комментарии, я ищу подробности для 3122 наблюдений, каждое наблюдение имеет 18 наблюдений -> происхождение сайта lat/long, pt1 lat/long, pt2 lat/long, pt3 lat/long, pt4 lat/long , pt5 lat/long, pt6 lat/long, pt7 lat/long и обратно на начало сайта lat/long. Когда я смотрю на значения «m» выше этих значений, они смешаны и не соответствуют значениям в siteCoor. имеет транспонирование или as.matrix, что искажает значения? – TheGoat

+0

проблема в том, что ваши данные не являются аккуратными. предложите начать с упорядочивания своих данных. – einar

+0

@einar, можете ли вы рассказать о том, что вы подразумеваете под неутолением? Каждая строка данных представляет собой ячейку, которую я пытаюсь визуализировать, и 18 наблюдений организованы в пары Lat/Long в правильной последовательности, составляющей многоугольник. – TheGoat

Смежные вопросы