Input : adjacency list flat file, : facilities flat file , : network radius |
(1) Initialize the list finishedEdges |
(2) for each facility in flat file do |
(3) startN = getNode(.startId) |
(4) endN = getNode(.endId) |
(5) edge = |
(6) finishedEdges.add(edge) |
(7) create a new node fN at facility location |
(8) if (.offset ≥ ) then |
(9) create new node nN between fN and startN, dist(fN, nN) = |
(10) newS = new segment(fN, nN, .weight, .Id) |
(11) insertSegment(edge, newS) |
(12) else |
(13) newS = new segment(fN, startN, .weight, .Id) |
(14) insertSegment(edge, newS) |
(15) recursiveGenerateSegs(startN, endN, − .offset, ) |
(16) end if |
(17) endOff = edge.length − .offset |
(18) if (endOff ≥ ) then |
(19) create new node nN between fN and endN, dist(fN, nN) = endOff |
(20) newS = new segment(fN, nN, .weight, .Id) |
(21) insertSegment(edge, newS) |
(22) else |
(23) newS = new segment(fN, endN, .weight, .Id) |
(24) insertSegment(edge, newS) |
(25) recursiveGenerateSegs(endN, startN, − endOff, ) |
(26) end if |
(27) finishedEdges.clear() |
(28) end for |