From d1009a9efd7826511c70416d4501e2d0e22ea836 Mon Sep 17 00:00:00 2001 From: Diego H Date: Thu, 21 Oct 2021 11:23:06 +0200 Subject: [PATCH] New api management --- NEWS.md | 32 +++++---- R/geo_address_lookup.R | 20 ++---- R/geo_address_lookup_sf.R | 20 ++---- R/geo_amenity.R | 23 ++----- R/geo_amenity_sf.R | 22 ++----- R/geo_lite.R | 22 ++----- R/geo_lite_sf.R | 22 ++----- R/nominatim_check_access.R | 94 ++++++++++++++++++++++----- R/reverse_geo_lite.R | 23 ++----- R/reverse_geo_lite_sf.R | 24 ++----- README.md | 4 +- codemeta.json | 2 +- man/api_call.Rd | 35 ++++++++++ man/figures/README-McDonalds-1.png | Bin 4340 -> 6019 bytes man/figures/README-line-object-1.png | Bin 4478 -> 5685 bytes man/figures/README-penta-1.png | Bin 7760 -> 9413 bytes man/nominatim_check_access.Rd | 11 +++- vignettes/McDonalds-1.png | Bin 4131 -> 5145 bytes vignettes/nominatimlite.Rmd | 4 +- vignettes/penta-1.png | Bin 7615 -> 8627 bytes 20 files changed, 194 insertions(+), 164 deletions(-) create mode 100644 man/api_call.Rd diff --git a/NEWS.md b/NEWS.md index 264c0b04..887aa0db 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,26 +1,36 @@ # nominatimlite 0.1.3 -- Skip API query tests on CRAN to avoid false positives. +- Skip API query tests on CRAN to avoid false positives. + +- Centralize API queries on (internal) function `api_call()`. + +- Queries fully honors now the [Nominatim Usage + Policy](https://operations.osmfoundation.org/policies/nominatim/). Queries + may be slower now. # nominatimlite 0.1.2 -- New internal: `nominatim_check_access()`. +- New internal: `nominatim_check_access()`. -- Adapt tests to `testthat` v3.1.0. +- Adapt tests to `testthat` v3.1.0. # nominatimlite 0.1.1 -- Adapt tests to **CRAN** checks. +- Adapt tests to **CRAN** checks. # nominatimlite 0.1.0 -- **CRAN** release. -- Adjust query rate limits to Nominatim policy. -- New `strict` argument on `geo_amenity()` and `geo_amenity_sf()`. -- Parameter `polygon` changed to `points_only` - ([#8](https://github.com/dieghernan/nominatimlite/issues/8)) thanks to - @jlacko. -- Package now falls gracefully if url not reachable. +- **CRAN** release. + +- Adjust query rate limits to Nominatim policy. + +- New `strict` argument on `geo_amenity()` and `geo_amenity_sf()`. + +- Parameter `polygon` changed to `points_only` + ([#8](https://github.com/dieghernan/nominatimlite/issues/8)) thanks to + @jlacko. + +- Package now falls gracefully if url not reachable. # nominatimlite 0.0.1 diff --git a/R/geo_address_lookup.R b/R/geo_address_lookup.R index af61e5bb..1f74403e 100644 --- a/R/geo_address_lookup.R +++ b/R/geo_address_lookup.R @@ -66,22 +66,14 @@ geo_address_lookup <- function(osm_ids, json <- tempfile(fileext = ".json") - # nocov start - res <- tryCatch( - download.file(url, json, mode = "wb", quiet = isFALSE(verbose)), - warning = function(e) { - return(NULL) - }, - error = function(e) { - return(NULL) - } - ) + res <- api_call(url, json, isFALSE(verbose)) - if (is.null(res)) { - message(url, " not reachable.", nodes) + # nocov start + if (isFALSE(res)) { + message(url, " not reachable.") result_out <- tibble::tibble(query = paste0(type, osm_ids), a = NA, b = NA) names(result_out) <- c("query", lat, long) - return(result_out) + return(invisible(result_out)) } # nocov end @@ -101,7 +93,7 @@ geo_address_lookup <- function(osm_ids, message("No results for query ", nodes) result_out <- tibble::tibble(query = paste0(type, osm_ids), a = NA, b = NA) names(result_out) <- c("query", lat, long) - return(result_out) + return(invisible(result_out)) } # Rename diff --git a/R/geo_address_lookup_sf.R b/R/geo_address_lookup_sf.R index e4d39441..30d7a9b2 100644 --- a/R/geo_address_lookup_sf.R +++ b/R/geo_address_lookup_sf.R @@ -81,21 +81,13 @@ geo_address_lookup_sf <- function(osm_ids, json <- tempfile(fileext = ".geojson") - # nocov start - res <- tryCatch( - download.file(url, json, mode = "wb", quiet = isFALSE(verbose)), - warning = function(e) { - return(NULL) - }, - error = function(e) { - return(NULL) - } - ) + res <- api_call(url, json, quiet = isFALSE(verbose)) - if (is.null(res)) { - message(url, " not reachable.", nodes) + # nocov start + if (isFALSE(res)) { + message(url, " not reachable.") result_out <- data.frame(query = paste0(type, osm_ids)) - return(result_out) + return(invisible(result_out)) } # nocov end @@ -109,7 +101,7 @@ geo_address_lookup_sf <- function(osm_ids, if (length(names(sfobj)) == 1) { message("No results for query ", nodes) result_out <- data.frame(query = paste0(type, osm_ids)) - return(result_out) + return(invisible(result_out)) } diff --git a/R/geo_amenity.R b/R/geo_amenity.R index 332f0804..e7b09c54 100644 --- a/R/geo_amenity.R +++ b/R/geo_amenity.R @@ -92,10 +92,6 @@ geo_amenity <- function(bbox, all_res <- NULL for (i in seq_len(length(amenity))) { - if (i > 1) { - Sys.sleep(1) - } - res_single <- geo_amenity_single( bbox = bbox, amenity = amenity[i], @@ -179,22 +175,15 @@ geo_amenity_single <- function(bbox, json <- tempfile(fileext = ".json") - # nocov start - res <- tryCatch( - download.file(url, json, mode = "wb", quiet = isFALSE(verbose)), - warning = function(e) { - return(NULL) - }, - error = function(e) { - return(NULL) - } - ) - if (is.null(res)) { + res <- api_call(url, json, isFALSE(verbose)) + + # nocov start + if (isFALSE(res)) { message(url, " not reachable.") result_out <- tibble::tibble(query = amenity, a = NA, b = NA) names(result_out) <- c("query", lat, long) - return(result_out) + return(invisible(result_out)) } # nocov end @@ -214,7 +203,7 @@ geo_amenity_single <- function(bbox, message("No results for query ", amenity) result_out <- tibble::tibble(query = amenity, a = NA, b = NA) names(result_out) <- c("query", lat, long) - return(result_out) + return(invisible(result_out)) } # Rename diff --git a/R/geo_amenity_sf.R b/R/geo_amenity_sf.R index f25b4a12..5e086162 100644 --- a/R/geo_amenity_sf.R +++ b/R/geo_amenity_sf.R @@ -83,10 +83,6 @@ geo_amenity_sf <- function(bbox, all_res <- NULL for (i in seq_len(length(amenity))) { - if (i > 1) { - Sys.sleep(1) - } - res_single <- geo_amenity_sf_single( bbox = bbox, amenity = amenity[i], @@ -163,21 +159,13 @@ geo_amenity_sf_single <- function(bbox, json <- tempfile(fileext = ".geojson") - # nocov start - res <- tryCatch( - download.file(url, json, mode = "wb", quiet = isFALSE(verbose)), - warning = function(e) { - return(NULL) - }, - error = function(e) { - return(NULL) - } - ) + res <- api_call(url, json, isFALSE(verbose)) - if (is.null(res)) { + # nocov start + if (isFALSE(res)) { message(url, " not reachable.") result_out <- data.frame(query = amenity) - return(result_out) + return(invisible(result_out)) } # nocov end @@ -193,7 +181,7 @@ geo_amenity_sf_single <- function(bbox, if (length(names(sfobj)) == 1) { message("No results for query ", amenity) result_out <- data.frame(query = amenity) - return(result_out) + return(invisible(result_out)) } diff --git a/R/geo_lite.R b/R/geo_lite.R index 5532fb22..ad07db4c 100644 --- a/R/geo_lite.R +++ b/R/geo_lite.R @@ -64,10 +64,6 @@ geo_lite <- function(address, all_res <- NULL for (i in seq_len(length(address))) { - if (i > 1) { - Sys.sleep(1) - } - res_single <- geo_lite_single( address = address[i], lat, @@ -124,22 +120,14 @@ geo_lite_single <- function(address, json <- tempfile(fileext = ".json") - # nocov start - res <- tryCatch( - download.file(url, json, mode = "wb", quiet = isFALSE(verbose)), - warning = function(e) { - return(NULL) - }, - error = function(e) { - return(NULL) - } - ) + res <- api_call(url, json, quiet = isFALSE(verbose)) - if (is.null(res)) { + # nocov start + if (isFALSE(res)) { message(url, " not reachable.") result_out <- tibble::tibble(query = address, a = NA, b = NA) names(result_out) <- c("query", lat, long) - return(result_out) + return(invisible(result_out)) } # nocov end @@ -160,7 +148,7 @@ geo_lite_single <- function(address, message("No results for query ", address) result_out <- tibble::tibble(query = address, a = NA, b = NA) names(result_out) <- c("query", lat, long) - return(result_out) + return(invisible(result_out)) } # Rename diff --git a/R/geo_lite_sf.R b/R/geo_lite_sf.R index 095efc76..d0c276a9 100644 --- a/R/geo_lite_sf.R +++ b/R/geo_lite_sf.R @@ -96,10 +96,6 @@ geo_lite_sf <- function(address, all_res <- NULL for (i in seq_len(length(address))) { - if (i > 1) { - Sys.sleep(1) - } - res_single <- geo_lite_sf_single( address = address[i], limit, @@ -159,21 +155,15 @@ geo_lite_sf_single <- function(address, json <- tempfile(fileext = ".geojson") + res <- api_call(url, json, quiet = isFALSE(verbose)) + + # nocov start - res <- tryCatch( - download.file(url, json, mode = "wb", quiet = isFALSE(verbose)), - warning = function(e) { - return(NULL) - }, - error = function(e) { - return(NULL) - } - ) - if (is.null(res)) { + if (isFALSE(res)) { message(url, " not reachable.") result_out <- data.frame(query = address) - return(result_out) + return(invisible(result_out)) } # nocov end @@ -187,7 +177,7 @@ geo_lite_sf_single <- function(address, if (length(names(sfobj)) == 1) { message("No results for query ", address) result_out <- data.frame(query = address) - return(result_out) + return(invisible(result_out)) } # Prepare output diff --git a/R/nominatim_check_access.R b/R/nominatim_check_access.R index f7194e4a..75139e05 100644 --- a/R/nominatim_check_access.R +++ b/R/nominatim_check_access.R @@ -1,6 +1,6 @@ #' Check access to Nominatim API #' -#' @concept helper +#' @family api_management #' #' @description #' Check if R has access to resources at @@ -8,29 +8,33 @@ #' #' @return a logical. #' -#' @examples +#' @seealso +#' #' +#' @examples +#' \donttest{ #' nominatim_check_access() +#' } #' @keywords internal #' @export nominatim_check_access <- function() { - url <- paste0( - "https://nominatim.openstreetmap.org/search?q=", - "Madrid&format=json&limit=1" - ) - # nocov start - access <- - tryCatch( - download.file(url, destfile = tempfile(), quiet = TRUE), - warning = function(e) { - return(FALSE) - } - ) + url <- "https://nominatim.openstreetmap.org/status.php?format=json" + destfile <- tempfile(fileext = ".json") + + api_res <- api_call(url, destfile, TRUE) - if (isFALSE(access)) { + # nocov start + if (isFALSE(api_res)) { return(FALSE) - } else { + } + # nocov end + result <- tibble::as_tibble(jsonlite::fromJSON(destfile, flatten = TRUE)) + + # nocov start + if (result$status == 0 || result$message == "OK") { return(TRUE) + } else { + return(FALSE) } # nocov end } @@ -47,3 +51,61 @@ skip_if_api_server <- function() { return(invisible()) # nocov end } + + +#' Helper function for centralize API queries +#' +#' @description +#' A wrapper of [utils::download.file()]. On warning on error it will +#' retry the call. Requests are adjusted to the rate of 1 query per second. +#' +#' See [Nominatim Usage +#' Policy](https://operations.osmfoundation.org/policies/nominatim/). +#' +#' @family api_management +#' +#' @inheritParams utils::download.file +#' @return A logical `TRUE/FALSE` +#' +#' @keywords internal +#' +api_call <- function(url, destfile, quiet) { + # nocov start + dwn_res <- + tryCatch( + download.file(url, destfile = destfile, quiet = quiet, mode = "wb"), + warning = function(e) { + return(FALSE) + }, + error = function(e) { + return(FALSE) + } + ) + # nocov end + # Always sleep to make 1 call per sec + Sys.sleep(1) + + # nocov start + if (isFALSE(dwn_res)) { + if (isFALSE(quiet)) message("Retrying query") + Sys.sleep(1) + + dwn_res <- + tryCatch( + download.file(url, destfile = destfile, quiet = quiet, mode = "wb"), + warning = function(e) { + return(FALSE) + }, + error = function(e) { + return(FALSE) + } + ) + } + + if (isFALSE(dwn_res)) { + return(FALSE) + } else { + return(TRUE) + } + # nocov end +} diff --git a/R/reverse_geo_lite.R b/R/reverse_geo_lite.R index 18017707..5a7d7be7 100644 --- a/R/reverse_geo_lite.R +++ b/R/reverse_geo_lite.R @@ -103,10 +103,6 @@ reverse_geo_lite <- function(lat, all_res <- NULL for (i in seq_len(length(long_cap))) { - if (i > 1) { - Sys.sleep(1) - } - res_single <- reverse_geo_lite_single( lat_cap[i], long_cap[i], @@ -163,22 +159,15 @@ reverse_geo_lite_single <- function(lat_cap, json <- tempfile(fileext = ".json") - # nocov start - res <- tryCatch( - download.file(url, json, mode = "wb", quiet = isFALSE(verbose)), - warning = function(e) { - return(NULL) - }, - error = function(e) { - return(NULL) - } - ) + res <- api_call(url, json, quiet = isFALSE(verbose)) + - if (is.null(res)) { + # nocov start + if (isFALSE(res)) { message(url, " not reachable.") result_out <- tibble::tibble(ad = NA) names(result_out) <- address - return(result_out) + return(invisible(result_out)) } # nocov end @@ -192,7 +181,7 @@ reverse_geo_lite_single <- function(lat_cap, ) result_out <- tibble::tibble(ad = NA) names(result_out) <- address - return(result_out) + return(invisible(result_out)) } diff --git a/R/reverse_geo_lite_sf.R b/R/reverse_geo_lite_sf.R index 9a584eba..06aaf144 100644 --- a/R/reverse_geo_lite_sf.R +++ b/R/reverse_geo_lite_sf.R @@ -124,11 +124,6 @@ reverse_geo_lite_sf <- function(lat, all_res <- NULL for (i in seq_len(length(long_cap))) { - if (i > 1) { - Sys.sleep(1) - } - - res_single <- reverse_geo_lite_sf_single( lat_cap[i], long_cap[i], @@ -191,22 +186,15 @@ reverse_geo_lite_sf_single <- function(lat_cap, json <- tempfile(fileext = ".geojson") - # nocov start - res <- tryCatch( - download.file(url, json, mode = "wb", quiet = isFALSE(verbose)), - warning = function(e) { - return(NULL) - }, - error = function(e) { - return(NULL) - } - ) + res <- api_call(url, json, quiet = isFALSE(verbose)) - if (is.null(res)) { + + # nocov start + if (isFALSE(res)) { message(url, " not reachable.") result_out <- tibble::tibble(ad = NA) names(result_out) <- address - return(result_out) + return(invisible(result_out)) } # nocov end @@ -243,7 +231,7 @@ reverse_geo_lite_sf_single <- function(lat_cap, result_out <- cbind(result_out, coords) } - return(result_out) + return(invisible(result_out)) } # Prepare output diff --git a/README.md b/README.md index 86409b01..7fdd75e6 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ data from the geocoder service. |:-------------------------------------------|---------:|-----------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------| | 1600 Pennsylvania Ave NW, Washington, DC | 38.89770 | -77.03655 | White House, 1600, Pennsylvania Avenue Northwest, Washington, District of Columbia, 20500, United States | | 600 Montgomery St, San Francisco, CA 94111 | 37.79520 | -122.40279 | Transamerica Pyramid, 600, Montgomery Street, Chinatown, San Francisco, San Francisco City and County, San Francisco, California, 94111, United States | -| 233 S Wacker Dr, Chicago, IL 60606 | 41.87535 | -87.63576 | South Wacker Drive, Printer’s Row, Loop, Chicago, Cook County, Illinois, 60606, United States | +| 233 S Wacker Dr, Chicago, IL 60606 | 41.87887 | -87.63591 | Willis Tower, 233, South Wacker Drive, Printer’s Row, Loop, Chicago, Cook County, Illinois, 60606, United States | To perform reverse geocoding (obtaining addresses from geographic coordinates), we can use the `reverse_geo_lite()` function. The @@ -185,7 +185,7 @@ reverse <- reverse_geo_lite( |:-------------------------------------------------------------------------------------------------------------------------------------------------------|---------:|-----------:| | White House, 1600, Pennsylvania Avenue Northwest, Washington, District of Columbia, 20500, United States | 38.89770 | -77.03655 | | Transamerica Pyramid, 600, Montgomery Street, Chinatown, San Francisco, San Francisco City and County, San Francisco, California, 94111, United States | 37.79520 | -122.40279 | -| South Wacker Drive, Printer’s Row, Loop, Chicago, Cook County, Illinois, 60606, United States | 41.87535 | -87.63576 | +| Willis Tower, 233, South Wacker Drive, Printer’s Row, Loop, Chicago, Cook County, Illinois, 60606, United States | 41.87887 | -87.63591 | For more advance users, see [Nominatim docs](https://nominatim.org/release-docs/latest/api/Search/) to check diff --git a/codemeta.json b/codemeta.json index 7e333fce..a243224e 100644 --- a/codemeta.json +++ b/codemeta.json @@ -199,7 +199,7 @@ }, "applicationCategory": "cartography", "keywords": ["r", "geocoding", "openstreetmap", "address", "nominatim", "reverse-geocoding", "rstats", "shapefile", "r-package", "spatial", "cran", "api-wrapper"], - "fileSize": "183.874KB", + "fileSize": "192.098KB", "citation": [ { "@type": "SoftwareSourceCode", diff --git a/man/api_call.Rd b/man/api_call.Rd new file mode 100644 index 00000000..96e8ee3f --- /dev/null +++ b/man/api_call.Rd @@ -0,0 +1,35 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/nominatim_check_access.R +\name{api_call} +\alias{api_call} +\title{Helper function for centralize API queries} +\usage{ +api_call(url, destfile, quiet) +} +\arguments{ +\item{url}{a \code{\link{character}} string (or longer vector e.g., + for the \code{"libcurl"} method) naming the URL of a resource to be + downloaded.} + +\item{destfile}{a character string (or vector, see the \code{url} + argument) with the file path where the downloaded file is to be + saved. Tilde-expansion is performed.} + +\item{quiet}{If \code{TRUE}, suppress status messages (if any), and + the progress bar.} +} +\value{ +A logical \code{TRUE/FALSE} +} +\description{ +A wrapper of \code{\link[utils:download.file]{utils::download.file()}}. On warning on error it will +retry the call. Requests are adjusted to the rate of 1 query per second. + +See \href{https://operations.osmfoundation.org/policies/nominatim/}{Nominatim Usage Policy}. +} +\seealso{ +Other api_management: +\code{\link{nominatim_check_access}()} +} +\concept{api_management} +\keyword{internal} diff --git a/man/figures/README-McDonalds-1.png b/man/figures/README-McDonalds-1.png index c0e4c1b8b6feff2b58c1a17a6a4ec2a7dcdcb50d..86518ab8ce62512be80308fccd6730f4cc48f169 100644 GIT binary patch literal 6019 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 literal 4340 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 Cv&nc1^v zX3xytXD1v*yJ)V}U#q63rs;af>6n_@mw=ku7d5L_z?kEEBN1@(;OG%gXEimYrKKfG z^&_EBR1}GhqBi*W_`n?!ibO(DNhCUn3jZ5O^g-$}2Ngx7E)%FEIt)?ibSg}0XrMMI z=_C~W^MGXT4rfzP$~!Mq(M4$nW7vT8j?sPN?4BuDoju+Rdl6N zNsz4{hLv1%_K;5mYy@BReBt;*`gt`qT}M}^{hsGD#>MNRI}Y8y93Xr^J)mK$*$t5n zvA$&)9I!FmJFj#gMa^J$6y(_C{nG9=W4mefS6Sf-bYrR$_1K2Pmz=A$FC*&Jk@qQo ze|U-FM8SGRUcrTYE;Ws!59R-F0wN}R%;Tyddx>zb*d8Hpm$25JrE^&7NW4CK#j|jD z#xumIEm}b5H3H%t&IQFd0oKDvT=Pm8w+%l&jB{xw7NzVJxJUR%euZ&8yvoN{4G}H~ zgGlD%;hYc(jN9CKrj1J#y-TyR5x5&*Bv)YEs;-L#@Vr~t_9osi@`NM-M$Yr+Nl`bU zGRepBrtk~tQhV{sMsUxi=vx8SW0<%|Jd_MZRaP|*+9__4`;tLl!R_Z(IJ!rWZ0^$q zEb(F;iL69e2+cPn4jU%xLi#r>f<~rs`a&YVJ64aMlz|UGTTa)DJl8MNwgsxp*$@nX?Ai$Uh+_;RhW01)HHAh|W98U!ot1UVb#Y{N*J)|wk+n%M|$KP%h)#G*WA2DR%sk87b2eTy+K zzqELJSCSU6g?H+#Pw%|`2b|t9)X*xq&>IztCNS(;gU(rnoY@v&a_lPYLNZgQfZJm0 zDoFVMHB5L_4A3qKF2(#p&LX`Z#Aa06y<#H$VV|{UV#8BQx)&Gx-9}r_%gigl>*CpX z*i&6luaQG>M>%IHjMFWSyB$Dg!=BDTfaCLLlg;O<7yONX0TS!7&rveOX*$T%2tr_L zkApumdTEL#mWDScV6$9BrQH@RwtZ0QbBcIKCA17`PjM;L1tTL?fQjnxvS67_Sx#5P zLKV?YfGFmc-=FQLVE%8HDt#xIKcI?`bW`vLU)pv!fJA0O-9g+)iIoe`)>vPriXyA6 zz)-^MS-{SrsRqrqG63i`J*HLyIlVa^8+m@^xym|ji$75d%5Dlh{8}9u$KJ#w9MwQ3 zvG+0wpV|XPimfyN6eu1Y3CP2we*vPUIJjK_4tGFP+A2^3%nh^OTmADoBu``}K#<5T z=b0Ww&DXFjaE!NGP|!8ZB?aST$87I?33J#AHno(>U(X?z2`!Py&3e#Xf@J_d`rl)m zh2sPKmLLBX^(kxq^pDXC!%+w;2eVul1!fY35q0G z;`q*na2tWMKK1X@c7*ar87gv0D8Ii^rvvt|d;0TAQl7V9vN8X(K?7@E)>p z$Udt$R2Fl{z2va9HJnx+q1NY<7X|m+9zwz)x9k_vNG>CIIlLd0-(T$4z@+a62arh3 zKej>J@F^j(FTs5Tj}X56`cI#Iv>TZi4KO>3P!9}2ER(&4#d;PLy3FhmG6Fj~CI2%8 zAz&X_53FZf0m}Twt!arwzOf4~%&wieFG;_t)_(g-QiJIRc&urO&I6T79s&H3U;!E~>`uh*pjBy> z%f^?K`Z~8YPTZhhrQwM=&~(ID0@$zeguzY_di!`<@R&=M+*%%V7y2b+2pEa?tH$N| z7;FWro;DcTzz#UrAl=v8EM#Mt9ZzoGp(S#$=CFfsUjP05>ZL{D{lBOOUoz$`(3@0l zzMVvS8&3-%IziW@oyXS!Y3wOxN~Op0@PoDJ4XP9f3NTr=yNwy~lX-`V+YCBo{Hpo| zy1Z$L^kk8G}ZLF0tkAzxGOr97?Vo+jewEH`O z;_^}HK!+r(^#MC;O6nU*N@a~e^9aZvqpQwIgo$E$! zYm(3G*&0~hj4qawWWhA0MTK(q(W!E8v$TR1!lsFh(Wmr=G=T8zq>JLKseZXDM7F17 z<0N}8Rj!4WBmIY2Ps*dob$bzZ!pT<=eHQ-RQP+!4skRdN+8Hxn`|xH?SuNdU1*c_h zXmX45DvO0b6ic3;Q_we{G*Qdnw?rIleDLG%fh<3U%Lf1Dj}S5PfL1d)>rG#@h0h@SS%kRG0X!GY?h0qkhvb#Pakg&4^sX+n z*(ml8_GD%S(#UJO*yO;aW#zbZPyj6*`59 zyz@O0T}smKb7`I}59=&J21K!kXa^|bBZ7+9$2pcjn>sk15<1;7Q`Y)WWvP(AQdo6& zR~j~UVnRr>7jV%JPehYT6h6f~`I-o&3Dd(qW)~s=m~G}LdpYl;7yrWSf=Y`R{cfU{ z&i`MOl?IHdwS0!F-;Ty1KCp;7mdu`02e}AImdj>ONk#UC zsQvK5hzWsuBkKeBpMu_hab#Lu)la<^(PZJ!#Q3T^TrDN$3RWiCBVhOHuEr(rVoLl{ zz@UiTrHh1_qgS!zY43DrtKx`8c&5ZN zC1$HepMQE1yp^-Z@F$bQjMuMPDb|OMu%|1$`pbV=yCR;X3FKmOrk4By_Ps6Qws?A6 zATWOX_Cpsgw2+I=Uxhq?8o9l?_VPpDtJnzC==d%bn2to&mOIYJ()&#LA*~FlmS3fE z>pfjqv^aUUEa0Mqx>JR3>+|ssK$3zL#%8OZ-ChBGH$l!owB&GG|B_8Au0Il|5%m$QW!}xVo&y%s! zy?P)cwC2NPzrtfyxg8oLltJNV>PV@iF4YNF#|o^}dy%HhV|wKKOaSRa;n)~6D=;3r zwC$!p@G5IZkJ7z30nin=p7de zWDzmXjw^eAK+ zF_L2&t()%>9^sQSDibD0)mY7ew6VoEi&jJg1`)f9CKzJbpJTrXz ze|ocD2&Y!Q{+Ym}`*h|I9AuN8D@5*-!CZ8Lv{qcr#^KtVdfR|VIS3%yLemut@ z{@L&IKBLWm)YR)lyO;;gsLBl+!CDHHvWo=|jSu902?lu3+UQkMqUs}w& z^;xr+Qr6kejxa5y9{{3^wE>4kK1`Gz&+x)M<9RxWY25Zy!GO;b-A@I+wgDun^X%%fa8C9 zix~bI?EU9qqr4==X4&G9Ch4q|_)^U4*gO9`xg(hdkj1iiRZia&4{tFCz=h&-jieIq zpOs-3X)GU>Z!@|~=xWssNwX6BR9PJ<7{5Ux2Poq1rqR>vz`)0cttC$bWr~4l4ZxA& zM$BN_!?!zQPQImwduyp_*yj7#x!=F*8=o5yyw^)N5V*4n|H{-cbun)lW13{(Olmhif1`N$wnb z^Ds^^7o%vLoZ`P;XZ8cHw>m$TSS(i`eL`3g221qFN%10M7ubnQBk00)Xzwl@Ar>iUQ zyocFOw$X?8cWAv-_F%`!t04yi&t}xMBDFV6~;+cz74!1VRaw)#=8T)k_p- zlnbpR@TG#+pqA_LCXM5+NAvG_UG6G0EdD*m9hoU8!Y>J{hLNq63h$WjkwIsr_2E#lu8%Rv*4%RdaPlJ24z_@&5%+Me^|g literal 4478 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 SA*u!#fG{;SKSMo*i~b)3^JD`6 diff --git a/man/nominatim_check_access.Rd b/man/nominatim_check_access.Rd index 4e1bea74..79f4594c 100644 --- a/man/nominatim_check_access.Rd +++ b/man/nominatim_check_access.Rd @@ -14,8 +14,15 @@ Check if R has access to resources at \url{https://nominatim.openstreetmap.org}. } \examples{ - +\donttest{ nominatim_check_access() } -\concept{helper} +} +\seealso{ +\url{https://nominatim.org/release-docs/latest/api/Status/} + +Other api_management: +\code{\link{api_call}()} +} +\concept{api_management} \keyword{internal} diff --git a/vignettes/McDonalds-1.png b/vignettes/McDonalds-1.png index 3a0365e76d3057f2e632c4e09252d85c9c7f0f3a..99703bf476e4f77b99de17b6c2a0d5b9e39f59a3 100644 GIT binary patch literal 5145 zcmbt2dstH0w;&a!DYrr$d*F;&S-vVWOHrl=spT_AO--2|TBd1b=|K_6G)oHeQC23F zJ!~Rn($Y*2luXQ&%*xD^L*k=+a0C^6@;f%oow?ur=YHQk?DMhqI%}`J_S);U_XSUP zCmpRNS_lL}$HjTa9s~lZnte4t#2 z;eMoBWTYD-a`s_GGK7&VRwPTx_(8{DM6wtRHwOH$SPY?>73s$MPRD{_sanWz6EY%& z42Dn$H#Phds-;4;TFQ!)vKUgiVV(}`M9b10`ZVq;YAI#mnWG?vZnCqs+t;ZZHo61f+H^2{m zVw_N^36V%K-+9|Dzqj;LO{uO~n+{*bX|Jp5=yuMoP;imw^AV13|7r_T#bG=8jcyBf zE(BLtXi)AFY3WZip$vVb<6C3CQ@|XRGaX?R_J92-T;>@6X<3!4ZdD9Oyl*(TA_)xRgR0Tq+WRUIb=<6xdZ_e$NfNIzYvw?WeNfk>l|fKj zi)_)%pC5lSqsFMN#uTXzHEh0+H(JXUVyO<-U3_=9AAU`nqU2B?H0JY)zA@G7jwPdXo087GFhCZHNL zfLtho-Hz~^s12=Rg+tKjezr_p%OrSLi_0|UGqqLpik#vTS4@&l8Vmsnb0QFUoB1S4hbzJ~nv zq~1YYfS=`V%`Ye(cyHypsEUhpwVIHbCddtjy#n46LGy ztuUt=#XU4<6J_iPIg#m_o=A07OpOvz%>E%9^c<3jl)2M*l0|8%N7&f9xtt?6#`O#Z zY=YIMM6PsloV{@}qtUlPYi6jp-{AUCe^&AE%S=n&z*pq~ML><;cgy@%1l-TxdQOi$ zpT~4vr8rvaXM5JaD*tGW;&VGHc(J1hL+@HYGbf+zctl{Gjiwl>`u!7-iK>U%A}<{D z2`cG}&?b=i_Gd&$8Ee*1I(6`sc@E(6>gX&q#|#Kn_P~mrwSd_T{tJ46U|zw4dDV&l zIW1OG(3|$6Xt_KHHs5f(hGe^_G62i;2%;XyVT;5G%Q9* zYi-jHhD_)<$gaJn_tDHx8f1R>vE6{2*4nNg3iY7l_~DV-w&WHY4A5~*vMTCX50YJJ z@mW`K4jwbnUc>0zfrA|85p~sLp<|QtE-@*v$f8>~xW%$40WSfJLO4{T!G1#V*`QF8)(kgTR#a{-zl1g*22^3rrC1# z;h@m72Zk&Owc5*PrpX&Dc%P$Q$x7-rib$jbNjdeYy1aaYH?=vV8{$>jp_rCFaAoD> z8wuS;?N9_J-fK&bC=2j~Vq*pA3ol(nQgh#2yy9awtxHNHRxw}0?jh0@@6k5vRIMq$ zx?-XI^ya#V1qBcD^S+5;4%JGg|2kM~TKQ|+2sP^EXcV`#z6_w|;fr+h8C0iUL zwvUEMX}m+rpi^=hAp~1FVbPqLfw{TjQo+w4`P`94)J%3Wf3ZazKmTp=;ffqy@-`gQ z`>xxc+4_Fl&luJ2C8B5DIvy|-el(m}VSfe>vKMyV>59`{=TL#3vawLLtiCk-0*&vu z6)6=L4^&rKs_e$c~WWG3gd{QE8@y0<#FMh$OVs>hYVXsVj^U9tx(7qi96?hH}<~hE( z183g-n%y0aHH8)!z@@KgXcmN%VVL>Nu8LP@d*xOe#3U^Nm<`iu%HFrwdCNyPKbHhc|xtp8conf0|@rCl7Y*xV}YMzV!{9Y}(CS87fJDmViH-s>Hs`I*cC+6v&I zU4#mjaW)K`;cLUByMBg@$$Zu#EzYkv=wWgR+dzm4_Qx)uz>)7&!ErDOrZLyjoY^_s zy$t5cX@2@C(J_AaEipid*IsB;TS@aXNSVu<%Ne?*ah6w1=Eq{^mX-2^s4AA}I+X=z zL*F?$bGT#~oY5-j+wQR8m3U)s;lZbAHE@;)^*REFNOP@-#w^Ob>A_`#+mbO6_0cJb zaLQ}2Qs&Al2i7+#S`Bzmb^YSzmKs^_+>yBJ?3^}1;l}uD8cfHH@^_UJO4(Ntfv%_i zry5&Iy|~UDfG$kB42;-QuJ@#jQG<(AZIZxm3AL%^QkM_-@%j$xjI~AVII#pydK+k| zl-_06YuF97!Bl@H2-jjVXs@Cp`j8eW?+r=xO?$Q+Yd`;(0x7##zg8V&B&DQs;uzaf zFemDlzH-t?w_!8y9G5)qxe|?ChnM<9V>jTXdePWTc_*Dv-PAwvU>);}+^c$f z@Fu7I0`zlfYJJ^Y47q;UTwSBj^zbIbpN$NrEZ_NvNse}^U(-jp`IM!vwy8FZ|x*pY_?;)DAb6aw2u!4rMpvhdXK{w~urNZ#G6Yl-KeT0w;5$EtJu9 zL4QuH9q*GgBx|uV(NmVc11Weg_7_1zHK<1-|bOE@8Qz1}*e-f7( zy#NeBQtm<@-#cj=joiq=>u5ujZ*n+5BZ`U!_^F1HCLB}=N>b!BaSFz2ma_%`yL`ir zpV`b6{L~vCW>NEE`Se92DV5O(vHOCdBG^6nGKA4dgm@RWP8CSz%MQT4YLDbmhnDc^ zi#d3(c0RRn^`*t}e9|I2io$X^X!XZc%3D`;eM0;SWx;MY9Mt;TJ6pn6`=?P+obHv; zSX<762LYo_iABp1(W?G4I4Fpi(=p>7j^Vc_#J6>zf=m0Jcxr4$&6&DYfEXHGId~gc zRe5B}U>res^1xCwbFFiihUzx)sg0EboiKAv(x|aIb`{ZpY&bRCyFm6?GIZ0+E1_Py zw;U;QR-a7Kf&^)H?oiY2X=xL&DkfwR907}4j$p%T%6WfGXYYM#4_w}P`P;%9M`M-{ z2m6&z6WPvZeFld1;V=zpnfnS0$DChwuT2;iyu9>l|8uU~YPr$O6?<#GpZAl>AyvO3 zhVs!D(*APlQCMASBAy$NxwPw0{Gnoxj!~=h^pB@ppXxr`4s^q&%_Df+uT3l|bQ=#E zyVf(_->?~scbq9u?9F5RQ5wVzQcZJ`sfktMLzw)x1N)b3dLyp342Q3LH65bvE|JM^S55{h{EQ^|{@XU(bUL*}cb3j(>|vQ4ZuPN4^c& zwVpawHxUm$%IV(kNHE{DT16S%zYhw@?76uzhj1jpF?R57I)>5;ug>7`s4{onl%!t; zE|p(^0*ZTN(QWU$g4i3q1H0dsa}&iWq3MWV+ukgjEYe{tKfL!@w9!5jnv#sc$RfTz zc)$?o@BE2yzO>Veoz-XiEE*aJ2j)Ul`XfOD(?k>C5q-g|@Qv^Sis^me z=_mIB=K!t5`_S|cXnU|n*2uokOJH;_@l#aVcAACQm_KRyZQ`^1dHFpH4Nkf-l5>iT za=cY=cW^L{j*#7XAZlI;nHHG;zi&eRzC($J?0yM%T6p^J8SNBrc1NEUS0ee-$$=x3m z2YyrL!nY{_RHc$!m5(uhSmlY;<2?&lqVGdWBkjw=Ug3G{d6!u7hXkW8j!Yb{`bZPe z8^51v<@sv=h+xt={VOEXw3)ayt6t1bQSFVLo+{ltj3rL5Zhuu=_3>`)s`v@+gUIC6 zT3M~SO0A5y`?K%kPS25mnxzIlE%@ubSR!j>v;Js)ggulR6}Em$R{e=og@RP8HC`8S zq@FX*0Fd z#N8gKRBpMcB?{56e2`L_xoW{BF&{)+QG=A^f2rO5?f>)t{4d;@Ip@sz-kCFJ&YAfs zJSOgl<6~?$C|Z`}JUYd3@k5n4i50 zfuQCi5VJ6gI)*?Tb3-5|_8|~HmkIz z{HSLW2or`!0%I}|2xC+2i|l!wtA?5A%%D(z^oY?Cb5Gr?S3`b7AWV)1ZQl|J49Z?h z%Lctosr$u#%an`976np+16N%hn0o(8^Y~WkSeWhMMJ0zrYKergXUP+HW_Ddz_i^8X zf~~)XuU=wQ@ZHx-A5YK?UidEuX=p6)e+p(9t<4xki_Mnp)QW5PZbEyIm(%w zkv>k{&$j&=xlUA0OS7%u?SY1NEM7A3$P{pZ>glZSC*wD3E+#SRyN;6{%8xhSzy$tT z(0eu2YSz_3o#1)fJ=f!78G{cDp!epVZQP+6&wSvfrxd6BzFs;qaDzl8?mrT}YAz}b zEAIMW1?>hKqXuoojw0Hq_q_81MBO6NwVS)anTOHGjM-tTDr4x1=L|Q+`jwt5hLUtO z8$9O1*LT5CvZRw|CyIIKPz;5c1m-(oa1a-TVb>KoYo{Fr>9B)Ui(yusAwH7)FDvZX zF<=C(6~~k$Zq`~SDP}3KG?|)oTT3u&(0DsQKg$O*O6@lk6mNhLanOzd9l?Y(3?;Bz z2t9p;6g;)j5}?W7#{HtKTqwBWe2kY75^)PU0ebR`picg zumpYWNEtpj`Z7K3M~OBhYP1pO%UV@Fw1JX&9<)cFzwu>G+U~ZFI3{U4A49?dF4c(2 zkZP(j-f{;Iia8CMELJxN~` zm(hF{Gi{NOz)s~6nZ5qSlYRaB;$Mb@sND9P0B`XVj*Sh|p#yVWmLw|OYQDd^mCB$r z7GQQ_RfY87ZN=zTa{vX8KjkFm_8oMqqw1N2CO6L2)lNw}IY%Q`E-T*_S!V{@z>uKx zUw^IKxf!x%z2?dR%LvA?ez-u{DmvQt4C>^gUlW>)&eS(MY=1vaZM58 zdmp$;9Y&`CMs-Hq3xMk&b9tmCENYEdfsfrwm1FUSWN?U!UY(bmfuXRj{7e|7r8h=A z=c7bNnJX0!H$%6wf`5AtGdU4E`6xNUwjKwW_?p3`i?7+_Bo3;1xCi?Z$*^X}_Mqgt zwsklt%-3u+y8s8J`I;T>hPMn4T|PB>0SiQ{0!L_BuWOEo^?+iCnSoX1i-{d5#sv8O zEDj2Kv=PP!tT`C=hJ};6PIFqyUHGMQ-+y#z?mTzD^|`KSCBsLZz0=R!wVwO|S|Pxe zOn_EpbJOLsL$+i+%^Cqdsa(cBDUuz}^*Or?RDQRlq+`ymBdNEb=5rLtIzMUmeBpbu z1@B*;iTP#nOf4ODx*jJAx$M}^H&(BhCWP`*=rLbmklr9-^U#Du(ek=|k$HqlHek7w&X5VTYvbNR2^9-4@vUFurw2|Tg*nW^tEy^{zQ>q-+P|y`#5ga33L(=y z5qTHU!bcN(Da-=~kT7d)VT1=90_3t}2{%ArPQy5vpUN5^qtPu}TX4|#j~YwR z_@k-@1-H#avn&X9E!cMJ3eOP3-mN-7276DXTMwZa-js+Q6k{5^ z9fMU(i&I8uM9!_cVl)XwfpIMdXJMlg^@H{2VJaAm14XvjLEp!h* z1aC;5qi-=vJ?_UzW@0grCp;D@FNwd>e!z?En%LxyeSdncq59U6K?$@Pt{aARQIXfoUzO%cY^Y18wO~ zvn>!f#g#{b&IH%Ew*f%?CogZ@CK11SK3AO*8OJ5IqHM2G6m663tWyCbN6OD@ACEtVErTL#hc8epfblxG<_8QgY=8)F2-(R){i{E~Bj_AQb zkEV#SsWP#$W9gX+G%2~K_XV7e!iv}jfWA$2mZW-i8t_=rDP|=;NSM(Bu3yC=N#hWS z+V683&F(>EBP(Gvv-@8HDr5GYHk}b8FzVsVoK84zc3-R$Xfq}$A|6ATh3>%~My)IQ zYu$q-G{+HI|F8+0*D*WWfCbD9HC`jylpC75848|N^((lnU(l_`{o#0QP#4d`0#{@$ z>}7wV>N15(Ri$fOT|*uyxE$*@L4#ccsDV~{lb~{Zj=<&IqY=!p%8=g$KSvD33fO;yX^MYaF?uA-QQf=143g;tU3M_@3nb%n_7&zct2WB;2G34yszFI&~ zs*5^XIlbOi_4=~8$VrdM#xPA%OaS$vG0r7 z76-e&Stm76eFc>$>}!(Wb@|l;U5-DZ(ixL|uftt-U#Q`?;d>Lu$4}@1`Mf_{c@?q(TZ#*o+Dy{6N z7gz63OFsf2TQMpRB6Zw07enc%O^l%P5*(n-59Q8`y#^F_=;%bSW!Y>d^YF+E_$=#) zi*{w+zJ|o_2R7w6bRnP};IwJr%0JE~bv7{kuB-WpK427={?2y0Yi#4>+^K+@2*Tm2 zZgF{-sV;sC@G)v#qk#$#r~W}B>d(8Uf{$qC%vVc^dvqys+RgNzhmlsQ-*r0lgf^** zAsTn%jg3$cFD`qDKIIi;J}u;aWdQth*PuEsf^`3N+WYUhPuu$EisIw|l;5=v&!<(} zfHgMY8u)s%_1D$T_4hAp&j(gTEmr38bj|VjyBv|V=$=95*|*rS4`~lJ6w+!-?Vf$| zuJ-FLmXR8I$@d-V{qIC8hu?{}ky_{4csI?RQBkgV9W&ck-8OLRF*=E)Q_N7Bw%@z^ znlEAWDFrvrEL8oqg`cR^{f8(yyFjwK}x;DvY z^9FB%W=}%9#w!(NL&E9Sx(hv@-LWkv8%}#D@A=;@mZ9;@wbyD7JLgSBPd=VcdG7UW zec6esT6)%k%<8vqdPCx9?8CogB+k)9*w#Gy(5{!WlDW_!zaeINeSB5h&X$m>(E#W7 zG;F|3H?6{{{I6@Gw)*~}2DRpgQJvw7?PuW&sY9m!x0wn1GZTH{k0!zu!rje%z4LlE zXLq+qcMl&=41>Z5;lWLTY+K@&WSyuh5LVei>Fk1o?+;zrA(e$^QYu CIUZF2 diff --git a/vignettes/nominatimlite.Rmd b/vignettes/nominatimlite.Rmd index a7ab4a32..ee6bca6e 100644 --- a/vignettes/nominatimlite.Rmd +++ b/vignettes/nominatimlite.Rmd @@ -113,7 +113,7 @@ the geocoder service. |:------------------------------------------|--------:|----------:|:------------------------------------------------------------------------------------------------------------------------------------------------------| |1600 Pennsylvania Ave NW, Washington, DC | 38.89770| -77.03655|White House, 1600, Pennsylvania Avenue Northwest, Washington, District of Columbia, 20500, United States | |600 Montgomery St, San Francisco, CA 94111 | 37.79520| -122.40279|Transamerica Pyramid, 600, Montgomery Street, Chinatown, San Francisco, San Francisco City and County, San Francisco, California, 94111, United States | -|233 S Wacker Dr, Chicago, IL 60606 | 41.87535| -87.63576|South Wacker Drive, Printer's Row, Loop, Chicago, Cook County, Illinois, 60606, United States | +|233 S Wacker Dr, Chicago, IL 60606 | 41.87887| -87.63591|Willis Tower, 233, South Wacker Drive, Printer's Row, Loop, Chicago, Cook County, Illinois, 60606, United States | To perform reverse geocoding (obtaining addresses from geographic coordinates), we can use the `reverse_geo_lite()` function. The arguments are similar to the @@ -134,7 +134,7 @@ reverse <- reverse_geo_lite( |:------------------------------------------------------------------------------------------------------------------------------------------------------|--------:|----------:| |White House, 1600, Pennsylvania Avenue Northwest, Washington, District of Columbia, 20500, United States | 38.89770| -77.03655| |Transamerica Pyramid, 600, Montgomery Street, Chinatown, San Francisco, San Francisco City and County, San Francisco, California, 94111, United States | 37.79520| -122.40279| -|South Wacker Drive, Printer's Row, Loop, Chicago, Cook County, Illinois, 60606, United States | 41.87535| -87.63576| +|Willis Tower, 233, South Wacker Drive, Printer's Row, Loop, Chicago, Cook County, Illinois, 60606, United States | 41.87887| -87.63591| For more advance users, see [Nominatim docs](https://nominatim.org/release-docs/latest/api/Search/) to check the diff --git a/vignettes/penta-1.png b/vignettes/penta-1.png index 15b1c28acf53bc46ad01b51caa6b07cf7db5b2dc..452505e380ed43da8b2e25bcd92dc06f39b5a9a5 100644 GIT binary patch literal 8627 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 literal 7615 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