| Type: | Package | 
| Title: | Spatial Network Analysis | 
| Version: | 0.8.1 | 
| Description: | Interface package for 'sala', the spatial network analysis library from the 'depthmapX' software application. The R parts of the code are based on the 'rdepthmap' package. Allows for the analysis of urban and building-scale networks and provides metrics and methods usually found within the Space Syntax domain. Methods in this package are described by K. Al-Sayed, A. Turner, B. Hillier, S. Iida and A. Penn (2014) "Space Syntax methodology", and also by A. Turner (2004) https://discovery.ucl.ac.uk/id/eprint/2651 "Depthmap 4: a researcher's handbook". | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| LinkingTo: | Rcpp, cli | 
| Imports: | Rcpp, methods | 
| Depends: | sf, stars | 
| Suggests: | knitr, rmarkdown, testthat, withr | 
| SystemRequirements: | C++17 | 
| VignetteBuilder: | knitr | 
| Collate: | 'generics.R' 'rcppRoxygen.R' 'helper-loadMapsRoxygen.R' 'helper-processResult.R' 'ShapeMap.R' 'AxialShapeGraph.R' 'AllLineShapeGraph.R' 'SegmentShapeGraph.R' 'PointMap.R' 'TraversalType.R' 'AgentLookMode.R' 'RcppExports.R' 'agentAnalysis.R' 'allFewestLineMap.R' 'axialAnalysis.R' 'generateRandomCapString.R' 'getTopFeatures.R' 'isovist.R' 'matchPointsToLines.R' 'palettes.R' 'prepareVGA.R' 'readMetaGraph.R' 'refIDtoIndex.R' 'segmentAnalysis.R' 'sfConversions.R' 'shapegraphToGraphData.R' 'oneToOneTraverse.R' 'oneToAllTraverse.R' 'allToAllTraverse.R' 'vgaLocal.R' | 
| RoxygenNote: | 7.3.2 | 
| Language: | en-GB | 
| URL: | https://github.com/spatialnous/alcyon, https://spatialnous.github.io/alcyon/ | 
| NeedsCompilation: | yes | 
| Packaged: | 2025-05-05 23:12:33 UTC; petros | 
| Author: | Petros Koutsolampros | 
| Maintainer: | Petros Koutsolampros <r-devel@pklampros.net> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-05-05 23:50:06 UTC | 
Agent look modes.
Description
These are meant to be used to indicate what kind of look function the agents use to look around and decide where to go next. Possible values:
- AgentLookMode$None 
- AgentLookMode$Standard 
- AgentLookMode$LineOfSightLength 
- AgentLookMode$OcclusionLength 
- AgentLookMode$OcclusionAny 
- AgentLookMode$OcclusionGroup45 (Occlusion group bins - 45 degrees) 
- AgentLookMode$OcclusionGroup60 (Occlusion group bins - 60 degrees) 
- AgentLookMode$OcclusionFurthest (Furthest occlusion per bin) 
- AgentLookMode$BinFarDistance (Per bin far distance weighted) 
- AgentLookMode$BinAngle (Per bin angle weighted) 
- AgentLookMode$BinFarDistanceAngle (Per bin far-distance and angle weighted) 
- AgentLookMode$BinMemory (Per bin memory) 
Usage
AgentLookMode
Format
An object of class list of length 12.
Value
A list of numbers representing each agent look mode
Examples
AgentLookMode$Standard
AgentLookMode$LineOfSightLength
AgentLookMode$OcclusionAny
All-line Axial ShapeGraph
Description
A representation of sala's All-line ShapeGraph in R. Holds onto a sala All-line ShapeGraph pointer and operates on that
Axial ShapeGraph
Description
A representation of sala's Axial ShapeGraph in R. Holds onto a sala Axial ShapeGraph pointer and operates on that
See Also
Other AxialShapeGraph: 
as()
Subset AxialShapeGraph objects
Description
Subsetting AxialShapeGraph objects essentially passes the data to sf. See sf
Usage
## S3 method for class 'AxialShapeGraph'
x[...]
## S3 replacement method for class 'AxialShapeGraph'
x[...] <- value
Arguments
| x | object of class  | 
| ... | other parameters passed to  | 
| value | value to be passed to  | 
PointMap
Description
A representation of sala's PointMap in R. Holds onto a sala PointMap pointer and operates on that
Subset PointMap objects
Description
Subsetting PointMap objects essentially passes the data to stars See stars_subset
Usage
## S3 method for class 'PointMap'
x[...]
## S3 replacement method for class 'PointMap'
x[...] <- value
Arguments
| x | object of class  | 
| ... | other parameters passed to  | 
| value | value to be passed to  | 
Segment ShapeGraph
Description
A representation of sala's Segment ShapeGraph in R. Holds onto a sala Segment ShapeGraph pointer and operates on that
See Also
Other SegmentShapeGraph: 
as()
Subset SegmentShapeGraph objects
Description
Subsetting SegmentShapeGraph objects essentially passes the data to sf. See sf
Usage
## S3 method for class 'SegmentShapeGraph'
x[...]
## S3 replacement method for class 'SegmentShapeGraph'
x[...] <- value
Arguments
| x | object of class  | 
| ... | other parameters passed to  | 
| value | value to be passed to  | 
ShapeMap class
Description
A representation of sala's ShapeMap in R. Holds onto a sala ShapeMap pointer and operates on that
See Also
Other ShapeMap: 
as()
Subset ShapeMap objects
Description
Subsetting ShapeMap objects essentially passes the data to sf. See sf
Usage
## S3 method for class 'ShapeMap'
x[...]
## S3 replacement method for class 'ShapeMap'
x[...] <- value
Arguments
| x | object of class  | 
| ... | other parameters passed to  | 
| value | value to be passed to  | 
Traversal types
Description
These are meant to be used to indicate what kind of analysis is meant to be carried out.
Usage
TraversalType
Format
An object of class list of length 4.
Value
A list of numbers representing each particular analysis type
Examples
TraversalType$Angular
TraversalType$Topological
TraversalType$Metric
VGA Local Analysis algorithms.
Description
Different algorithms for calculating the VGA Local metrics (Control, Controllability, Clustering Coefficient).
- VGALocalAlgorithm$None 
- VGALocalAlgorithm$Standard 
- VGALocalAlgorithm$AdjacencyMatrix 
Usage
VGALocalAlgorithm
Format
An object of class list of length 3.
Value
A list of numbers representing each algorithm
Examples
VGALocalAlgorithm$Angular
VGALocalAlgorithm$Topological
VGALocalAlgorithm$Metric
Agent Analysis
Description
Runs Agent Analysis on the given PointMap
Usage
agentAnalysis(
  pointMap,
  timesteps,
  releaseRate,
  agentLifeTimesteps,
  agentFov,
  agentStepsToDecision,
  agentLookMode,
  originX = vector(),
  originY = vector(),
  locationSeed = 0L,
  numberOfTrails = 0L,
  getGateCounts = FALSE,
  copyMap = TRUE,
  verbose = FALSE,
  progress = FALSE
)
Arguments
| pointMap | A PointMap, used as an exosomatic visual map for agents to take exploratory information | 
| timesteps | Number of total system timesteps. | 
| releaseRate | Agent release rate (likelihood of release per timestep). | 
| agentLifeTimesteps | Agent total lifetime (in timesteps) | 
| agentFov | Agent field-of-view (out of 32 bins = 360). | 
| agentStepsToDecision | Agent steps before turn decision. | 
| agentLookMode | The agent look mode. See AgentLookMode | 
| originX | Agent starting points (x coordinates). | 
| originY | Agent starting point (y coordinates). | 
| locationSeed | Agents to start at random locations with specific seed (0 to 10). Default is 0. | 
| numberOfTrails | Record trails for this amount of agents (set to 0 to record all, with max possible currently = 50). | 
| getGateCounts | Get values at gates | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
| progress | Optional. Show process progress. | 
Value
Returns a list with:
- newAttributes: The new attributes that were created during the process 
- trailMap: A ShapeMap with trails if numberOfTrails was set over 0 
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.5,
    fillX = 3.0,
    fillY = 6.0,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
