View source: R/powerlines-track_wires.R
track_wires | R Documentation |
Assuming the coordinates, the elevation and the type of transmission tower are known the functions tracks the wires of the powerlines. To achieve this task it computes the catenary equation of the wires between two consecutive towers. Strictly speaking the function is not able to find the wires instead it guesses their equation that can be computed deterministically from the tower coordinates, their height and their type.
track_wires( towers, powerline, dtm, type = c("waist-type", "double-circuit"), debug = FALSE )
towers |
|
powerline |
A |
dtm |
A RasterLayer. Digital Terrain Model is useful to find a relevant elevation for virtual towers |
type |
One of "waist-type" or "double-circuit" according to Hydro-Quebec. Can also be a list with custom specifications. See examples. |
debug |
logical. Plot the different steps of the algorithm so one can try to figure out what is going wrong. |
A SpatialPointsDataFrame
that actually represents 3D lines with several attributes
per points. Z
the elevation, virtual
tells if the wire has been found with two
consecutive tower and is thus accurate or if only one tower was used and in this case the wire is
a pure guess, section
attributes an ID to each wire section i.e. between two towers, ID
attributes and ID to each powerline type
store the transmission tower type.
Roussel J, Achim A, Auty D. 2021. Classification of high-voltage power line structures in low density ALS data acquired over broad non-urban areas. PeerJ Computer Science 7:e672 https://doi.org/10.7717/peerj-cs.672
Other electrical network:
classify_transmissiontowers()
,
classify_wires()
,
get_tower_spec()
# A simple file with wires already clipped from 4 files + shapefile # of the network LASfile <- system.file("extdata", "wires.laz", package="lidRplugins") wireshp <- system.file("extdata", "wires.shp", package="lidRplugins") dtmtif <- system.file("extdata", "wire-dtm.tif", package="lidRplugins") las <- readLAS(LASfile, select = "xyzc") network <- sf::st_read(wireshp) dtm <- raster::raster(dtmtif) towers <- find_transmissiontowers(las, network, dtm, "waist-type") wires <- track_wires(towers, network, dtm, "waist-type") col <- c("red", "blue", "forestgreen", "darkorchid", "darkorange")[wires$ID] col[wires$virtual & col == "red"] <- "pink" col[wires$virtual & col == "blue"] <- "lightblue" col[wires$virtual & col == "forestgreen"] <- "lightgreen" col[wires$virtual & col == "darkorchid"] <- "plum" col[wires$virtual & col == "darkorange"] <- "goldenrod1" plot(header(las)) plot(towers, add = TRUE, col = towers$deflection + 1) plot(wires, col = col, add = TRUE, cex = 0.1) plot(las, clear_artifacts = FALSE) rgl::points3d(wires@coords[,1], wires@coords[,2], wires$z, col = col, size = 5)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.