2015-03-21 2 views
4

Я работаю над блестящим приложением для R, и я пытаюсь использовать пакет RDSTK для изменения геокодирования списка пар lat/lon и получения CITY из результатов json и сохранить его в списке. Рабочий процесс:RDSTK: Обратный геокод lat/lon to city (с использованием координат2политики)

  1. SQLDF для выбора всех записей в диапазоне дат.
  2. Обратные записи геокода и добавление столбца в кадр данных с конкретным городом.
  3. Снова используйте SQLDF, чтобы получать счета по городам.

У меня возникли проблемы с пониманием того, как принимать выходные данные JSON, преобразовывать их в кадр данных, а затем возвращать обратно в исходный кадр данных. Любая помощь приветствуется! Смотрите ниже код для справки: рамка

данных:

df <- data.frame(lat=c(34.048381, 37.757836, 40.729855, 42.356391), 
      lon=c(-118.266164, -122.441033, -73.987921, -71.062307)) 

Я был в состоянии извлечь город из возвращенного списка JSON, но я не могу за жизнь мне, выяснить, как это сделать несколько раз для большего списка пар lat/lon. Поиск по StackOverflow в основном результаты в DSTK за пределами R.

Мой идеальный выход будет:

lat  lon   city 
34.048381 -118.266164 Los Angeles 
37.757836 -122.441033 San Francisco 
40.729855 -73.987921 New York 
42.356391 -71.062307 Boston 

Я также попробовал этот пример: R: How to GeoCode a simple address using Data Science Toolbox хотя я не могу показаться, чтобы реорганизовать его coordinates2politics ,

Любой вход?

ответ

2

Звук круто. У меня были некоторые проблемы с RDSTK в последнее время ... Я предполагаю, что the stock server больше не работает на вас, как на автора blog describes. Очень жаль.

Вот два обходных пути. Вы могли бы взять оригинальные пары lat/lon, используя файл городских мест из файла тигров и использовать% over% в пакете sp, а затем вытащить имя из возвращенной формы. Это должно быть быстрее, чем повторные вызовы API.

Однако у меня такая же потребность в открытом геокодере в R, и есть несколько вариантов. Проверьте ggmap, на который ссылается ответ LukeA, - может использовать DSTK (теперь несуществующий) и представляет собой простой интерфейс API Google для всего нескольких вызовов. Также см. this fantstic post, описывающий, как использовать census bureau's geocoder API. Напишите небольшую функцию обертки для обработки JSON, и вам хорошо идти. Этот код работал для меня по состоянию на 1 января 2012 года.

+0

Я ценю это, Дрю, спасибо. Я отредактирую. Кроме того, у меня есть работоспособная версия с использованием чего-то другого, кроме RDSTK. –

+0

thx bud happy new year – Drew

+0

Я проголосовал за это как ответ, хотя я отказался от RDSTK или других обратных геокодеров на основе API. Я решил просто создать один в R, который использует файлы TIGER и запускается как задание cron в R. Делает намного лучшую работу при работе навалом. –

5

FWIW, вот один простой альтернативой с помощью API Google:

library(ggmap) 
res <- lapply(with(df, paste(lat, lon, sep = ",")), geocode, output = "more") 
transform(df, city = sapply(res, "[[", "locality")) 
# lat  lon   city 
# 1 34.04838 -118.26616 los angeles 
# 2 37.75784 -122.44103 san francisco 
# 3 40.72986 -73.98792  new york 
# 4 42.35639 -71.06231  boston 
+0

Спасибо lukeA! Я видел этот вариант, хотя у меня есть сотни тысяч записей, поэтому gmaps могли бы отключить меня очень быстро. –

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

  • Нет связанных вопросов^_^