If you haven’t seen the rangemap short tutorial I, short tutorial II, and short tutorial III, take a look at them for more background on the **rangemap** R package.

In this example we will explore three functions of this package that allow the users to create species range maps using the outputs of the functions *rangemap_boundaries*, *rangemap_buffer*, *rangemap_enm*, *rangemap_hull*, and *rangemap_tsa*.

**Species range based on buffers**

The function *rangemap_buffer* generates a distributional range for a given species by buffering provided occurrences using a defined distance. See the function’s help for more details.

```
# Getting the data
data("occ_d", package = "rangemap")
# Defining parameters
<- 100000 # buffer distance in meters
dist
# Now we can create the species range based on buffers
<- rangemap_buffer(occurrences = occ_d, buffer_distance = dist) buff_range
```

**Species range based on convex hulls**

With the *rangemap_hull* function we can generate a distributional range for a given species by buffering provided occurrences using a defined distance. See the function’s help for more details.

```
# Defining parameters
<- 100000
dist <- "convex"
hull
# Now we can create the species range based on administrative areas
<- rangemap_hull(occurrences = occ_d, hull_type = hull,
hull_range buffer_distance = dist)
```

**Species range based on concave hulls**

The function *rangemap_hull* generates a distributional range for a given species based on provided occurrences and two distinct type of hulls, convex and concave. See the function’s help for more details.

```
# Defining parameters
<- 200000
dist <- "concave"
hull
# Now we can create the species range based on administrative areas
<- rangemap_hull(occurrences = occ_d, hull_type = hull,
hull_range1 buffer_distance = dist)
```

**Now the figure of our results**

The other one with the potential extent of occurrence, the species occurrences and other map details. But let’s first define the characteristics we want in the figure.

```
par(mar = rep(0, 4)) # optional, reduces the margins of the figure
rangemap_plot(buff_range, add_occurrences = TRUE,
northarrow = TRUE, range_color = NA)
rangemap_plot(buff_range)
rangemap_plot(hull_range)
rangemap_plot(hull_range1, legend = TRUE, legend_position = "bottomleft")
```

The function *ranges_emaps* represents one or more ranges of the same species on various maps of environmental factors (e.g., climatic variables) to detect implications of using one or other type of range regarding the environmental conditions in the areas.

```
# Adding parameters
<- raster::stack(system.file("extdata", "variables.tif",
vars package = "rangemap"))
names(vars) <- c("bio5", "bio6", "bio13", "bio14")
# Plotting
par(mar = rep(0, 4))
ranges_emaps(buff_range, hull_range, hull_range1, variables = vars)
```

The function *ranges_espace* generates a three dimensional comparison of a species’ ranges created using distinct algorithms, to visualize implications of selecting one of them if environmental conditions are considered.

```
# For avoiding too much complexity we will use only two of the previous ranges
# comparison
ranges_espace(buff_range, hull_range, variables = vars, do_pca = TRUE,
add_occurrences = TRUE)
```

Now let’s create the same figure but with the three ranges and distinct colors.

```
ranges_espace(buff_range, hull_range, hull_range1, variables = vars, do_pca = TRUE,
range_colors = c("gray1", "blue", "red"), alpha = 0.4)
```