agentAnalysis(
  pointMap,
  timesteps = 3000L,
  releaseRate = 0.1,
  agentStepsToDecision = 3L,
  agentFov = 11L,
  agentLife = 1000L,
  agentLookMode = AgentLookMode$Standard,
  originX = NA,
  originY = NA,
  locationSeed = 1L,
  numberOfTrails = 50L,
  getGateCounts = FALSE,
  verbose = FALSE
)
All-to-all traversal
Description
Runs all-to-all traversal on a map with a graph. This is applicable to:
- PointMaps (Visibility Graph Analysis) 
- Axial ShapeGraphs (Axial analysis) 
- Segment ShapeGraphs (Segment analysis) 
Usage
allToAllTraverse(
  map,
  traversalType,
  radii,
  radiusTraversalType,
  weightByAttribute = NULL,
  includeBetweenness = FALSE,
  quantizationWidth = NA,
  gatesOnly = FALSE,
  nthreads = 1L,
  copyMap = TRUE,
  verbose = FALSE,
  progress = FALSE
)
Arguments
| map | A PointMap, Axial ShapeGraph or Segment ShapeGraph | 
| traversalType | The traversal type. See TraversalType | 
| radii | A list of radii | 
| radiusTraversalType | The traversal type to keep track of whether the analysis is within the each radius limit. See TraversalType | 
| weightByAttribute | The attribute to weigh the analysis with | 
| includeBetweenness | Set to TRUE to also calculate betweenness (known as Choice in the Space Syntax domain) | 
| quantizationWidth | Set this to use chunks of this width instead of continuous values for the cost of traversal. This is equivalent to the "tulip bins" for depthmapX's tulip analysis (1024 tulip bins = pi/1024 quantizationWidth). Only works for Segment ShapeGraphs | 
| gatesOnly | Optional. Only calculate results at particular gate pixels. Only works for PointMaps | 
| nthreads | Optional. Use more than one threads. 1 by default, set to 0 to use all available. Only available for PointMaps. | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
| progress | Optional. Enable progress display | 
Value
A new map with the results included
Examples
# Pointmap analysis (VGA)
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.5,
    fillX = 3.0,
    fillY = 6.0,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
