Построение карты адресов в R программировании - PullRequest
0 голосов
/ 12 июля 2020

У меня есть 30 тысяч домашних адресов, и я хочу их геокодировать (т. Е. Преобразовать «123 AB C Street» в широту и долготу).

Проверил, есть ли какой-нибудь хороший инструмент но очень сбивает с толку.

Кто-нибудь может предложить какой-нибудь ресурс? Спасибо!

1 Ответ

1 голос
/ 12 июля 2020

Вот функция, которая получит один адрес из API геокодирования Google Maps:

geocodeAddress <- function(address) {
    base <- "https://maps.googleapis.com/maps/api/geocode/json?address=" 
    key  <- "your_google_maps_api_key_here"
    url  <- URLencode(paste0(base, address, "&key=", key))
    
    RJSONIO::fromJSON(url, simplify=FALSE)
}

И как его использовать:

result <- geocodeAddress("1600 Amphitheatre Parkway Mountain View, CA 94043")

Вы можете вытащить только широту и lng, например:

result_lat <- result$results[[1]]$geometry$location$lat
result_lng <- result$results[[1]]$geometry$location$lng

Для ваших 30k адресов вы можете l oop поверх каждого отдельного. Более подробную информацию можно найти на developers.google.com . Последнее, что я проверил, есть ограничения на количество запросов в секунду и общее количество бесплатных запросов в день, но я подозреваю, что стоимость 30k не очень высока.

В качестве альтернативы вы можете загружать данные в формате csv формат в геокодер UCLA: gis.ucla.edu / geocoder .

Третья альтернатива - использовать геокодер Texas A&M: geoservices.tamu.edu .

...