Churdhar Wildlife Sanctuary

protected areas Himalayas Himachal Pradesh Churdhar Wildlife Sanctuary

A short description of the post.

Abhishek Kumar https://akumar.netlify.app/ (Panjab University, Chandigarh)https://puchd.ac.in/
2021-10-27
Show code
library(dplyr)       # general data wrangling
library(raster)      # raster data
library(sf)          # spatial data handling
library(tmap)        # thematic mapping
Show code
## extract boundaries and data from OpenStreetMap
library(osmdata)

## define a bounding box for area of interest
osm_bbox <- c(77.3578, 30.8035, 77.5207, 30.9214) # xmin, ymin, xmax, ymax

## extract boundary of the protected area as sf from OpenStreetMap (osm)
protected_areas <- opq(osm_bbox) |>
  add_osm_feature(key = "boundary", value = "protected_area", value_exact = F) |>
  osmdata_sf()

## rename protected areas to short names and save to local file as gpkg
protected_areas$osm_polygons |> dplyr::select(name, geometry) |>
  st_write("data/churdhar_wls.gpkg")

## extract rivers / streams (waterways) from osm as sf
waterways <- opq(osm_bbox) |> add_osm_feature(key = "waterway") |> 
  osmdata_sf()

## save waterways to local file as gpkg
waterways$osm_lines |> dplyr::select(name, waterway, geometry) |> 
  st_write("data/waterways.gpkg")

## extract roadways (highway) major roads from osm as sf
highways <- opq(osm_bbox) |> add_osm_feature(key = "highway") |> 
  osmdata_sf()

## save roadways to local file as gpkg
highways$osm_lines |> dplyr::select(highway, geometry) |> 
  st_write("data/highways.gpkg")

## load, merge, and crop pre-downloaded SRTM 30 m elevation data 
elev <- raster("D:/spatial-data/dem/n30_e077_1arc_v3.tif") |>
    crop(extent(77.3578, 77.5207, 30.8035, 30.9214)) # xmin, xmax, ymin, ymax

## prepare and save hillshade
hillShade(
    # extract slope from elevation
    slope = terrain(elev, opt= "slope"),
    
    # extract aspect from elevation
    aspect = terrain(elev, opt= "aspect"), 
    
    # 45 altitude angle and 315 azimuth angle
    angle = 45, direction = 315) |> 
    writeRaster("data/hill_shade.tif")

## mask elevation for study site
cwls_elevation <- elev |> mask(protected_areas$osm_polygons)

## remove all files from environment
rm(list = ls())
Show code
hill_shade <- raster("data/hill_shade.tif")
churdhar_wls <- st_read("data/churdhar_wls.gpkg")
#> Reading layer `churdhar_wls' from data source 
#>   `D:\R\abhikumar86.github.io\_posts\2021-10-27-churdhar-wls\data\churdhar_wls.gpkg' 
#>   using driver `GPKG'
#> Simple feature collection with 1 feature and 1 field
#> Geometry type: POLYGON
#> Dimension:     XY
#> Bounding box:  xmin: 77.39974 ymin: 30.81075 xmax: 77.51013 ymax: 30.91007
#> Geodetic CRS:  WGS 84
Show code
waterways <- st_read("data/waterways.gpkg")
#> Reading layer `waterways' from data source 
#>   `D:\R\abhikumar86.github.io\_posts\2021-10-27-churdhar-wls\data\waterways.gpkg' 
#>   using driver `GPKG'
#> Simple feature collection with 5 features and 2 fields
#> Geometry type: LINESTRING
#> Dimension:     XY
#> Bounding box:  xmin: 77.31519 ymin: 30.74097 xmax: 77.62827 ymax: 30.96009
#> Geodetic CRS:  WGS 84
Show code
highways <- st_read("data/highways.gpkg")
#> Reading layer `highways' from data source 
#>   `D:\R\abhikumar86.github.io\_posts\2021-10-27-churdhar-wls\data\highways.gpkg' 
#>   using driver `GPKG'
#> Simple feature collection with 15 features and 1 field
#> Geometry type: LINESTRING
#> Dimension:     XY
#> Bounding box:  xmin: 77.32344 ymin: 30.78932 xmax: 77.55692 ymax: 30.94795
#> Geodetic CRS:  WGS 84
Show code

## add hillshade
tm_shape(hill_shade) + 
  tm_raster(palette = "-Greys", n = 100, style = "cont", legend.show = FALSE) +
  
  # add graticule
  tm_graticules(lwd = 1.5, col = "grey75", labels.size = 0.85, alpha = 0.5) + 
  
  
  # add protected areas
  tm_shape(churdhar_wls) + tm_fill(col = "green", alpha = 0.3) + 
  tm_borders(col = "seagreen", lwd = 2) +
    
  ## add rivers and streams
  tm_shape(waterways) + tm_lines(col = "dodgerblue", lwd = 4) +
  
  ## add major roads
  tm_shape(highways) + tm_lines(col = "lightyellow", lwd = 2.5) +
    
  ## add legend
  tm_add_legend(type = "fill", labels = "Protected area", col = "green2",
                alpha = 0.4, border.col = "seagreen") +
  tm_add_legend(type = "line", labels = "Roads", col = "lightyellow", 
                lwd = 2.5) +
  tm_add_legend(type = "line", labels = "Rivers", col = "dodgerblue", lwd = 4) +
    
    
  ## add compass and scale bar
  tm_compass(position = c(0.88, 0.86), size = 2.5, bg.color = "grey90", 
               bg.alpha = 0.7) +
  tm_scale_bar(position = c(0.04, 0.01), breaks = c(0, 2.5, 5), text.size = 0.75,
                 bg.color = "grey90", bg.alpha = 0.7) +
    
  ## adjust layout
  tm_layout(frame.double.line = T, compass.type = "arrow", 
            legend.position = c(0.015, 0.78), legend.bg.color = "grey90", 
            legend.bg.alpha = 0.7, 
            main.title.position = "center",
            legend.text.size = 0.85) 

