--- title: "Get started with nominatimlite" description: Quick examples showing what **nominatimlite** can do for you. vignette: > %\VignetteIndexEntry{Get started with nominatimlite} %\VignetteEngine{quarto::html} %\VignetteEncoding{UTF-8} bibliography: REFERENCES.bib link-citations: true tbl-cap-location: bottom --- The goal of **nominatimlite** is to provide a lightweight interface for geocoding addresses with the [Nominatim API](https://nominatim.org/release-docs/latest/). It also allows you to return results as `sf` objects using the **sf** package. The full site with examples and vignettes is available at ## What is Nominatim? **Nominatim** is a tool for searching [OpenStreetMap](https://www.openstreetmap.org/) data by name and address ([geocoding](https://wiki.openstreetmap.org/wiki/Geocoding "Geocoding")) and generating synthetic addresses for OSM points (reverse geocoding). ## Why nominatimlite? **nominatimlite** accesses the Nominatim API without depending on **curl**. In some situations, **curl** may not be available or accessible, so **nominatimlite** uses base R functions instead. ## Recommended packages Other packages are more complete and mature than **nominatimlite** and provide similar features: - [**tidygeocoder**](https://jessecambon.github.io/tidygeocoder/) [@R-tidygeocoder]: Provides an interface to geocoding services such as Nominatim, Google, TomTom and Mapbox. - [**osmdata**](https://docs.ropensci.org/osmdata/) [@R-osmdata]: Downloads spatial data from OpenStreetMap with the [Overpass API](https://wiki.openstreetmap.org/wiki/Overpass_API). - [**arcgeocoder**](https://dieghernan.github.io/arcgeocoder/) [@R-arcgeocoder]: Provides a lightweight interface for geocoding with the ArcGIS REST API service. ## Usage ### `sf` objects With **nominatimlite** you can return `sf` objects: ``` r library(nominatimlite) # Search for Pizza Hut locations in California. CA <- geo_lite_sf("California", points_only = FALSE) pizzahut <- geo_lite_sf( "Pizza Hut, California", limit = 50, custom_query = list(countrycodes = "us") ) library(ggplot2) ggplot(CA) + geom_sf() + geom_sf(data = pizzahut, col = "red") ``` ::: {#fig-phut} ![](../man/figures/README-pizzahut-1.png){width="100%"} Locations of Pizza Hut in California ::: You can also return polygon and line objects when the Nominatim API provides them, using the option `points_only = FALSE`: ``` r sol_poly <- geo_lite_sf("Statue of Liberty, NY, USA", points_only = FALSE) ggplot(sol_poly) + geom_sf() ``` ::: {#fig-sol} ![](../man/figures/README-statue_liberty-1.png){width="100%"} Statue of Liberty ::: ### Geocoding and reverse geocoding *Note: examples are adapted from the **tidygeocoder** package.* In this first example, we geocode a few addresses with `geo_lite()`: ``` r library(tibble) # Create a data frame with addresses. some_addresses <- tribble( ~name, ~addr, "White House", "1600 Pennsylvania Ave NW, Washington, DC", "Transamerica Pyramid", "600 Montgomery St, San Francisco, CA 94111", "Willis Tower", "233 S Wacker Dr, Chicago, IL 60606" ) # Geocode the addresses. lat_longs <- geo_lite( some_addresses$addr, lat = "latitude", long = "longitude", progressbar = FALSE ) ``` This example returns only latitude, longitude and address columns from the Nominatim API. Use `full_results = TRUE` to return all available data from the Nominatim API. ::: {#tbl-geo} |query | latitude| longitude|address | |:------------------------------------------|--------:|----------:|:---------------------------------------------------------------------------------------------------------------------------------------------| |1600 Pennsylvania Ave NW, Washington, DC | 38.89764| -77.03655|White House, 1600, Pennsylvania Avenue Northwest, Downtown, Ward 2, Washington, District of Columbia, 20500, United States | |600 Montgomery St, San Francisco, CA 94111 | 37.79519| -122.40279|Transamerica Pyramid, 600, Montgomery Street, Financial District, South of Market, San Francisco, California, 94111, United States | |233 S Wacker Dr, Chicago, IL 60606 | 41.87874| -87.63596|Willis Tower, 233, South Wacker Drive, Financial District, Loop, Chicago, South Chicago Township, Cook County, Illinois, 60606, United States | Example: geocoding addresses ::: To perform reverse geocoding, use `reverse_geo_lite()` to obtain addresses from geographic coordinates. The arguments are similar to `geo_lite()`, but now we provide coordinate values with the `lat` and `long` arguments. The dataset used here is from the geocoding query above. The single-line address is returned in a column named with the `address` argument. ``` r reverse <- reverse_geo_lite( lat = lat_longs$latitude, long = lat_longs$longitude, address = "address_found", progressbar = FALSE ) ``` ::: {#tbl-rev} |address_found | lat| lon| |:-------------------------------------------------------------------------------------------------------------------------|--------:|----------:| |White House, 1600, Pennsylvania Avenue Northwest, Ward 2, Washington, District of Columbia, 20500, United States | 38.89764| -77.03655| |Sky Bar, Mark Twain Place, Financial District, South of Market, San Francisco, California, 94111, United States | 37.79519| -122.40254| |West Adams Street, Financial District, Loop, Chicago, South Chicago Township, Cook County, Illinois, 60606, United States | 41.87874| -87.63589| Example: reverse geocoding addresses ::: For more advanced users, see the [Nominatim documentation](https://nominatim.org/release-docs/latest/api/Search/) for the available parameters. ## References