---
title: "Relationship between urban living and the prevalence of childhood anaemia"
output: "html_notebook"
author: "Ama Owusu-Darko"
date: "17th March 2021"
---

```{r data prep, include=FALSE}
# ghsl remote sensing}
library(raster)
library(rgdal)
library(sp)

#Four GHSL raster sets
ras17_8<-raster("raster/GHS_BUILT_17_8.tif")
ras17_7<-raster("raster/GHS_BUILT_17_7.tif")
ras18_8<-raster("raster/GHS_BUILT_18_8.tif")
ras18_7<-raster("raster/GHS_BUILT_18_7.tif")

#GHSL merged rasters
merged<-merge(ras17_8, ras18_8, ras17_7,ras18_7)

#Ghana administrative regions
library(sf)
gh_reg2=st_read("Ama_GHSL_2014/ghana_boundaries/gha_adm1.shp")

#DHS data with urban_rural column to overlay over GHSL data
dhs2=st_read("Ama_GHSL_2014/dhs_data/GHGE81FL.shp")

#rename levels
library(plyr)
dhs2$URBAN_RURA=revalue(dhs2$URBAN_RURA,c("R"="Rural","U"="Urban"))

library(dplyr) #rename column to URBAN_RURAL
dhs2=dhs2%>%
  rename(URBAN_RURAL=URBAN_RURA)


library(tmap)
tmap_mode("view")

tr2=tm_shape(merged)+tm_raster(palette = "Greys", breaks = c(0,0.1,20,40,100))
tr3=tm_shape(dhs2)+tm_symbols(size = 0.1, col="URBAN_RURAL", alpha = 0.3)
tr4=tm_shape(gh_reg2)+tm_polygons(alpha = 0)
```

```{r data prep1, echo=FALSE, message=FALSE, warning=FALSE}
map1=tr2+tr3+tr4
map1
```

```{r tmap, eval=FALSE, include=FALSE}
#actually plotting map
library(shiny)
ui <- fluidPage(
                  inputPanel(tmapOutput("map")
))

server <- function(input, output, session) {
		output$map1 <- renderTmap(map1)}
		
shinyApp(ui, server)
```
