Для addPolylines требуются числовые значения долготы/широты, но мои значения-это числовые значения lat/lng

#r #leaflet

Вопрос:

Это короткое сообщение (я надеюсь). Я пытаюсь проложить велосипедные маршруты в своем городе с помощью листовки. Но addPolylines() не нравится мой код. В чем здесь проблема?

 api.velo.basel <- "https://data.bs.ch/api/records/1.0/search/?dataset=100032amp;q=amp;rows=21"
json.velorouten.basel <-  read_json(api.velo.basel)

df.routen <- data.frame(do.call(rbind, json.velorouten.basel[["records"]][[2]][["fields"]][["geo_shape"]][["coordinates"]]))

x <- leaflet() %>%
  addTiles() %>%
  addPolylines(data = df.routen,  lng = ~X1, lat = ~X2)

 
 

Ответ №1:

Проблема в том, что координаты задаются как список списков, а не как список чисел. Таким образом, созданный фрейм data.frame имеет столбцы типа list , а не типа numeric . Вам нужно дополнительно unlist для каждой координаты, чтобы получить стандартные числовые столбцы:

 df.routen <- data.frame(do.call(rbind, lapply(json.velorouten.basel[["records"]][[2]][["fields"]][["geo_shape"]][["coordinates"]], unlist)))
 

В качестве альтернативы (и, вероятно, более эффективного) вы также можете применить unlist к столбцам построенного вами фрейма data.frame.

Комментарии:

1. Тх, отличная помощь =)