# 1.6 Manipulate Polygon Layer

1. Exercise 1.6 - Download and extract zip folder into your preferred location
2. Set working directory to the extracted folder in R under File - Change dir...
3. First we need to load the packages needed for the exercise

library(rgdal)
library(maptools)
library(foreign)
4. Now open the script "SoilScript.R" and run code directly from the script

soils<-readOGR(dsn=".",layer="Soil_Properties")
soils@proj4string ###get projection
plot(soils)
names(soils) ###get attribute data

#Rename ArcMap category headings to something more familiar
soils\$Clay <- soils\$SdvOutpu_1
soils\$pH <- soils\$SdvOutpu_2
soils\$CEC <- soils\$SdvOutpu_3

#Shapefiles contain several slots which can be called with the "@" symbol
#or slot(object, "data")

soils@data #= a data frame with n observations associated with X covariates,
soils@polygons #=the number of polygons that the shapefile consists of
soils@plotOrder #= the order of the polygons
soils@bbox #= boundary box
soils@proj4string #= projection
#Within the slot
soils@polygons [[1]] ###will bring up the first polygon
soils@polygons [[1]]@area ###will bring up the area for the first polygon
soils@polygons[[1]]@ID ##will retrieve the ID of the first polygon
soils@polygons[[1]]@plotOrder ##will retrieve the order of the first polygon
5. Select portions of the data that fit some set criteria

##Highlights the areas that Percent Clay polygons are over 30%
plot(soils, col=grey(1-soils\$Clay > 30))
plot(soils)
high.clay<- soils[soils\$Clay>30,]
plot(high.clay, border="red", add=TRUE)

##Highlights the areas that Cation Exchange Capacity is greater than 14
high.CEC<- soils[soils\$CEC>14,]
plot(high.CEC, border="green", add=TRUE)

##Highlights the areas that soil pH is greater than 8
high.pH <- soils[soils\$pH>8,]
plot(high.pH, border="yellow", add=TRUE)
6. Bring in locations of harvested mule deer

#Import mule deer locations from harvested animals tested for CWD

mule <-read.csv("MDclip.csv", header=T)
str(mule)
coords<-data.frame(x = mule\$x, y = mule\$y)
crs<-"+proj=utm +zone=13 +datum=WGS84 +no_defs +towgs84=0,0,0"
coords

plot(coords, col="blue")
par(new=TRUE)
7. Letâ€™s generate random points with the extent of the soil layer

#Sampling points in a Spatial Object###type="regular" will give a regular grid
samples<-spsample(soils, n=1000, type="random")
samples@proj4string

#Plot them to see if it worked or to create output figures
plot(soils, col="wheat")
points(coords, col="blue")
points(samples, col="red")
8. Creates a SpatialPoints object from the location coordinates

samples@bbox <- soils@bbox
samples@proj4string <- soils@proj4string
9. Extract and tally Clay soil types for random samples and mule deer locations:

#Match points with soil polygons they occur in
soils.idx<- over(samples,soils)
locs <- SpatialPoints(coords)
locs@proj4string <- soils@proj4string
soils.locs<- over(locs, soils)

#Tally clay soil types for random samples
obs.tbl <- table(soils.idx\$Clay[soils.idx\$Clay])
obs.tbl

#Also tally soil types for each mule deer sampled
obs.tbl2 <- table(soils.locs\$Clay[soils.locs\$Clay])
obs.tbl2
10. Convert the counts to proportions:

obs <- obs.tbl/sum(obs.tbl)
obs

obs2 <- obs.tbl2/sum(obs.tbl2)
bs2

Figure 1.6 Overlay of mule deer locations with random locations generated in R