TITLE: Making arty renders of Belize's rivers
DATE: 2018-07-01
AUTHOR: John L. Godlee
====================================================================


y partner spends a lot of time in Belize for work and was looking
for something to hang on her wall as a piece of art. I thought that
a stylised map of Belize could make a nice minimalist piece of art,
but because I have no artistic skills, I decided to do it using R.

I got some shapefiles to start with:

-   [A simple global river bankfull width and depth database] -
    For the rivers
-   [GADM Data] - Outline of Belize

  [A simple global river bankfull width and depth database]: https://agupubs.onlinelibrary.wiley.com/doi/full/10.1002/wrcr.20440
  [GADM Data]: https://gadm.org/download_country_v3.html

I also experimented with other shapefiles of rivers in Belize, but
the one above is the one I preferred, mainly because it has slightly
angular lines. These are the other sources I looked at:

-   [Meerman 2015]
-   [Digital Chart of the World - Inland Water]

  [Meerman 2015]: http://www.biodiversity.bz/
  [Digital Chart of the World - Inland Water]: http://www.diva-gis.org/gdata

  {IMAGE}


Here is the R code that I used to create the map output. I saved it
as an svg for printing and also as a png for previewing:

    # Packages ----
    library(rgdal)
    library(raster)

    # Add shapefiles ----
    belize <- readOGR(dsn = "BLZ_adm", layer = "BLZ_adm0")

    rivers_1 <- readOGR(dsn = "camerica", layer = "carivs")

    rivers_2 <- readOGR(dsn = "Belize_Rivers 2", layer = "Belize_Rivers")

    rivers_3 <- readOGR(dsn = "BLZ_wat", layer = "BLZ_water_lines_dcw")

    watersheds <- readOGR(dsn = "Belize_Watersheds", layer = "Belize_Watersheds")

    # Fix shapefiles ----

    ## Transform rivers_2 to wgs84 CRS
    rivers_2_wgs84 <- spTransform(rivers_2, CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")) 

    # rivers_1 ---- 

    ## Filter out rivers not in Belize
    rivers_1_belize <- crop(rivers_1, belize)

    ## Save as .svg
    svg(filename = "img/svg/rivers_1_belize.svg", width = 15, height = 20, onefile = TRUE)
    plot(rivers_1_belize)
    plot(belize, add = TRUE)
    dev.off()

    ## Filter out small rivers according to bank full width
    rivers_1_big <- rivers_1_belize[rivers_1_belize$a_WIDTH > quantile(rivers_1_belize$a_WIDTH, 0.50), ]

    ## Save as .svg
    svg(filename = "img/svg/rivers_1_big.svg", width = 15, height = 20, onefile = TRUE)
    plot(rivers_1_big)
    plot(belize, add = TRUE)
    dev.off()


    # rivers_2 ----

    ## Filter streams that are more than 2nd order, or 3rd order
    rivers_2_first <- rivers_2_wgs84[rivers_2_wgs84$Strm_order > 1, ]
    rivers_2_second <- rivers_2_wgs84[rivers_2_wgs84$Strm_order > 2, ]

    ## Crop to belize outline
    rivers_2_first_belize <- crop(rivers_2_first, belize)
    rivers_2_second_belize <- crop(rivers_2_second, belize)

    ## Write as shapefiles because the cropping took a long time
    writeOGR(obj=rivers_2_first_belize, dsn="belize_rivers_2_first_crop", layer="belizer_rivers_2_first_crop", driver="ESRI Shapefile")
    writeOGR(obj=rivers_2_second_belize, dsn="belize_rivers_2_second_crop", layer="belizer_rivers_2_second_crop", driver="ESRI Shapefile")

    ## Save as .svg
    svg(filename = "img/svg/rivers_2_wgs84.svg", width = 15, height = 20, onefile = TRUE)
    plot(rivers_2_wgs84) 
    plot(belize, add = TRUE)
    dev.off()

    svg(filename = "img/svg/rivers_2_first_belize.svg", width = 15, height = 20, onefile = TRUE)
    plot(rivers_2_first_belize)
    plot(belize, add = TRUE)
    dev.off()

    svg(filename = "img/svg/rivers_2_second_belize.svg", width = 15, height = 20, onefile = TRUE)
    plot(rivers_2_second_belize)
    plot(belize, add = TRUE)
    dev.off()


    # rivers 3 ----

    ## Save as .svg
    svg(filename = "img/svg/rivers_3.svg", width = 15, height = 20, onefile = TRUE)
    plot(rivers_3)
    plot(belize, add = TRUE)
    dev.off()

I’m printing off the big file next week, then I want to frame it in
a thin black edge frame with glossy glass.

  {IMAGE}