allToAllTraverse(pointMap,
  traversalType = TraversalType$Angular,
  radii = -1L,
  radiusTraversalType = TraversalType$None
)
# Axial analysis
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
allToAllTraverse(
  shapeGraph,
  traversalType = TraversalType$Topological,
  radii = c("n", "3"),
  includeBetweenness = TRUE
)
# Segment analysis
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_segment_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "SegmentShapeGraph")
allToAllTraverse(
  shapeGraph,
  radii = c("n", "100"),
  radiusTraversalType = TraversalType$Metric,
  traversalType = TraversalType$Angular,
  weightByAttribute = "Segment Length",
  includeBetweenness = TRUE,
  quantizationWidth = pi / 1024L,
  verbose = FALSE,
  progress = FALSE
)
as("sf", "ShapeMap")
Description
This is a direct conversion, for ShapeMap -> Axial -> Segment see axialToSegmentShapeGraph
This is a direct conversion, for ShapeMap -> Axial -> Segment see axialToSegmentShapeGraph
See Also
Other ShapeMap: 
ShapeMap-class
Other ShapeMap: 
ShapeMap-class
Other AxialShapeGraph: 
AxialShapeGraph-class
Other AxialShapeGraph: 
AxialShapeGraph-class
Other SegmentShapeGraph: 
SegmentShapeGraph-class
Other SegmentShapeGraph: 
SegmentShapeGraph-class
Axial analysis - local metrics
Description
Runs axial analysis to get the local metrics Control and Controllability
Usage
axialAnalysisLocal(shapeGraph, copyMap = TRUE, verbose = FALSE)
Arguments
| shapeGraph | An Axial ShapeGraph | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
Value
Returns a list with:
- completed: Whether the analysis completed 
- newAttributes: The new attributes that were created during the process 
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
axialAnalysisLocal(shapeGraph)
Axial to Segment ShapeGraph
Description
Convert an Axial ShapeGraph to a Segment ShapeGraph
Usage
axialToSegmentShapeGraph(axialShapeGraph, stubRemoval = NULL)
Arguments
| axialShapeGraph | An Axial ShapeGraph | 
| stubRemoval | Remove stubs of axial lines shorter than this percentage (for example provide 0.4 for 40%) | 
Value
A new Segment ShapeGraph
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
axialToSegmentShapeGraph(shapeGraph, stubRemoval = 0.4)
Block lines on a PointMap
Description
Takes a PointMap and a ShapeMap with lines and blocks the cells on the PointMap where the lines pass.
Usage
blockLines(pointMap, lineStringMap, copyMap = TRUE, verbose = FALSE)
Arguments
| pointMap | The input PointMap | 
| lineStringMap | Map of lines, either a ShapeMap, or an sf lineString map | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
Value
A new PointMap with points as they have been blocked by the lines
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
lineStringMap <- as(sfMap, "sf")
mapRegion <- sf::st_bbox(lineStringMap)
pointMap <- createGrid(
  minX = mapRegion[["xmin"]],
  minY = mapRegion[["ymin"]],
  maxX = mapRegion[["xmax"]],
  maxY = mapRegion[["ymax"]],
  gridSize = 0.04
)
blockLines(
  pointMap = pointMap,
  lineStringMap = lineStringMap[vector()]
)
Get map connections
Description
Get map connections
Usage
connections(map)
Arguments
| map | A sala map | 
Value
A matrix with the connected refs
Get the Axial ShapeGraph connections
Description
Get the Axial ShapeGraph connections
Usage
## S4 method for signature 'AxialShapeGraph'
connections(map)
Arguments
| map | An Axial ShapeGraph | 
Value
A matrix with the connected refs
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
connections(shapeGraph)
Get the PointMap connections
Description
Get the PointMap connections
Usage
## S4 method for signature 'PointMap'
connections(map)
Arguments
| map | A PointMap | 
Value
A matrix with the connected refs
Examples
mifFile <- system.file(
    "extdata", "testdata", "gallery",
    "gallery_lines.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.04,
    fillX = 3.01,
    fillY = 6.7,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
# plot the first 100 connections only
head(connections(pointMap), 100)
Get the Segment ShapeGraph connections
Description
Get the Segment ShapeGraph connections
Usage
## S4 method for signature 'SegmentShapeGraph'
connections(map)
Arguments
| map | An Segment ShapeGraph | 
Value
A matrix with the connected refs
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_segment_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "SegmentShapeGraph")
connections(shapeGraph)
Create a PointMap through a grid
Description
Create a PointMap through a grid
Usage
createGrid(minX, minY, maxX, maxY, gridSize, verbose = FALSE)
Arguments
| minX | Minimum X of the bounding region | 
| minY | Minimum Y of the bounding region | 
| maxX | Maximum X of the bounding region | 
| maxY | Maximum Y of the bounding region | 
| gridSize | Size of the cells | 
| verbose | Optional. Show more information of the process. | 
Value
A new PointMap
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
lineStringMap <- as(sfMap, "sf")
mapRegion <- sf::st_bbox(lineStringMap)
createGrid(
  minX = mapRegion[["xmin"]],
  minY = mapRegion[["ymin"]],
  maxX = mapRegion[["xmax"]],
  maxY = mapRegion[["ymax"]],
  gridSize = 0.04
)
Fill a PointMap's grid starting from one or more points
Description
Fill a PointMap's grid starting from one or more points
Usage
fillGrid(pointMap, fillX, fillY, copyMap = TRUE, verbose = FALSE)
Arguments
| pointMap | The input PointMap | 
| fillX | X coordinate of the fill points | 
| fillY | Y coordinate of the fill points | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
Value
A new PointMap with filled points
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
lineStringMap <- as(sfMap, "sf")
mapRegion <- sf::st_bbox(lineStringMap)
pointMap <- createGrid(
  minX = mapRegion[["xmin"]],
  minY = mapRegion[["ymin"]],
  maxX = mapRegion[["xmax"]],
  maxY = mapRegion[["ymax"]],
  gridSize = 0.04
)
pointMap <- blockLines(
  pointMap = pointMap,
  lineStringMap = lineStringMap[vector()]
)
fillGrid(
  pointMap = pointMap,
  fillX = 3.01,
  fillY = 6.7
)
Extract top x percent of features
Description
Sorts features by a specific column and extracts the top x percent
Usage
getTopFeatures(lineStringMap, column, percent)
Arguments
| lineStringMap | An sf lineString map | 
| column | The column to use to extract the features from | 
| percent | Percentage of features (to total) to extract | 
Value
The lineString map filtered and sorted
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
shapeGraph <- allToAllTraverse(
  shapeGraph,
  traversalType = TraversalType$Topological,
  radii = c("n", "3"),
  includeBetweenness = TRUE
)
getTopFeatures(shapeGraph, "Connectivity", 0.1)
Create isovists at point and direction angle
Description
Create one or more isovists at particular points, given angle and field of view
Usage
isovist(boundaryMap, x, y, angle = NA, viewAngle = NA, verbose = FALSE)
Arguments
| boundaryMap | A ShapeMap with lines designating the isovist boundaries | 
| x | X coordinate of the origin points | 
| y | Y coordinate of the origin points | 
| angle | The angle (from the X axis) of the isovist look direction | 
| viewAngle | The angle signifying the isovist's field of view | 
| verbose | Optional. Show more information of the process. | 
Value
A ShapeMap with the isovist polygons
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
isovist(
  shapeMap,
  x = c(3.01, 1.3),
  y = c(6.70, 5.2),
  angle = 0.01,
  viewAngle = 3.14,
  FALSE
)
Create isovists using two points
Description
Create one or more isovists at particular points, given another point for direction and an angle for field of view
Usage
isovist2pts(boundaryMap, x, y, toX, toY, viewAngle, verbose = FALSE)
Arguments
| boundaryMap | A ShapeMap with lines designating the isovist boundaries | 
| x | X coordinate of the origin points | 
| y | Y coordinate of the origin points | 
| toX | X coordinate of the target points | 
| toY | Y coordinate of the target points | 
| viewAngle | The angle signifying the isovist's field of view | 
| verbose | Optional. Show more information of the process. | 
Value
A ShapeMap with the isovist polygons
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
isovist2pts(
  shapeMap,
  x = c(3.01, 1.3),
  y = c(6.70, 5.2),
  toX = c(3.40, 1.1),
  toY = c(6.50, 5.6),
  viewAngle = 3.14,
  FALSE
)
Link map points/lines as if selecting them using points
Description
Link map points/lines as if selecting them using points
Usage
linkCoords(map, fromX, fromY, toX, toY, copyMap = TRUE)
Arguments
| map | A sala map | 
| fromX | X coordinate of the origin point | 
| fromY | Y coordinate of the origin point | 
| toX | X coordinate of the target point | 
| toY | Y coordinate of the target point | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new map with linked points/lines
Link two Axial Lines (coordinates)
Description
Link two locations on an Axial ShapeGraph using the point coordinates
Usage
## S4 method for signature 'AxialShapeGraph'
linkCoords(map, fromX, fromY, toX, toY, copyMap = TRUE)
Arguments
| map | An Axial ShapeGraph | 
| fromX | X coordinate of the first link point | 
| fromY | Y coordinate of the first link point | 
| toX | X coordinate of the second link point | 
| toY | Y coordinate of the second link point | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new Axial ShapeGraph with linked lines
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
linkCoords(shapeGraph, 982.8, -1620.3, 1217.1, -1977.3)
Link two PointMap Cells (coordinates)
Description
Link two cells on a PointMap using the point coordinates
Usage
## S4 method for signature 'PointMap'
linkCoords(map, fromX, fromY, toX, toY, copyMap = TRUE)
Arguments
| map | A PointMap | 
| fromX | X coordinate of the first link point | 
| fromY | Y coordinate of the first link point | 
| toX | X coordinate of the second link point | 
| toY | Y coordinate of the second link point | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new PointMap with linked points
Examples
mifFile <- system.file(
    "extdata", "testdata", "gallery",
    "gallery_lines.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.04,
    fillX = 3.01,
    fillY = 6.7,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
linkCoords(pointMap, 1.74, 6.7, 5.05, 5.24)
Link map points/lines using their refs
Description
Link map points/lines using their refs
Usage
linkRefs(map, fromRef, toRef, copyMap = TRUE)
Arguments
| map | A sala map | 
| fromRef | The ref of the origin element | 
| toRef | The ref of the target element | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new map with linked points/lines
Link two Axial Lines (refs)
Description
Link two lines on an Axial ShapeGraph using their refs
Usage
## S4 method for signature 'AxialShapeGraph'
linkRefs(map, fromRef, toRef, copyMap = TRUE)
Arguments
| map | An Axial ShapeGraph | 
| fromRef | Ref of the first link line | 
| toRef | Ref of the second link line | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new Axial ShapeGraph with linked lines
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
linkRefs(shapeGraph, 0L, 9L)
Link two PointMap Cells (refs)
Description
Link two cells on an PointMap using their refs
Usage
## S4 method for signature 'PointMap'
linkRefs(map, fromRef, toRef, copyMap = TRUE)
Arguments
| map | A PointMap | 
| fromRef | Ref of the first link line | 
| toRef | Ref of the second link line | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new PointMap with linked points
Examples
mifFile <- system.file(
    "extdata", "testdata", "gallery",
    "gallery_lines.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.04,
    fillX = 3.01,
    fillY = 6.7,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
pointMap <- linkRefs(pointMap, 1835056L, 7208971L)
Get map links
Description
Get map links
Usage
links(map)
Arguments
| map | A sala map | 
Value
A matrix with the linked refs
Get the Axial ShapeGraph links
Description
Get the Axial ShapeGraph links
Usage
## S4 method for signature 'AxialShapeGraph'
links(map)
Arguments
| map | An Axial ShapeGraph | 
Value
A matrix with the linked refs
Examples
# links of an axial map
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
linkRefs(shapeGraph, 0L, 9L)
unlinkCoords(shapeGraph, 530923.0, 184041.0, 530956.0, 183887.0)
links(shapeGraph)
Get the PointMap links
Description
Get the PointMap links
Usage
## S4 method for signature 'PointMap'
links(map)
Arguments
| map | A PointMap | 
Value
A matrix with the linked refs
Examples
mifFile <- system.file(
    "extdata", "testdata", "gallery",
    "gallery_lines.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.04,
    fillX = 3.01,
    fillY = 6.7,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
linkRefs(pointMap, 1835056L, 7208971L)
links(pointMap)
Create an All-line Map
Description
Create an All-line Map
Usage
makeAllLineMap(boundsMap, seedX, seedY, verbose = FALSE)
Arguments
| boundsMap | The boundary ShapeMap to create the all-line map in | 
| seedX | X coordinate of the seed (the point that initiates the process) | 
| seedY | Y coordinate of the seed (the point that initiates the process) | 
| verbose | Optional. Show more information of the process. | 
Value
An All-line Axial ShapeGraph
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
makeAllLineMap(
  shapeMap,
  seedX = 3.01,
  seedY = 6.7
)
Single Colour from depthmapX's Palettes
Description
Create a single colour from depthmapX's palettes.
Usage
makeDepthmapClassicColour(value, rangeMin = 0, rangeMax = 1)
makeAxmanesqueColour(value, rangeMin = 0, rangeMax = 1)
makePurpleOrangeColour(value, rangeMin = 0, rangeMax = 1)
makeBlueRedColour(value, rangeMin = 0, rangeMax = 1)
makeGreyScaleColour(value, rangeMin = 0, rangeMax = 1)
makeNiceHSBColour(value, rangeMin = 0, rangeMax = 1)
Arguments
| value | Value within the min/max range to take | 
| rangeMin | The min value of the range | 
| rangeMax | The max value of the range | 
Value
Returns a single colour.
Examples
makeDepthmapClassicColour(0.2, 0, 1)
makeAxmanesqueColour(0.2, 0, 1)
makePurpleOrangeColour(0.2, 0, 1)
makeBlueRedColour(0.2, 0, 1)
makeGreyScaleColour(0.2, 0, 1)
makeNiceHSBColour(0.2, 0, 1)
Create a graph between visible cells in the PointMap
Description
Create a graph between visible cells in the PointMap
Usage
makeVGAGraph(
  pointMap,
  boundaryGraph = FALSE,
  maxVisibility = NA,
  copyMap = TRUE,
  verbose = FALSE
)
Arguments
| pointMap | The input PointMap | 
| boundaryGraph | Only create a graph on the boundary cells | 
| maxVisibility | Limit how far two cells can be to be connected | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
Value
A new PointMap with a graph between points
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
lineStringMap <- as(sfMap, "sf")
mapRegion <- sf::st_bbox(lineStringMap)
pointMap <- createGrid(
  minX = mapRegion[["xmin"]],
  minY = mapRegion[["ymin"]],
  maxX = mapRegion[["xmax"]],
  maxY = mapRegion[["ymax"]],
  gridSize = 0.5
)
pointMap <- blockLines(
  pointMap = pointMap,
  lineStringMap = lineStringMap[vector()]
)
pointMap <- fillGrid(
  pointMap = pointMap,
  fillX = 3.01,
  fillY = 6.7
)
makeVGAGraph(
  pointMap = pointMap,
  boundaryGraph = FALSE,
  maxVisibility = NA
)
Create a PointMap grid, fill it and make the graph
Description
This is intended to be a single command to get from the lines to a PointMap ready for analysis
Usage
makeVGAPointMap(
  lineStringMap,
  gridSize,
  fillX,
  fillY,
  maxVisibility = NA,
  boundaryGraph = FALSE,
  verbose = FALSE
)
Arguments
| lineStringMap | Map of lines, either a ShapeMap, or an sf lineString map | 
| gridSize | Size of the cells | 
| fillX | X coordinate of the fill points | 
| fillY | Y coordinate of the fill points | 
| maxVisibility | Limit how far two cells can be to be connected | 
| boundaryGraph | Only create a graph on the boundary cells | 
| verbose | Optional. Show more information of the process. | 
Value
A new PointMap
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
makeVGAPointMap(
  sfMap,
  gridSize = 0.5,
  fillX = 3.01,
  fillY = 6.7,
  maxVisibility = NA,
  boundaryGraph = FALSE,
  verbose = FALSE
)
Match points to lines
Description
Match points to their closest line. Matches (spatial-join) points to lines. Finds the point closest to a line. One point is attached to one line, thus if fewer points than lines are given then some lines will have no point attached.
Usage
matchPointsToLines(points, lines, getIndex = FALSE)
Arguments
| points | Points to attach. | 
| lines | Lines to attach to. | 
| getIndex | Get the index returned and not the data. | 
Value
If getIndex is TRUE then the index of the points as they relate to the matching lines are given. If not, then the data from the points dataframe is returned.
Examples
segmentsMif <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_segment_original.mif",
    package = "alcyon"
)
segmentsSf <- st_read(
    segmentsMif,
    geometry_column = 1L, quiet = TRUE
)
gateCountsMif <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_ped_gatecounts.mif",
    package = "alcyon"
)
gateCountsSf <- st_read(
    gateCountsMif,
    geometry_column = 1L, quiet = TRUE
)
matchPointsToLines(gateCountsSf, segmentsSf)
Get map name
Description
Get map name
Usage
name(map)
Arguments
| map | A sala map | 
Value
The name of the object as a string
Get the PointMap name
Description
Get the PointMap name
Usage
## S4 method for signature 'PointMap'
name(map)
Arguments
| map | A PointMap | 
Value
The name of the PointMap as a string
Examples
mifFile <- system.file(
    "extdata", "testdata", "gallery",
    "gallery_lines.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.04,
    fillX = 3.01,
    fillY = 6.7,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
name(pointMap)
Get the ShapeMap name
Description
Get the ShapeMap name
Usage
## S4 method for signature 'ShapeMap'
name(map)
Arguments
| map | A ShapeMap | 
Value
The name of the ShapeMap as a string
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
name(shapeMap)
One-to-all traversal
Description
Runs one-to-all traversal on a map with a graph. This is applicable to:
- PointMaps (Visibility Graph Analysis) 
- Axial ShapeGraphs (Axial analysis) 
- Segment ShapeGraphs (Segment analysis) 
Usage
oneToAllTraverse(
  map,
  traversalType,
  fromX,
  fromY,
  quantizationWidth = NA,
  copyMap = TRUE,
  verbose = FALSE
)
Arguments
| map | A PointMap, Axial ShapeGraph or Segment ShapeGraph | 
| traversalType | The traversal type. See TraversalType | 
| fromX | X coordinate of the point to start the traversal from | 
| fromY | X coordinate of the point to start the traversal from | 
| quantizationWidth | Set this to use chunks of this width instead of continuous values for the cost of traversal. This is equivalent to the "tulip bins" for depthmapX's tulip analysis (1024 tulip bins = pi/1024 quantizationWidth). Only works for Segment ShapeGraphs | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
Value
Returns a list with:
- completed: Whether the analysis completed 
- newAttributes: The new attributes that were created during the process 
Examples
# Pointmap analysis (VGA)
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.5,
    fillX = 3.0,
    fillY = 6.0,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
oneToAllTraverse(
  pointMap,
  traversalType = TraversalType$Metric,
  fromX = 3.01,
  fromY = 6.7
)
# Axial analysis
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
oneToAllTraverse(
  shapeGraph,
  traversalType = TraversalType$Topological,
  fromX = 1217.1,
  fromY = -1977.3
)
# Segment analysis
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_segment_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "SegmentShapeGraph")
oneToAllTraverse(
  shapeGraph,
  traversalType = TraversalType$Topological,
  fromX = 1217.1,
  fromY = -1977.3
)
One-to-one traversal
Description
Runs one-to-one traversal on a map with a graph. This is applicable to:
- PointMaps (Visibility Graph Analysis) 
- Segment ShapeGraphs (Segment analysis) 
Usage
oneToOneTraverse(
  map,
  traversalType,
  fromX,
  fromY,
  toX,
  toY,
  quantizationWidth = NA,
  copyMap = TRUE,
  verbose = FALSE
)
Arguments
| map | A PointMap or Segment ShapeGraph | 
| traversalType | The traversal type. See TraversalType | 
| fromX | X coordinate of the point(s) to start the traversal from | 
| fromY | X coordinate of the point(s) to start the traversal from | 
| toX | X coordinate of the point(s) to start the traversal from | 
| toY | X coordinate of the point(s) to start the traversal from | 
| quantizationWidth | Set this to use chunks of this width instead of continuous values for the cost of traversal. This is equivalent to the "tulip bins" for depthmapX's tulip analysis (1024 tulip bins = pi/1024 quantizationWidth). Only works for Segment ShapeGraphs | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
Value
Returns a list with:
- completed: Whether the analysis completed 
- newAttributes: The new attributes that were created during the process 
Examples
# Pointmap analysis (VGA)
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.5,
    fillX = 3.0,
    fillY = 6.0,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
oneToOneTraverse(
  pointMap,
  traversalType = TraversalType$Metric,
  fromX = 7.52,
  fromY = 6.02,
  toX = 5.78,
  toY = 2.96
)
# Segment analysis
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_segment_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "SegmentShapeGraph")
oneToOneTraverse(
  shapeGraph,
  traversalType = TraversalType$Topological,
  fromX = 1217.1,
  fromY = -1977.3,
  toX = 1017.8,
  toY = -1699.3
)
Colour Palettes from depthmapX
Description
Create n contiguous colours taken from depthmapX.
Usage
depthmap.classic.colour(n, rangeMin = 0, rangeMax = 1)
depthmap.axmanesque.colour(n, rangeMin = 0, rangeMax = 1)
depthmap.purpleorange.colour(n, rangeMin = 0, rangeMax = 1)
depthmap.bluered.colour(n, rangeMin = 0, rangeMax = 1)
depthmap.grayscale.colour(n, rangeMin = 0, rangeMax = 1)
depthmap.nicehsb.colour(n, rangeMin = 0, rangeMax = 1)
Arguments
| n | Number of colours to generate | 
| rangeMin | The min value of the range | 
| rangeMax | The max value of the range | 
Value
Returns a vector of colours.
Examples
depthmap.classic.colour(100, 0, 1)
depthmap.axmanesque.colour(100, 0, 1)
depthmap.purpleorange.colour(100, 0, 1)
depthmap.bluered.colour(100, 0, 1)
depthmap.grayscale.colour(100, 0, 1)
depthmap.nicehsb.colour(100, 0, 1)
plot a PointMap
Description
Calls a standard plot.stars, but flips the first argument around the x axis
Usage
## S3 method for class 'PointMap'
plot(x, ...)
Arguments
| x | object of class  | 
| ... | other parameters passed to  | 
Read MetaGraph
Description
Reads a metagraph into a bunch of ShapeMaps/ShapeGraphs/PointMaps
Usage
readMetaGraph(fileName)
Arguments
| fileName | The metagraph file | 
Value
A list of ShapeMaps, ShapeGraphs and PointMaps
Examples
fileName <- system.file(
    "extdata", "testdata", "barnsbury", "barnsburySmall.graph",
    package = "alcyon"
)
readMetaGraph(fileName)
Reduce an All-line Map to two types of fewest-line maps
Description
Reduce an All-line Map to two types of fewest-line maps
Usage
reduceToFewest(allLineMap)
Arguments
| allLineMap | An AllLineShapeGraph | 
Value
A list with two fewest-line axial ShapeGraphs
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
allLineMap <- makeAllLineMap(
  shapeMap,
  seedX = 3.01,
  seedY = 6.7
)
reduceToFewest(allLineMap)
Ref ID to index and vice-versa
Description
Converts a depthmapX "Ref" ID to the indices (x, y) of a cell, or the reverse
Usage
refIDtoIndex(refID)
indexToRefID(i, j)
Arguments
| refID | The Ref ID | 
| i | The x-axis index of the cell | 
| j | The y-axis index of the cell | 
Value
A pair of indices (x, y) or a Ref ID
Examples
idx <- refIDtoIndex(852645)
# outputs:
#    i   j
# 1 13 677
idx <- indexToRefID(13, 667)
# outputs:
# 852645
ShapeMap to sf Polygon map
Description
Convert a ShapeMap to an sf Polygon map
Usage
shapeMapToPolygonSf(shapeMap)
Arguments
| shapeMap | A ShapeMap | 
Value
A new sf Polygon map
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
isovistMap <- isovist(
  shapeMap,
  x = c(3.01, 1.3),
  y = c(6.70, 5.2),
  angle = 0.01,
  viewAngle = 3.14,
  FALSE
)
shapeMapToPolygonSf(isovistMap)
Conversion of shapegraph to graph data
Description
Creates data to be construct a graph, based on the connections and the x,y coordinates of the centroids of shapes in a shapegraph (axial, segment, convex). Specify weightColumn to assign weight to graph edges.
Usage
shapegraphToGraphData(shapeGraph, weightColumn = NA)
Arguments
| shapeGraph | A ShapeGraph | 
| weightColumn | Optional. The variable used to assign weight to graph edges | 
Details
If weightColumn is provided, edge connections weight is calculated by taking the average of the variable of the connected nodes.
Value
Returns a list with edges and vertices for constructing a graph.
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
shapegraphToGraphData(shapeGraph)
Unlink map lines at their crossing point
Description
Unlink map lines at their crossing point
Usage
unlinkAtCrossPoint(map, x, y, copyMap = TRUE)
Arguments
| map | A sala map | 
| x | X coordinate of the crossing point | 
| y | Y coordinate of the crossing point | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new map with linked lines
Unlink two Axial Lines (crosspoint)
Description
Unlink two crossing lines on an Axial ShapeGraph at the crossing point
Usage
## S4 method for signature 'AxialShapeGraph'
unlinkAtCrossPoint(map, x, y, copyMap = TRUE)
Arguments
| map | An Axial ShapeGraph | 
| x | X coordinate of the unlink crossing point | 
| y | Y coordinate of the unlink crossing point | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new Axial ShapeGraph with unlinked lines
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
unlinkAtCrossPoint(shapeGraph, 530925.0, 184119.0)
Unlink map points/lines as if selecting them using points
Description
Unlink map points/lines as if selecting them using points
Usage
unlinkCoords(map, fromX, fromY, toX, toY, copyMap = TRUE)
Arguments
| map | A sala map | 
| fromX | X coordinate of the origin point | 
| fromY | Y coordinate of the origin point | 
| toX | X coordinate of the target point | 
| toY | Y coordinate of the target point | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new map with unlinked points/lines
Unlink two Axial Lines (coordinates)
Description
Unlink two locations on an Axial ShapeGraph using the point coordinates
Usage
## S4 method for signature 'AxialShapeGraph'
unlinkCoords(map, fromX, fromY, toX, toY, copyMap = TRUE)
Arguments
| map | An Axial ShapeGraph | 
| fromX | X coordinate of the first unlink point | 
| fromY | Y coordinate of the first unlink point | 
| toX | X coordinate of the second unlink point | 
| toY | Y coordinate of the second unlink point | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new Axial ShapeGraph with unlinked lines
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
unlinkCoords(shapeGraph, 982.8, -1620.3, 1080.4, -1873.5)
Unlink two PointMap Cells (coordinates)
Description
Unlink two cells on a PointMap using the point coordinates
Usage
## S4 method for signature 'PointMap'
unlinkCoords(map, fromX, fromY, toX, toY, copyMap = TRUE)
Arguments
| map | A PointMap | 
| fromX | X coordinate of the first unlink point | 
| fromY | Y coordinate of the first unlink point | 
| toX | X coordinate of the second unlink point | 
| toY | Y coordinate of the second unlink point | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new PointMap with unlinked points
Examples
mifFile <- system.file(
    "extdata", "testdata", "gallery",
    "gallery_lines.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.04,
    fillX = 3.01,
    fillY = 6.7,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
pointMap <- linkCoords(pointMap, 1.74, 6.7, 5.05, 5.24)
pointMap <- unlinkCoords(pointMap, 1.74, 6.7, 5.05, 5.24)
Unlink map points/lines using their refs
Description
Unlink map points/lines using their refs
Usage
unlinkRefs(map, fromRef, toRef, copyMap = TRUE)
Arguments
| map | A sala map | 
| fromRef | The ref of the origin element | 
| toRef | The ref of the target element | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new map with unlinked points/lines
Unlink two Axial Lines (refs)
Description
Unlink two lines on an Axial ShapeGraph using their refs
Usage
## S4 method for signature 'AxialShapeGraph'
unlinkRefs(map, fromRef, toRef, copyMap = TRUE)
Arguments
| map | An Axial ShapeGraph | 
| fromRef | Ref of the first unlink line | 
| toRef | Ref of the second unlink line | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new Axial ShapeGraph with unlinked lines
Examples
mifFile <- system.file(
    "extdata", "testdata", "barnsbury",
    "barnsbury_small_axial_original.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeGraph <- as(sfMap, "AxialShapeGraph")
unlinkRefs(shapeGraph, 12L, 34L)
Unlink two PointMap Cells (refs)
Description
Unlink two cells on an PointMap using their refs
Usage
## S4 method for signature 'PointMap'
unlinkRefs(map, fromRef, toRef, copyMap = TRUE)
Arguments
| map | A PointMap | 
| fromRef | Ref of the first unlink line | 
| toRef | Ref of the second unlink line | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new PointMap with unlinked points
Examples
mifFile <- system.file(
    "extdata", "testdata", "gallery",
    "gallery_lines.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.04,
    fillX = 3.01,
    fillY = 6.7,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
pointMap <- linkRefs(pointMap, 1835056L, 7208971L)
pointMap <- unlinkRefs(pointMap, 1835056L, 7208971L)
Unmake the graph in a PointMap
Description
Unmake the graph in a PointMap
Usage
unmakeVGAGraph(pointMap, removeLinks = FALSE, copyMap = TRUE, verbose = FALSE)
Arguments
| pointMap | The input PointMap | 
| removeLinks | Also remove the links | 
| copyMap | Optional. Copy the internal sala map | 
| verbose | Optional. Show more information of the process. | 
Value
A new PointMap without the points graph
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  shapeMap <- as(sfMap[, vector()], "ShapeMap")
pointMap <- makeVGAPointMap(
  sfMap,
  gridSize = 0.5,
  fillX = 3.01,
  fillY = 6.7,
  maxVisibility = NA,
  boundaryGraph = FALSE,
  verbose = FALSE
)
unmakeVGAGraph(
  pointMap = pointMap,
  removeLinks = FALSE
)
Visibility Graph Analysis - isovist metrics
Description
Runs axial analysis to get the local metrics Control and Controllability
Usage
vgaIsovist(pointMap, boundaryMap, copyMap = TRUE)
Arguments
| pointMap | A PointMap | 
| boundaryMap | A ShapeMap of lines | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new PointMap with the results included
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.5,
    fillX = 3.0,
    fillY = 6.0,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
boundaryMap <- as(sfMap[, c()], "ShapeMap")
vgaIsovist(pointMap, boundaryMap)
Visibility Graph Analysis - Through Vision
Description
Runs Visibility Graph Analysis to get the Through Vision metric
Usage
vgaThroughVision(pointMap, copyMap = TRUE)
Arguments
| pointMap | A PointMap | 
| copyMap | Optional. Copy the internal sala map | 
Value
A new PointMap with the results included
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.5,
    fillX = 3.0,
    fillY = 6.0,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
vgaThroughVision(pointMap)
Visibility Graph Analysis - Visual local metrics
Description
Runs Visibility Graph Analysis to get visual local metrics
Usage
vgaVisualLocal(
  pointMap,
  nthreads = 1L,
  algorithm = VGALocalAlgorithm$Standard,
  copyMap = TRUE,
  gatesOnly = FALSE,
  progress = FALSE
)
Arguments
| pointMap | A PointMap | 
| nthreads | Optional. Number of threads to use (defaults to 1) | 
| algorithm | Optional. The algorithm to use. See ?VGALocalAlgorithm | 
| copyMap | Optional. Copy the internal sala map | 
| gatesOnly | Optional. Only keep the values at specific gates | 
| progress | Optional. Enable progress display | 
Value
A new PointMap with the results included
Examples
mifFile <- system.file(
    "extdata", "testdata", "simple",
    "simple_interior.mif",
    package = "alcyon"
  )
  sfMap <- st_read(mifFile,
    geometry_column = 1L, quiet = TRUE
  )
  pointMap <- makeVGAPointMap(
    sfMap,
    gridSize = 0.5,
    fillX = 3.0,
    fillY = 6.0,
    maxVisibility = NA,
    boundaryGraph = FALSE,
    verbose = FALSE
  )
vgaVisualLocal(pointMap, FALSE)