Introduction
The mbquartR
package was created to help people easily
identify, search, and locate parcels of land using the Manitoba legal
descriptions. These legal land descriptions originate from the Dominion Land
Survey system, introduced in the late 19th century to organize the
European settlement and colonization of Western Canada.
There are two main ways in which the mbquartR
can be
used.
- Search for and locate parcels of land using legal land descriptions (e.g., SW-9-8-6E1)
or
- Search for legal land description using coordinates (latitude and longitude)
Note: The examples below are fictitious scenarios
designed to highlight the functionality of the mbquartR
package. The identified land parcels and coordinates are not intended
for any official or practical use.
Example 1: Using legal land description to find the locations of archived soil samples
Since 1926, the Manitoba Soil Survey has been working to quantify and map soil properties (texture, parent material, stoniness, pH, and salinity etc) to support sustainable agricultural development across the province. Part of the soil survey has included collecting soil samples for chemical analysis (Carbon content). This has resulted in a rich archive of soil samples spanning more than eight decades. Recently there has been interest in reanalyzing these archived soil samples using new technology. However, the location of many older soil samples is identified solely by the quarter section description.
For many people, including myself, we are not familiar enough with land survey system to easily locate it. There are over 900,000 entries in the Manitoba Original Survey Legal Descriptions data covering more than 600,000 km2. Most mapping services are also unable to search for legal land description (e.g., Google Maps) which makes identifying where these soil sample were taken very difficult!
For an explanation of quarter sections and other land types, please visit the Get started page.
Scenario:
Here is a small data set that includes the soil organic carbon content (%) of four topsoil samples (0-15 cm depth) collected in 1980 as part of the Soil Survey at four different locations only identified by their legal land description. I would like to know where these soil samples were taken so I have some additional context for interpreting the data. Three of these samples were collected in Quarter Sections (most common type of land division) and one was collected in a River Lot
soil_soc <- data.frame(
soc = c(1.72, 2.35, 3.08, 3.94),
legal = c("SW-14-8-2E1", "NE-22-08-1E", "NW-10-9-1E1", "RL-22-St. Norbert"))
soil_soc
#> soc legal
#> 1 1.72 SW-14-8-2E1
#> 2 2.35 NE-22-08-1E
#> 3 3.08 NW-10-9-1E1
#> 4 3.94 RL-22-St. Norbert
Download the data set
Your first step is to download the Manitoba Original Survey Legal
Descriptions data from DataMB
which mbquartR
helps you do.
Search
We can now use search_legal()
to find the center
coordinates (latitude and longitude) for each of the parcels of land in
our data frame. To use this function you need to supply a vector that
contains the legal land descriptions of interest. This will return data
frame that includes the type of land division and the coordinates of the
centre.
location_1 <- search_legal(x = soil_soc$legal)
#> Warning in search_legal(x = soil_soc$legal): One or more of the legal land descriptions has an ambiguous meridian value E and is assumed to be east of prime meridian (E1).
#> To stop messages please specify meridians as E1 or E2 (e.g., NW-36-89-11E1).
location_1
#> # A tibble: 4 × 4
#> legal type long lat
#> <chr> <chr> <dbl> <dbl>
#> 1 NE-22-8-1E1 Quarter -97.4 49.7
#> 2 NW-10-9-1E1 Quarter -97.4 49.7
#> 3 SW-14-8-2E1 Quarter -97.2 49.7
#> 4 RL-22-St. Norbert RL -97.1 49.7
Map
We can also use map_quarter()
to quickly plot the center
coordinates on a map. Because quarter sections are a square of known
dimensions a polygon is also displayed showing the approximate borders.
This is not done for other land divisions because the dimensions and
orientation are inconsistent.
map_quarter(location_1)
#> Polygons for quarter sections are approximate and are only meant as
#> a visual aid.
#> Warning: One or more of the legal land descriptions provided are a type of
#> land division other than a quarter section and the polygon can not be
#> estimated.
Example 2: Using coordinates to find parcels of land
As an agri-environmental scientist I take a lot of soil samples on farms as part of research projects and I always geo-locate sampling sites so I can revisit them at a later date. When reporting results back to producers/farmers it is often easiest to refer to locations by their legal land descriptions because these descriptions are familiar and are tied to how farmers manage their land. The example below presents a small data frame of surface soil sample P concentrations (ppm), all collected from the watershed, along with their corresponding coordinates.
soil_p <- data.frame(
lat = c(49.333854, 49.338577, 49.356048, 49.372180),
long = c(-98.376486, -98.376862, -98.304846, -98.254691),
p_conc = c(8.75, 12.30, 17.45, 22.60),
sample_id = factor(seq(1, 4, 1)))
soil_p
#> lat long p_conc sample_id
#> 1 49.33385 -98.37649 8.75 1
#> 2 49.33858 -98.37686 12.30 2
#> 3 49.35605 -98.30485 17.45 3
#> 4 49.37218 -98.25469 22.60 4
Search
Using search_coord()
we provide coordinates, in decimal
degrees, and it searches for the quarter section, or other land division
type, based on the shortest euclidean distance to the centre of a parcel
of land. Because the data being search is so big this function can take
a little while to run. This function returns the legal land description,
land division type, the center coordinates, user coordinates, and the
distance between the user provided coordinates and the centre
coordinates. In the example below I have collected soil samples from two
different farm fields that happen to be within the same quarter
section
location_2 <- search_coord(lat = soil_p$lat, long = soil_p$long)
location_2
#> # A tibble: 4 × 7
#> legal type long lat long_user lat_user dist
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> [m]
#> 1 NW-29-4-7W1 Quarter -98.4 49.3 -98.4 49.3 414.
#> 2 NW-29-4-7W1 Quarter -98.4 49.3 -98.4 49.3 370.
#> 3 SE-2-5-7W1 Quarter -98.3 49.4 -98.3 49.4 361.
#> 4 SE-7-5-6W1 Quarter -98.3 49.4 -98.3 49.4 168.
Map
For a quick reference I can quickly plot the centre coordinates and
the approximate boundaries of these quarter sections using
map_quarter()
.
map_quarter(location_2)
#> Polygons for quarter sections are approximate and are only meant as
#> a visual aid.
I can also add my sampling locations to the map by first converting
my original data frame to an sf
object.
Then adding this sf
object as an additional layer
map_quarter(location_2) +
mapview::mapview(point, col.regions = "black",
color = "black", legend =FALSE)
#> Polygons for quarter sections are approximate and are only meant as
#> a visual aid.