Climate

Vegetation

Show code
rbind(
  c("Abies pindrow", "Pinaceae", "Gymnosperm", "Tree", "@Thakur2021"),
  c("Abies spectabilis", "Pinaceae", "Gymnosperm", "Tree", "@Thakur2021"),  
  c("Acer caesium", "Sapindaceae", "Angiosperm", "Tree", "@Thakur2021"), 
  c("Acer pentapomicum", "Sapindaceae", "Angiosperm", "Tree", "@Thakur2021"),  
  c("Ailanthus altissima", "Simaroubaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Alnus nepalensis", "Betulaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Betula utilis", "Betulaceae", "Angiosperm", "Tree", "@Thakur2021"),  
  c("Buxus wallichiana", "Buxaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Euonymus lucidus", "Celastraceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Ficus palmata", "Moraceae", "Angiosperm", "Tree", "@Thakur2021"),  
  c("Juglans regia", "Juglandaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Lyonia ovalifolia", "Ericaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Neolitsea pallens", "Lauraceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Picea smithiana", "Pinaceae", "Gymnosperm", "Tree", "@Thakur2021"),
  c("Prunus cerasoides", "Rosaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Prunus cornuta", "Rosaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Pyrus pashia", "Rosaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Rhododendron arboreum", "Ericaceae", "Angiosperm", "Tree", "@Thakur2021"),  
  c("Quercus floribunda", "Fagaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Quercus leucotrichophora", "Fagaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Quercus semecarpifolia", "Fagaceae", "Angiosperm", "Tree", "@Thakur2021"), 
  c("Syringa emodi", "Oleaceae", "Angiosperm", "Tree", "@Thakur2021"),
  c("Taxus wallichiana", "Taxaceae", "Gymnosperm", "Tree", "@Thakur2021")
  ) |>
  as.data.frame() |> 
  knitr::kable(caption = "Flora of Churdhar Wildlife Sanctuary",
               col.names = c("Botanical Name", "Family", "Clade", "Habit", 
                             "Reference"))
Table 1: Flora of Churdhar Wildlife Sanctuary
Botanical Name Family Clade Habit Reference
Abies pindrow Pinaceae Gymnosperm Tree Thakur et al. (2021)
Abies spectabilis Pinaceae Gymnosperm Tree Thakur et al. (2021)
Acer caesium Sapindaceae Angiosperm Tree Thakur et al. (2021)
Acer pentapomicum Sapindaceae Angiosperm Tree Thakur et al. (2021)
Ailanthus altissima Simaroubaceae Angiosperm Tree Thakur et al. (2021)
Alnus nepalensis Betulaceae Angiosperm Tree Thakur et al. (2021)
Betula utilis Betulaceae Angiosperm Tree Thakur et al. (2021)
Buxus wallichiana Buxaceae Angiosperm Tree Thakur et al. (2021)
Euonymus lucidus Celastraceae Angiosperm Tree Thakur et al. (2021)
Ficus palmata Moraceae Angiosperm Tree Thakur et al. (2021)
Juglans regia Juglandaceae Angiosperm Tree Thakur et al. (2021)
Lyonia ovalifolia Ericaceae Angiosperm Tree Thakur et al. (2021)
Neolitsea pallens Lauraceae Angiosperm Tree Thakur et al. (2021)
Picea smithiana Pinaceae Gymnosperm Tree Thakur et al. (2021)
Prunus cerasoides Rosaceae Angiosperm Tree Thakur et al. (2021)
Prunus cornuta Rosaceae Angiosperm Tree Thakur et al. (2021)
Pyrus pashia Rosaceae Angiosperm Tree Thakur et al. (2021)
Rhododendron arboreum Ericaceae Angiosperm Tree Thakur et al. (2021)
Quercus floribunda Fagaceae Angiosperm Tree Thakur et al. (2021)
Quercus leucotrichophora Fagaceae Angiosperm Tree Thakur et al. (2021)
Quercus semecarpifolia Fagaceae Angiosperm Tree Thakur et al. (2021)
Syringa emodi Oleaceae Angiosperm Tree Thakur et al. (2021)
Taxus wallichiana Taxaceae Gymnosperm Tree Thakur et al. (2021)
Thakur, Usha, Narendra Singh Bisht, Munesh Kumar, and Amit Kumar. 2021. “Influence of Altitude on Diversity and Distribution Pattern of Trees in Himalayan Temperate Forests of Churdhar Wildlife Sanctuary, India” 232 (5). https://doi.org/10.1007/s11270-021-05162-8.

References

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. Source code is available at https://github.com/abhikumar86/abhikumar86.github.io/, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

Citation

For attribution, please cite this work as

Kumar (2021, Oct. 27). Abhishek Kumar: Churdhar Wildlife Sanctuary. Retrieved from https://abhikumar86.github.io/posts/2021-10-27-churdhar-wls/

BibTeX citation

@misc{kumar2021churdhar,
  author = {Kumar, Abhishek},
  title = {Abhishek Kumar: Churdhar Wildlife Sanctuary},
  url = {https://abhikumar86.github.io/posts/2021-10-27-churdhar-wls/},
  year = {2021}
}