Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/R-ArcGIS/arcgislayers
ArcGIS Location Services
https://github.com/R-ArcGIS/arcgislayers
Last synced: 3 months ago
JSON representation
ArcGIS Location Services
- Host: GitHub
- URL: https://github.com/R-ArcGIS/arcgislayers
- Owner: R-ArcGIS
- License: apache-2.0
- Created: 2023-02-24T18:04:30.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-24T14:06:02.000Z (3 months ago)
- Last Synced: 2024-07-25T13:11:09.003Z (3 months ago)
- Language: R
- Homepage: http://r.esri.com/arcgislayers/
- Size: 15.4 MB
- Stars: 38
- Watchers: 13
- Forks: 9
- Open Issues: 33
-
Metadata Files:
- Readme: README.Rmd
- Changelog: NEWS.md
- License: LICENSE.md
Awesome Lists containing this project
- jimsghstars - R-ArcGIS/arcgislayers - Access ArcGIS Data and Location Services (R)
README
---
output: github_document
---```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```# arcgislayers
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/license/apache-2-0)
[![R-CMD-check](https://github.com/R-ArcGIS/arcgislayers/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/R-ArcGIS/arcgislayers/actions/workflows/R-CMD-check.yaml)
[![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-brightgreen.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable)
[![](https://cranlogs.r-pkg.org/badges/arcgislayers)](https://cran.r-project.org/package=arcgislayers)The goal of `{arcgislayers}` is to provide an R interface to the [ArcGIS REST API](https://developers.arcgis.com/rest/).
## Installation
It is recommend you install and use the metapackage `{arcgis}`. You can install the development version of arcgis like so:
``` r
remotes::install_github("r-arcgis/arcgis", dependencies = TRUE)
```## Usage
### Creating a simple feature object from an ArcGIS FeatureLayer
```{r}
library(arcgis)
````arc_open()` takes a URL to create a reference to a remote ArcGIS layer, server, or table. The function can return any of the following classes (corresponding to different ArcGIS service types):
- `FeatureLayer`
- `Table`
- `FeatureServer`
- `ImageServer`
- `MapServer`
- `GroupLayer`
For example, you can create a `FeatureLayer` object based on a Feature Server URL:
```{r}
furl <- "https://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/USA_Counties_Generalized_Boundaries/FeatureServer/0"county_fl <- arc_open(furl)
county_fl
```You can then use `arc_select()` to query the feature layer object and return an `sf` object.
If no arguments are provided to `arc_select()` the entire feature layer is returned in memory as an `sf` object.
```{r}
arc_select(county_fl)
```
### Filtering using `where` or `filter_geom` argumentsYou can also use the `fields` argument to select columns or the `where` argument to subset rows.
For example, using a character vector of column names for `fields` and a simple SQL where clause for `where` you can select counties with population greater than 1,000,000:
```{r}
arc_select(
county_fl,
fields = c("state_abbr", "population"),
where = "population > 1000000"
)
```For `FeatureLayer` and `Table` objects, and sometimes `ImageServer`s, the `list_fields()` function can be helpful to check available attributes and build a `where` query:
```{r}
list_fields(county_fl)
```You can also provide a `bbox`, `sfc`, or `sfg` object to the `filter_geom` argument to perform a spatial filter. If the `sfc` object contains more than one geometry, the object is combined with `sf::st_union()`. See documentation for more (`?arc_select`).
```{r}
nc <- sf::st_read(system.file("shape/nc.shp", package="sf"))arc_select(
county_fl,
filter_geom = sf::st_bbox(nc[1,])
)
```### Creating a `SpatRaster` from an ArcGIS ImageServer
A `SpatRaster` object from the `{terra}` package can be extracted from an `ImageServer` using `arc_raster()`.
`arc_raster()` will extract the area defined by `xmin`, `ymin`, `xmax`, and `ymax`. You can optionally specify the `width` and `height` of the resultant image. Use `format` to define what type of image is returned.
```{r}
img_url <- "https://landsat2.arcgis.com/arcgis/rest/services/Landsat/MS/ImageServer"landsat <- arc_open(img_url)
res <- arc_raster(
landsat,
xmin = -71, ymin = 43,
xmax = -67, ymax = 47.5,
bbox_crs = 4326,
width = 500, height = 500
)terra::plotRGB(res, 4, 3, 2, scale = max(landsat[["maxValues"]]))
```## Authorization and publication
Authorization is not required for reading any public data sources.
Workflows that require authorization include:
- interacting with [non-public](https://doc.arcgis.com/en/arcgis-online/share-maps/share-items.htm) services,
- publishing a new service (the authorized user must also have [publishing privileges](https://doc.arcgis.com/en/arcgis-online/administer/roles.htm)), and
- modifying or deleting any existing service (the authorized user must also have [edit access](https://doc.arcgis.com/en/arcgis-online/manage-data/manage-editing-hfl.htm) to the service).### Accessing non-public data
The same functions for reading public ArcGIS Online and Enterprise services (such as `arc_open()`,`arc_read()`,`arc_select()`,`arc_raster()`, etc.) can be used to read data from non-public services by using the `token` argument.
For more information on tokens and authorization functions, see the [authorization article](https://r.esri.com/r-bridge-site/location-services/connecting-to-a-portal.html).### Publishing and modifying services from R
The package includes functions to publish data to an ArcGIS Portal:
- `add_item()`: Creates a new FeatureCollection from a `sf` or `data.frame` object
- `publish_item()`: Publishes an existing FeatureLayer
- `publish_layer()`: is a higher level wrapper around both `add_item()` and `publish_item()`There are also functions to add or modify data including `add_features()`, `update_features()`, and `delete_features()`. For a more detailed guide to adding, updating, and deleting features, view the tutorial on the [R-ArcGIS Bridge website](https://r.esri.com/r-bridge-site/location-services/workflows/add-delete-update.html).
These functions all require authorization since data cannot be published or modified anonymously in ArcGIS Online and ArcGIS Enterprise.