-
Notifications
You must be signed in to change notification settings - Fork 0
LovellHAGSC/pvdiv.map
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
--- title: "Pvirgatum diversity mapping README" author: "JTLovell" date: "10/30/2019" output: html_document: df_print: paged --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` # Easy mapping with the PVDIV data This package contains geographic data layers and some accessory functions to make plotting of the PVDIV data simple. This package is for internal use at HAGSC only. # Load and project the GIS data The package comes with a set of unprojected GIS layers. These data come from publically available sources and the method for making them can be found in the R/data.R script. ```{r} data("geodata", package = "pvdiv.map") summary(geodata) ``` These are cropped to the study region and unprojected, so, a plot of the USA looks crappy. ```{r} plot(geodata$states, main = "raw unprojected map of study region", border = "lightgrey", lwd = .5, col = "white", bg = "lightblue") plot(geodata$countries, add = T) plot(geodata$coasts, add = T) plot(geodata$great.lakes, col = "lightblue", add = T) ``` So, lets project the data and make it look more like a map. ```{r} proj.layers <- project_layers(geodata = geodata) projection <- proj.layers$projection proj.layers <- proj.layers$proj.layers ``` The project_layers function returns the CRS function used to do the projections. This is important and must be applied to any points or other data to be added to the plot. ```{r} print(projection) ``` We can use this projection to remake the above plot. ```{r} plot(proj.layers$states, main = "raw unprojected map of study region", border = "lightgrey", lwd = .5, col = "white", bg = "lightblue") plot(proj.layers$countries, add = T) plot(proj.layers$coasts, add = T) plot(proj.layers$great.lakes, col = "lightblue", add = T) ``` # Load and project plant metadata The package comes with some compiled metadata for each plant. The raw data to make these metadata are stored on the google drive, and the method for making them can be found in the R/data.R script. ```{r} data("plant.metadata.k5", package = "pvdiv.map") print(head(plant.metadata.k5)) ``` Like with the layers, we can project the points ```{r} extent <- extent(geodata$states) k5.metadata <- subset( plant.metadata.k5, !is.na(lat) & !is.na(lon)) sites <- SpatialPointsDataFrame( coords = k5.metadata[,c("lon","lat")], data= k5.metadata, proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")) sites.c <- spTransform( sites, CRSobj = projection) ``` And add the projected points back to the data.table ```{r} k5.metadata[,proj.lon := coordinates(sites.c)[,"lon"]] k5.metadata[,proj.lat := coordinates(sites.c)[,"lat"]] ``` # Plot and adjust the position of the points So, with basic projections, the points look like this. Note that there are lots of overlapping points, particularly on the east coast. ```{r} with(k5.metadata, points( x = proj.lon, y = proj.lat, col = best.col, pch = 16)) ``` So, we can move these points to a non-overlapping grid: ```{r} pt.spacing <- (max(k5.metadata$proj.lon) / 60) * pi grid.pts <- buffer_ovlpts( pt.buffer = 0, spacing = pt.spacing, bounds = extent(sites.c), pt.coords = coordinates(sites.c)) k5.metadata[,grid.pt.lon := grid.pts$plot.x] k5.metadata[,grid.pt.lat := grid.pts$plot.y] ``` And re-plot ```{r} plot(proj.layers$states, main = "raw unprojected map of study region", border = "lightgrey", lwd = .5, col = "white", bg = "lightblue") plot(proj.layers$countries, add = T) plot(proj.layers$coasts, add = T) plot(proj.layers$great.lakes, col = "lightblue", add = T) with(k5.metadata, points( x = grid.pt.lon, y = grid.pt.lat, col = best.col, pch = 16)) ``` # Plot Pies on the map Last part is just embracing the complexity of the structure by showing proportional population assignment. ```{r} pie.radius <- (max(k5.metadata$proj.lon) / (65)) k5.metadata[,best.fac := factor(best, levels = c("TX", "GC", "MW", "S.EC", "N.EC"))] setkey(k5.metadata, best.fac) colors <- unique(k5.metadata$best.col) plot(proj.layers$states, main = "raw unprojected map of study region", border = "lightgrey", lwd = .5, col = "white", bg = "lightblue") plot(proj.layers$countries, add = T) plot(proj.layers$coasts, add = T) plot(proj.layers$great.lakes, col = "lightblue", add = T) with(k5.metadata, draw.pie( x = grid.pt.lon, y = grid.pt.lat, z = data.matrix(cbind(TX, GC, MW, S.EC, N.EC)), radius = pie.radius, border = F, col = colors)) ```
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published