This vignette provides a basic overview of the functions in R package
viewscape
.
The basic viewshed analysis can be accessed through calling the
compute_viewshed
. The two needed objects to compute the viewshed are a
digital surface model (DSM) and a viewpoint.
library(viewscape)
#Load in DSM
test_dsm <- terra::rast(system.file("test_dsm.tif",
package ="viewscape"))
#Load in the viewpoint
test_viewpoint <- sf::read_sf(system.file("test_viewpoint.shp",
package = "viewscape"))
#Compute viewshed
output <- viewscape::compute_viewshed(dsm = test_dsm,
viewpoints = test_viewpoint,
offset_viewpoint = 6,
r = 1600,
method = 'plane')
# overlap viewshed on DSM
output_r <- viewscape::visualize_viewshed(output, outputtype = 'raster')
terra::plot(test_dsm, axes=FALSE, box=FALSE, legend = FALSE)
terra::plot(output_r, add=TRUE, col = "red", axes=FALSE, box=FALSE, legend = FALSE)
terra::plot(test_viewpoint, add = TRUE, col = "blue", axes=FALSE, box=FALSE, legend = FALSE)
sector <- viewscape::fov_mask(output, c(40,160))
terra::plot(test_dsm, axes=FALSE, box=FALSE, legend = FALSE)
terra::plot(viewscape::visualize_viewshed(sector, outputtype = 'raster'),
axes=FALSE, box=FALSE, legend = FALSE, add = TRUE, col = "red")
terra::plot(test_viewpoint, add = TRUE, col = "blue", axes=FALSE, box=FALSE, legend = FALSE)
#Load in DSM
test_dsm <- terra::rast(system.file("test_dsm.tif",
package ="viewscape"))
# Load points (.shp file)
test_viewpoints <- sf::read_sf(system.file("test_viewpoints.shp",
package = "viewscape"))
# Compute viewsheds
output <- viewscape::compute_viewshed(dsm = test_dsm,
viewpoints = test_viewpoints,
offset_viewpoint = 6,
parallel = TRUE,
workers = 8)
# plot all viewsheds on DSM
par(mfrow=c(3,3))
for(i in 1:length(output)) {
each <- output[[i]]
raster_data <- viewscape::visualize_viewshed(each, outputtype="raster")
raster::plot(test_dsm, axes=FALSE, box=FALSE, legend = FALSE)
raster::plot(raster_data, add=TRUE, col = "red", axes=FALSE, box=FALSE, legend = FALSE)
}
The calculate_viewmetrics function is designed to compute a set of configuration metrics based on a given viewshed object and optionally, digital surface models (DSM) and digital terrain models (DTM) for terrain analysis. The function calculates various metrics that describe the visibility characteristics of a landscape from a specific viewpoint.
# Load DTM
test_dtm <- terra::rast(system.file("test_dtm.tif",
package ="viewscape"))
# Load canopy raster
test_canopy <- terra::rast(system.file("test_canopy.tif",
package ="viewscape"))
# Load building footprints raster
test_building <- terra::rast(system.file("test_building.tif",
package ="viewscape"))
# calculate metrics given the viewshed
test_metrics <- viewscape::calculate_viewmetrics(output[[1]],
test_dsm,
test_dtm,
list(test_canopy, test_building))
test_metrics
calculate_diversity
calculates the proportion of each type of land
use/ cover within a viewshed to get the Shannon Diversity Index.
# load landuse raster
test_landuse <- terra::rast(system.file("test_landuse.tif",
package ="viewscape"))
i# the Shannon Diversity Index (SDI)
## [1] 8
test_diversity <- viewscape::calculate_diversity(output[[1]],
test_landuse,
proportion = TRUE)
# SDI and The proportion of each type of land use
test_diversity
## $SDI
## [1] 0.636
##
## $Proportion
## 1 2 3 4 5 6
## type 0.0000000 3.00000000 4.000000000 5.00000000 7.00000000 8.0000000000
## proportion 0.8315693 0.04011499 0.001502679 0.03913498 0.08715536 0.0005226708
calculate_feature
is to calculate the proportion of a feature
(including trees, buildings, parking, and roads) within the viewshed.
This function can be applied to
# load landuse raster
test_canopy <- terra::rast(system.file("test_canopy.tif",
package ="viewscape"))
# calculate the percentage of each type of land use
test_canopy_proportion <- viewscape::calculate_feature(viewshed = output[[1]],
feature = test_canopy,
type = 2,
exclude_value=0)
test_canopy_proportion