mregions introduction

mregions is useful to a wide diversity of R users because you get access to all of the data MarineRegions has, which can help in a variety of use cases:

Install

Stable version

install.packages("mregions")

Dev version

devtools::install_github("ropensci/mregions")
install.packages("leaflet")
library("mregions")

Get list of place types

res <- mr_place_types()
head(res$type)
#> [1] "Town"                      "Arrondissement"           
#> [3] "Department"                "Province (administrative)"
#> [5] "Country"                   "Continent"

Get Marineregions records by place type

res1 <- mr_records_by_type(type = "EEZ")
head(res1)
#>   MRGID
#> 1  3293
#> 2  5668
#> 3  5669
#> 4  5670
#> 5  5672
#> 6  5673
#>                                                                                                                                                                                                             gazetteerSource
#> 1 Flanders Marine Institute (2016). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 9. Available online at https://www.marineregions.org/. http://dx.doi.org/10.14284/242
#> 2 Flanders Marine Institute (2016). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 9. Available online at https://www.marineregions.org/. http://dx.doi.org/10.14284/242
#> 3 Flanders Marine Institute (2016). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 9. Available online at https://www.marineregions.org/. http://dx.doi.org/10.14284/242
#> 4 Flanders Marine Institute (2016). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 9. Available online at https://www.marineregions.org/. http://dx.doi.org/10.14284/242
#> 5 Flanders Marine Institute (2016). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 9. Available online at https://www.marineregions.org/. http://dx.doi.org/10.14284/242
#> 6 Flanders Marine Institute (2016). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 9. Available online at https://www.marineregions.org/. http://dx.doi.org/10.14284/242
#>   placeType latitude longitude minLatitude minLongitude maxLatitude
#> 1       EEZ 51.46483  2.704458    51.09111     2.238118    51.87000
#> 2       EEZ 53.61508  4.190675    51.26203     2.539443    55.76500
#> 3       EEZ 54.55970  8.389231    53.24281     3.349999    55.91928
#> 4       EEZ 40.87030 19.147094    39.63863    18.461940    41.86124
#> 5       EEZ 42.94272 29.219062    41.97820    27.449580    43.74779
#> 6       EEZ 43.42847 15.650844    41.62201    13.001390    45.59079
#>   maxLongitude precision            preferredGazetteerName
#> 1     3.364907  58302.49   Belgian Exclusive Economic Zone
#> 2     7.208364 294046.10     Dutch Exclusive Economic Zone
#> 3    14.750000 395845.50    German Exclusive Economic Zone
#> 4    20.010030 139751.70  Albanian Exclusive Economic Zone
#> 5    31.345280 186792.50 Bulgarian Exclusive Economic Zone
#> 6    18.552360 313990.30  Croatian Exclusive Economic Zone
#>   preferredGazetteerNameLang   status accepted
#> 1                    English standard     3293
#> 2                    English standard     5668
#> 3                    English standard     5669
#> 4                    English standard     5670
#> 5                    English standard     5672
#> 6                    English standard     5673

Get a data.frame of region names

rnames <- mr_names("MarineRegions:iho")

Search region names

Either pass output of mr_names()

mr_names_search(rnames, "IHO")
#> # A tibble: 7 x 6
#>               layer    name_first name_second     id
#>               <chr>         <chr>       <chr>  <chr>
#> 1 MarineRegions:iho MarineRegions         iho  iho.1
#> 2 MarineRegions:iho MarineRegions         iho  iho.7
#> 3 MarineRegions:iho MarineRegions         iho iho.18
#> 4 MarineRegions:iho MarineRegions         iho iho.40
#> 5 MarineRegions:iho MarineRegions         iho iho.53
#> 6 MarineRegions:iho MarineRegions         iho iho.76
#> 7 MarineRegions:iho MarineRegions         iho iho.94
#> # ... with 2 more variables: name <chr>, mrgid <chr>

or don't (but then mr_names_search() call takes longer)

mr_names_search("iho", q = "Sea")
#> # A tibble: 73 x 6
#>                layer    name_first name_second     id
#>                <chr>         <chr>       <chr>  <chr>
#>  1 MarineRegions:iho MarineRegions         iho  iho.3
#>  2 MarineRegions:iho MarineRegions         iho  iho.4
#>  3 MarineRegions:iho MarineRegions         iho  iho.6
#>  4 MarineRegions:iho MarineRegions         iho  iho.7
#>  5 MarineRegions:iho MarineRegions         iho  iho.8
#>  6 MarineRegions:iho MarineRegions         iho iho.10
#>  7 MarineRegions:iho MarineRegions         iho iho.15
#>  8 MarineRegions:iho MarineRegions         iho iho.16
#>  9 MarineRegions:iho MarineRegions         iho iho.17
#> 10 MarineRegions:iho MarineRegions         iho iho.27
#> # ... with 63 more rows, and 2 more variables: name <chr>, mrgid <chr>

Get a region - geojson

res3 <- mr_geojson(key = "Morocco:dam")
class(res3)
#> [1] "mr_geojson"
names(res3)
#> [1] "type"          "totalFeatures" "features"      "crs"

Get a region - shp

res4 <- mr_shp(key = "Morocco:dam")
class(res4)
#> [1] "SpatialPolygonsDataFrame"
#> attr(,"package")
#> [1] "sp"

Convert to WKT

From geojson or shp. Here, geojson

res7 <- mr_geojson(key = "Morocco:dam")
mr_as_wkt(res7, fmt = 5)
#> [1] "MULTIPOLYGON (((41.573732 -1.659444, 45.891882 ... cutoff

Dealing with bigger WKT

What if you're WKT string is super long? It's often a problem because some online species occurrence databases that accept WKT to search by geometry bork due to limitations on length of URLs if your WKT string is too long (about 8000 characters, including remainder of URL). One way to deal with it is to reduce detail - simplify.

install.packages("rmapshaper")

Using rmapshaper we can simplify a spatial object, then search with that.

shp <- mr_shp(key = "MarineRegions:eez_iho_union_v2", maxFeatures = 5)

Visualize

library(leaflet)
leaflet() %>%
  addTiles() %>%
  addPolygons(data = shp)

map2

Simplify

library("rmapshaper")
shp <- ms_simplify(shp)

It's simplified:

library(leaflet)
leaflet() %>%
  addTiles() %>%
  addPolygons(data = shp)

map3