Skip to content
An R package of map layers for British Columbia
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
R
inst/sticker Use Regional Districts in sticker Nov 17, 2017
man
tests Only test and run examples for bc_bbox if bcmapsdata is installed Feb 14, 2019
tools/readme
vignettes Fix typos Feb 14, 2019
.Rbuildignore Add CRAN-RELEASE to Rbuildignore Feb 15, 2019
.gitignore Add .DS_Store to gitignore Oct 17, 2017
.travis.yml revising to access data from bcmapsdata Feb 1, 2019
CODE_OF_CONDUCT.md
CONTRIBUTING.md
DESCRIPTION Fix version number Feb 15, 2019
LICENSE Update licensing information Oct 25, 2017
NAMESPACE Add bc_bbox function Oct 3, 2018
NEWS.md Fix version number Feb 15, 2019
README.Rmd update README Feb 14, 2019
README.md Fix version number Feb 15, 2019
bcmaps.Rproj
cran-comments.md Bump version and update cran_comments.md Feb 14, 2019

README.md

bcmaps

Version 0.18.0

dev License Travis-CI Build Status

CRAN_Status_Badge CRAN Downloads

Overview

An R package of spatial map layers for British Columbia.

Features

Provides access to various spatial layers of British Columbia, such as administrative boundaries, natural resource management boundaries, watercourses etc. All layers are available in the BC Albers projection, which is the B.C. Government standard as sf or Spatial objects.

Layers are stored in the bcmapsdata package and loaded by this package, following the strategy recommended by Anderson and Eddelbuettel.

Installation

You can install bcmaps from CRAN:

install.packages("bcmaps")

To install the development version of the bcmaps package, you need to install the remotes package then the bcmaps package.

install.packages("remotes")
remotes::install_github("bcgov/bcmaps")

Usage

To get full usage of the package, you will also need to install the bcmapsdata package, which holds all of the datasets.

Note that unlike most packages it is not necessary to actually load the bcmapsdata package (i.e., with library(bcmapsdata)) - in fact it is less likely to cause problems if you don’t.

install.packages('bcmapsdata', repos='https://bcgov.github.io/drat/')

To see the layers that are available, run the available_layers() function:

#> Loading required package: sf
#> Linking to GEOS 3.6.1, GDAL 2.1.3, PROJ 4.9.3
library(bcmaps)
available_layers()

Most layers are accessible by a shortcut function by the same name as the object. Then you can use the data as you would any sf or Spatial object. For example:

library(sf)

bc <- bc_bound()
plot(st_geometry(bc))

Alternatively, you can use the get_layer function - simply type get_layer('layer_name'), where 'layer_name' is the name of the layer of interest. The get_layer function is useful if the back-end bcmapsdata package has had a layer added to it, but there is as yet no shortcut function created in bcmaps.

library(sf)
library(dplyr)

ws <- get_layer("wsc_drainages", class = "sf")

plot(ws["SUB_SUB_DRAINAGE_AREA_NAME"], key.pos = NULL)

Simple Features objects

By default, all layers are returned as sf spatial objects:

library(bcmaps)
library(sf)

# Load and plot the boundaries of B.C.

bc <- bc_bound()
plot(st_geometry(bc))

## Next load the Regional Districts data, then extract and plot the Kootenays
rd <- regional_districts()
kootenays <- rd[rd$ADMIN_AREA_NAME == "Regional District of Central Kootenay", ]
plot(st_geometry(kootenays), col = "lightseagreen", add = TRUE)

It’s a beautiful day in the neighbourhood

A handy layer for creating maps for display is the bc_neighbours layer, accessible with the function by the same name. This example also illustrates using the popular ggplot2 package to plot maps in R using geom_sf:

library(ggplot2)
ggplot() + 
  geom_sf(data = bc_neighbours(), mapping = aes(fill = name)) + 
  geom_sf(data = bc_cities()) +
  coord_sf(datum = NA) +
  scale_fill_discrete(name = "Jurisdiction") +
  theme_minimal()

Biogeoclimatic Zones

As of version 0.15.0 the B.C. BEC (Biogeoclimatic Ecosystem Classification) map is available via the bec() function, and an accompanying function bec_colours() function to colour it:

bec <- bec()
library(ggplot2)
ggplot() +
  geom_sf(data = bec[bec$ZONE %in% c("BG", "PP"),],
          aes(fill = ZONE, col = ZONE)) +
  scale_fill_manual(values = bec_colors()) +
  scale_colour_manual(values = bec_colours())

Spatial (sp) objects

If you aren’t using the sf package and prefer the old standard sp way of doing things, set class = "sp" in either get_layer or the shortcut functions:

library("sp")
# Load watercourse data and plot with boundaries of B.C.
plot(get_layer("bc_bound", class = "sp"))
plot(watercourses_15M(class = "sp"), add = TRUE)

Vignettes

We have written a short vignette on plotting points on one of the layers from bcmaps. You can view the vignette online here or if you installed the package you can open it using browseVignettes("bcmaps").

Utility Functions

The package also contains a couple of handy utility functions:

  1. fix_geo_problems() for fixing invalid topologies in sf or Spatial objects such as orphaned holes and self-intersections
  2. transform_bc_albers() for transforming any sf or Spatial object to BC Albers projection.
  3. self_union() Union a SpatialPolygons* object with itself to remove overlaps, while retaining attributes

Getting Help or Reporting an Issue

To report bugs/issues/feature requests, please file an issue.

How to Contribute

Pull requests of new B.C. layers are welcome. If you would like to contribute to the package, please see our CONTRIBUTING guidelines.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Source Data

The source datasets used in this package come from various sources under open licences, including DataBC (Open Government Licence - British Columbia) and Statistics Canada (Statistics Canada Open Licence Agreement). See the data-raw folder for details on each source dataset.

Licence

# Copyright 2017 Province of British Columbia
# 
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under the License.

This repository is maintained by Environmental Reporting BC. Click here for a complete list of our repositories on GitHub.

You can’t perform that action at this time.