Using R for geocoding on a local nominatim server

I need to geocode a huge number of addresses (> 1m addresses), so I have access to my local nominatim server. But I don't know how to access this service via R.

Can I use R package "nominatim" for geocoding on my local server? And what parameters do I need to change when using the osm_geocode function?

Thanks a lot in advance Doro

osm_geocode

function (query, country_codes = NULL, viewbox = NULL, bounded = FALSE, 
    address_details = TRUE, exclude_place_ids = NULL, limit = 1, 
    email = getOption("OSM_API_EMAIL", "nominatimrpackage@example.com"), 
    accept_language = getOption("LANG", "en-US,en;q=0.8"), key = getOption("OSM_API_KEY", 
        "")) 
{
    if (nchar(key) == 0) {
        stop("Please provide a openstreet API key")
    }
    bind_rows(pblapply(1:length(query), function(i) {
        param_base <- sprintf("%s/%s", getOption("NOMINATIM.search_base"), 
            gsub(" ", "+", query[i]))
        params <- "format=json&dedupe=0&debug=0&polygon=0"
        if (!is.null(country_codes)) 
            params <- sprintf("%s&country_codes=%s", params, 
                country_codes)
        if (!is.null(viewbox)) 
            params <- sprintf("%s&viewbox=%s", params, viewbox)
        if (!is.null(bounded)) 
            params <- sprintf("%s&bounded=%d", params, as.numeric(bounded))
        if (!is.null(exclude_place_ids)) 
            params <- sprintf("%s&exclude_place_ids=%s", params, 
                exclude_place_ids)
        if (!is.null(email)) 
            params <- sprintf("%s&email=%s", params, curl::curl_escape(email))
        if (!is.null(accept_language)) 
            params <- sprintf("%s&accept-language=%s", params, 
                curl::curl_escape(accept_language))
        params <- sprintf("%s&address_details=%d", params, as.numeric(address_details))
        params <- sprintf("%s&limit=%d", params, as.numeric(limit))
        params <- sprintf("%s&key=%s", params, key)
        if (length(query) > 1 & length(query) != i) 
            Sys.sleep(getOption("NOMINATIM.DELAY"))
        .search(param_base, params)
    }))

      

+3


source to share





All Articles