A helpful guide to navigate UW's bridges and tunnels! Just enter a start and end location and it will calculate the shortest possible indoor route for you.
Internally, the list of buildings and the paths connecting them are stored in GeoJSON format in the web/src/geojson
folder.
To represent a certain building and floor, we define the BuildingFloor
type as:
type BuildingFloor = {
buildingCode: string,
floor: string
}
The properties
property for each feature is described as follows:
This geoJSON file contains only LineString
and Point
features. It represents all possible connections between BuildingFloor
s and will be converted into a Graph object on which Dijkstra's Algorithm is run.
type
(required): One ofhallway
,bridge
,tunnel
orwalkway
.
hallway
must have the same startstart
andend
location, whilewalkway
must havestart
andend
equal to{ buildingCode: "OUT", floor: "0" }
start
(required): The starting location, aBuildingFloor
end
(required): The ending location, aBuildingFloor
Must be a Point
feature.
type
(required):stairs
connections
(required): An array of objects of the form
{
buildingCode: string,
floor: string,
level: number
}
Note that the level
property represents the relative height of a floor (can be an integer or end with .5
). For instance, going from a floor with level 1.5
to a floor with level 4
means going up by 4 - 1.5 = 2.5
floors.
Must be a Point
feature.
Used to represent two adjacent buildings connected by a door. Has type: "door"
and start
and end
representing the connected BuildingFloor
s.
Must be a Point
feature.
Used to represent two adjacent buildings connected without a door (essentially the same building), such as E7/E5. Has type: "open"
and start
and end
representing the connected BuildingFloor
s.
This geoJSON file only contains Point
features, where each point maps a building and (some, but not necessarily all of) its floors to a coordinate mentioned in paths.json
, allowing the starting and ending point to be placed somewhere on the graph.
type
(required):building
building
(required): An object of the form
{
buildingCode: string,
floors: string[]
}