---
title: "Layout"
output: rmarkdown::html_vignette
author: "Chi Zhang"
date: "2021-01-15"
vignette: >
  %\VignetteIndexEntry{Layout}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  chunk_output_type: console
---


```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```{r setup}
library(csmaps)
library(ggplot2)
library(data.table)
library(magrittr)
```

## Naming scheme

The naming scheme has the following pattern: `scope_geogranularity_type_border_layout_Rclass`. 

### Scope

This is what content the map data contains. Currently we focus on these 2 scopes: 

- Country (Norway).
- City (Oslo).

### Geogranularity 

This is the geographic granularity, which defines the border of county, municipality and ward.

- County (fylke) is equivalent to [NUTS3](https://ec.europa.eu/eurostat/documents/345175/7451602/2021-NUTS-3-map-NO.pdf) (Nomenclature of Territorial Unit level 3).
- Municip (kommune) is equivalent to LAU2 (Local Administrative Unit level 2).
- Ward (bydel) is an administrative region within a large municipality.
- xxx: only used for plotting `position_title` (see [example](#norway-layout-insert-oslo)).

### Type 

The type of the data object to distinguish whether it's a geographical map or coordinate for label positions. 
- Map: Map data.
- Position geolabels: Geographical coordinates for the position of labels, e.g. "county03" or "Oslo".
- Position title (insert oslo): Geographical coordinate for position of title. So far it's only for layout: `insert_oslo`. (see [example](#norway-layout-insert-oslo))

### Border 

Due to recent redistricting, there exist multiple versions of county/municip borders. We provide maps that match the borders in the following years: 

- 2024: The current border, this map contains 15 counties. 
- 2020: Border before redistricting in 2024. This map contains 11 counties.
- 2019: Border before redistricting in 2020. This map contains 18 counties. 
- 2017: Border before redistricting in 2018. This map contains 19 counties.

More information on counties in Norway can be found [here](https://en.wikipedia.org/wiki/Counties_of_Norway#cite_note-13). 

### Layout

See the [layout](#layout) section below.

### R class

R class for the map object. 

- `data.table`: applicable for maps and label/title coordinates.
- `sf`: simple feature for spatial vector data. More on [sf](https://r-spatial.github.io/sf/articles/).

## Layout

We have 3 layout options for Norway map: **default, split** and **insert Oslo**. 

For the Oslo map, we only have the **default** layout. 

### Norway: default

```{r fig.height=6, fig.width=6}
pd <- copy(csmaps::nor_county_map_b2024_default_dt)
q <- ggplot()
q <- q + geom_polygon(
  data = pd, 
  aes( 
    x = long, 
    y = lat, 
    group = group
  ), 
  color="black", 
  fill="white",
  linewidth = 0.4
)
q <- q + theme_void()
q <- q + coord_quickmap()
q <- q + labs(title = "Default layout")
q
```

### Norway: split 

```{r fig.height=6, fig.width=6}
pd <- copy(csmaps::nor_county_map_b2024_split_dt)
q <- ggplot()
q <- q + csmaps::annotate_oslo_nor_map_bxxxx_split_dt()
q <- q + geom_polygon(
  data = pd, 
  aes(
    x = long, 
    y = lat, 
    group = group
  ), 
  color="black", 
  fill="white",
  linewidth = 0.4
)
q <- q + theme_void()
q <- q + coord_quickmap()
q <- q + labs(title = "Split layout")
q
```

### Norway: insert oslo

```{r fig.height=6, fig.width=6}
pd <- copy(csmaps::nor_county_map_b2024_insert_oslo_dt)
q <- ggplot()
q <- q + geom_polygon(
  data = pd,
  aes(
    x = long, 
    y = lat, 
    group = group
  ), 
  color="black", 
  fill="white", 
  linewidth = 0.4
)
q <- q + annotate(
  "text", 
  x = csmaps::nor_xxx_position_title_insert_oslo_b2024_insert_oslo_dt$long, 
  y = csmaps::nor_xxx_position_title_insert_oslo_b2024_insert_oslo_dt$lat,
  label = "Oslo"
  )
q <- q + theme_void()
q <- q + coord_quickmap()
q <- q + labs(title = "Insert Oslo layout")
q
```

#### Oslo ward: default 

```{r fig.height=6, fig.width=6}
pd <- copy(csmaps::oslo_ward_map_b2024_default_dt)
q <- ggplot()
q <- q + geom_polygon(
  data = pd,
  aes(
    x = long, 
    y = lat, 
    group = group
  ), 
  color="black", 
  fill="white",
  linewidth = 0.4
)
q <- q + theme_void()
q <- q + coord_quickmap()
q <- q + labs(title = "Oslo wards")
q
```






