- Changed the default
min_time
(minimum seconds elapsed per query) value to 1 (60 queries per minute) for the Location IQ service (#166). - Updated default Geocodio API URL from version 1.6 to 1.7.
- Fixed code and documentation that incorrectly referred to
mapquest_open
asmapbox_open
. - An error is now thrown if an
api_options
parameter is not compatible with the specifiedmethod
. - A message is now displayed warning that
flatten=FALSE
is ignored for Geocodio and Mapquest (the output of these services requires flattening to avoid errors). - Address component parameters (street, city, state, postal code, and country) can now be used with the ArcGIS service (#180, #ottothecow)
- The ArcGIS service now returns all available parameters by default (#177, #ottothecow)
- Fixed a bug where the Geocodio service did not pass the correct address component parameter names (#178, @ottothecow).
- Removed the
"cascade"
method forgeo()
. Usegeo_combine()
orgeocode_combine()
instead. - Removed deprecated functions:
geo_census()
geo_osm()
geo_geocodio()
geo_iq()
geo_google()
geo_opencage()
geo_mapbox()
geo_here()
geo_tomtom()
geo_mapquest()
geo_bing()
geo_arcgis()
geo_cascade()
. Use thegeo()
function instead. - Removed deprecated parameters for
geo()
andreverse_geo()
:iq_region
,geocodio_v
,param_error
,mapbox_permanent
,here_request_id
,mapquest_open
. Use theapi_options
parameter instead. - Removed deprecated parameters for
geo()
:cascade_order
,batch_limit_error
,return_type
. Instead ofreturn_type
, use theapi_options
parameter. Thecascade_order
andbatch_limit_error
parameters are no longer needed now that the"cascade"
method is removed.
- Corrected documentation for the
quiet
parameter ingeo()
andreverse_geo()
. - To fix an issue that occurred on Mac CRAN checks (#152) the vignette is now precomputed so that it does not run during
R CMD check
(ie.devtools::check()
). - Changed some default parameter values to facilitate the use of the memoise package (#154, @dpprdan).
- Added support for the Geoapify service (thanks @dpprdan). This service supports batch geocoding, but this capability is currently not implemented in tidygeocoder (see #119).
- Added the functions
geocode_combine()
andgeo_combine()
to combine the results of multiple geocoding queries. These functions are meant to replacegeo(method = "cascade")
. - Deprecated
method = "cascade"
and thecascade_order
,param_error
, andbatch_limit_error
arguments forgeo()
. - Deprecated the
return_type
,geocodio_v
,mapbox_permanent
,mapquest_open
,iq_region
, andhere_request_id
arguments in favor of the newapi_options
parameter for thegeo()
andreverse_geo()
functions. - Added a
api_options = list(geocodio_hipaa = TRUE/FALSE))
option togeo()
andreverse_geo()
functions to allow the toggling of the HIPAA-compliant Geocodio API endpoint (#137).
- Added a progress bar for single input geocoding (ie. not batch geocoding) (#38). The progress bar can be disabled with
progress_bar = FALSE
(a new parameter for thegeo()
andreverse_geo()
functions). Similar to the readr package, progress bars are shown by default if the session is interactive and the code being run is not part of an RStudio Notebook chunk or R Markdown knitting process. - Some console messages related to geocoding queries are now shown by default. These messages show the number of inputs (addresses or coordinates) submitted, the geocoding service used, and how long the query took to execute. To suppress these messages you can set
quiet = TRUE
(a new parameter for thegeo()
andreverse_geo()
functions). - Default arguments with
options()
forverbose
,quiet
, andprogress_bar
. For instanceoptions(tidygeocoder.verbose = TRUE)
changes the default value ofverbose
from FALSE to TRUE.
- Fixed a bug for Bing forward geocoding
geo()
when no results are found (#112). - Fixed a bug that occurred in reverse geocoding when passing a set of exclusively duplicate coordinates (ie. 1 unique coordinate) (#129).
- Added support for reverse geocoding with the new
reverse_geo()
andreverse_geocode()
functions. - Added support for the OpenCage geocoding service (#67) (thanks @dpprdan).
- Added support for the HERE (#74), Mapbox (#71), MapQuest (#85), TomTom (#76), Bing (#92), and ArcGIS (#98) geocoding services (thanks @dieghernan). Note that the batch geocoding capabilities for the Mapbox and ArcGIS services are not currently implemented (see #73 and #102).
- Added the
mapbox_permanent
,here_request_id
, andmapquest_open
parameters to thegeo()
andreverse_geo()
functions. - The
limit
argument can now be used with the "google" and "census" methods to control the number of results returned. These two services do not have limit arguments in their APIs so the limit is applied after the results are returned. batch_limit
is now automatically set according to the specified geocoding service unless otherwise specified.
- Changed default
method
to"osm"
(Nominatim) for thegeo()
function (it was previously"census"
). - The
geo_<method>
functions are now deprecated. - Added the
return_input
argument togeocode()
andreverse_geocode()
to provide more flexibility when using dataframes as inputs in geocoder queries. limit = NULL
can now be passed to use the defaultlimit
value for the geocoding service.- Added the
min_time_reference
,batch_limit_reference
,api_key_reference
, andapi_info_reference
datasets to more accessibly store values formin_time
,batch_limit
, the names of environmental variables for API keys, and information for documentation (such as API documentation links). geocode()
andreverse_geocode()
now requirelimit = 1
(default) unlessreturn_input = FALSE
. This fixes a bug where geocoding results could be misaligned with the input dataset whenlimit > 1
. (#88).- An error is now thrown by default if the number of inputs exceeds the batch query limit. For forward geocoding, this behavior can be toggled with the new
batch_limit_error
argument in thegeo()
function andbatch_limit_error
is set to FALSE ifmethod = "cascade"
. Whenbatch_limit_error
is FALSE then the batch query size is limited to the batch limit and executed (which was the default behavior in the previous version). - The
address_list
argument ofquery_api()
has been renamed toinput_list
to reflect that it is used for both forward and reverse queries when using the Geocodio service for batch geocoding. - The
query_api()
function now returns a named list which contains the response content and the HTTP status code. Thegeo()
andreverse_geo()
functions now use the HTTP status code directly to determine if a response is valid. - Added external tests to more thoroughly test the package with live queries (internal package tests don't run queries).
- Added functions to generate package documentation from built-in datasets (ex. the methods documentation in
geo()
andreverse_geo()
). - Converted package documentation from standard roxygen syntax to Markdown.
- Added support for the Google geocoding service (#34) (thanks @chris31415926535).
- An error is now thrown if invalid parameters are passed to geocoding services (the parameters checked are limit, address, street, city, county, state, postalcode, and country) (#53). This behavior can be toggled with the new
param_error
parameter ingeo()
(orgeocode()
). - Leading zeros on Census FIPs geography columns are now preserved (#47).
- Bug fix for
custom_query
argument with Geocodio batch geocoding (#48). - Bug fix for vctrs datatype error with cascade method (#49).
- Added more comprehensive testing for internal package functions such as package_addresses, unpackage_addresses, and get_api_query (#58).
- Per CRAN request,
order()
is no longer called on data frames (#57).
- Fixed an issue that prevented installation on R < 4.0. (#35).
- Updated package documentation. Added examples to utility functions
query_api()
andget_api_query()
.
- New geocoding services: Support for the Geocodio and Location IQ services has been added.
- Batch geocoding (geocoding multiple addresses per query) is now available for both the Census and Geocodio services.
- Full results from the geocoding services can now be returned by using
full_results = TRUE
. This will return all data provided by the geocoding service instead of just latitude and longitude coordinates. Additionally, thereturn_type = 'geographies'
argument for the Census geocoder will return geography columns. - Address component arguments: As an alternative to specifying a single-line address, address component arguments are now supported (
street
,city
,county
,postalcode
,country
). - Customizable queries: Geocoding queries can now be customized using the
limit
andcustom_query
arguments (see thegeo()
function for details). - Smart address handling: Only unique addresses are passed to geocoding services, but the rows in the original data are preserved.
- Usage limits: The OSM and IQ services by default are now limited to submitting one query per second (per the
min_time
argument ingeo()
) to respect usage limits. This should fix the past issue of users being locked out of the OSM service due to usage limit violations. - The
cascade
method can now be customized by using thecascade_order
argument (seegeo()
documentation) - Custom API URLs can now be specified. This will allow users to specify their own local Nominatim server, for instance.
- The parameters passed to the geocoding service are now displayed to the console when
verbose = TRUE
- Reduced dependencies: The package has been overhauled so that the only remaining dependencies are
tibble
,dplyr
,jsonlite
, andhttr
. The package no longer has direct dependencies ontmaptools
,stringr
,purrr
,tidyr
, andrlang
. - All geocoding queries are now directly executed by
httr
. The inbuiltapi_parameter_reference
dataset is used to map standard "generic" parameter names to the parameter names used by each specific geocoding service. - All geocoding functionality has been centralized in the
geo()
function. Users can still usegeocode()
,geo_osm()
, andgeo_census()
as before. However,geo_osm()
andgeo_census()
are now just convenience functions that callgeo()
andgeocode()
passes all addresses togeo()
for geocoding.
Per CRAN request, fixed an issue where the example for R/geocode.R
failed. The only change required was to add a library(dplyr)
statement.
Initial CRAN release. Per CRAN request:
- Replaced
print()
withwarning()
to make suppressing console output possible. - Replaced
\dontrun
with\donttest
in .R files