983 lines
31 KiB
Plaintext
983 lines
31 KiB
Plaintext
################################################################################
|
|
### Creating neTworks from imported OSM data (10 / 11)
|
|
################################################################################
|
|
### Description:
|
|
### - This script creates neTworks from imported OSM data.
|
|
### Please, see tu_shp_import.sh for further details.
|
|
###
|
|
### Preconditions:
|
|
### - activated necessary algebras
|
|
### - existing open database with successfully imported osm data
|
|
### - extStreetsRel-relation
|
|
### extStreetsRel: rel{geoData: sline, StreetId: int, name: string,
|
|
### ref: string, roadClass: string, OneWay: int,
|
|
### bridge: int, maxSpeed: int, tunnel: bool,
|
|
### layer: int, groupId: int}
|
|
### - NodesRel-relation
|
|
### NodesRel: rel{Node: point, NodeId: int}
|
|
### - extSectionsRel-relation
|
|
### extSectionsRel: rel{SectionId: int, Section: sline, StartNodeId: int,
|
|
### EndNodeId: int, StreetId: int, GroupId: int,
|
|
### SectionDist: real}
|
|
###
|
|
### Postconditions:
|
|
### - cityRoads-relation
|
|
### cityRoads: rel{Name: string, Road: int, Length: double, Geometry: line,
|
|
### Dual: bool, StartsSmaller: bool, RoadLevel: int}
|
|
### - cityJunctions-relation
|
|
### cityJunctions: rel{Road1: int, Pos1: double, Road2: int, Pos2: double,
|
|
### JunctionType: int}
|
|
### - city-neTwork
|
|
###
|
|
### Author:
|
|
### - Thomas Uchdorf, thomas.uchdorf(at)fernuni-hagen.de
|
|
################################################################################
|
|
|
|
# Calculating junctions between Four Sections belonging to Two Streets
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
#----->x<-----
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
let FourSecInZeroSecOut1111JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, EndNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,EndNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {c}
|
|
hashjoin [NodeId,EndNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {d}
|
|
hashjoin [NodeId,EndNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(1,2,2,1,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
#<-----x<-----
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
let ThreeSecInOneSecOut2111JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, StartNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,EndNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {c}
|
|
hashjoin [NodeId,EndNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {d}
|
|
hashjoin [NodeId,EndNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(2,2,2,1,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
#----->x<-----
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
let ThreeSecInOneSecOut1211JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, EndNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,StartNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {c}
|
|
hashjoin [NodeId,EndNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {d}
|
|
hashjoin [NodeId,EndNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(1,1,2,1,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
#----->x----->
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
let ThreeSecInOneSecOut1121JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, EndNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,EndNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {c}
|
|
hashjoin [NodeId,StartNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {d}
|
|
hashjoin [NodeId,EndNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(1,2,1,1,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
#----->x<-----
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
let ThreeSecInOneSecOut1112JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, EndNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,EndNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {c}
|
|
hashjoin [NodeId,EndNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {d}
|
|
hashjoin [NodeId,StartNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(1,2,2,2,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
#<-----x<-----
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
let TwoSecInTwoSecOut2211JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, StartNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,StartNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {c}
|
|
hashjoin [NodeId,EndNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {d}
|
|
hashjoin [NodeId,EndNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(2,1,2,1,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
#<-----x----->
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
let TwoSecInTwoSecOut2121JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, StartNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,EndNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {c}
|
|
hashjoin [NodeId,StartNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {d}
|
|
hashjoin [NodeId,EndNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(2,2,1,1,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
#<-----x<-----
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
let TwoSecInTwoSecOut2112JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, StartNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,EndNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {c}
|
|
hashjoin [NodeId,EndNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {d}
|
|
hashjoin [NodeId,StartNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(2,2,2,2,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
#----->x----->
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
let TwoSecInTwoSecOut1221JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, EndNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,StartNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {c}
|
|
hashjoin [NodeId,StartNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {d}
|
|
hashjoin [NodeId,EndNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(1,1,1,1,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
#----->x<-----
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
let TwoSecInTwoSecOut1212JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, EndNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,StartNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {c}
|
|
hashjoin [NodeId,EndNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {d}
|
|
hashjoin [NodeId,StartNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(1,1,2,2,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
#----->x----->
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
let TwoSecInTwoSecOut1122JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, EndNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,EndNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {c}
|
|
hashjoin [NodeId,StartNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {d}
|
|
hashjoin [NodeId,StartNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(1,2,1,2,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
#<-----x----->
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
let OneSecInThreeSecOut2221JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, StartNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,StartNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {c}
|
|
hashjoin [NodeId,StartNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {d}
|
|
hashjoin [NodeId,EndNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(2,1,1,1,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
#<-----x<-----
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
let OneSecInThreeSecOut2212JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, StartNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,StartNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,OneWay] {c}
|
|
hashjoin [NodeId,EndNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {d}
|
|
hashjoin [NodeId,StartNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(2,1,2,2,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
#<-----x----->
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
let OneSecInThreeSecOut2122JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, StartNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,EndNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {c}
|
|
hashjoin [NodeId,StartNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {d}
|
|
hashjoin [NodeId,StartNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType: getconnectivitycode(2,2,1,2,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
#----->x----->
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
let OneSecInThreeSecOut1222JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,EndNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, EndNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,StartNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {c}
|
|
hashjoin [NodeId,StartNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {d}
|
|
hashjoin [NodeId,StartNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(1,1,1,2,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# ^
|
|
# |
|
|
# |
|
|
# |
|
|
#<-----x----->
|
|
# |
|
|
# |
|
|
# |
|
|
# v
|
|
let ZeroSecInFourSecOut2222JuncTmp =
|
|
((((NodesRel feed
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {a}
|
|
hashjoin [NodeId, StartNodeId_a,99997])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {b}
|
|
hashjoin [NodeId,StartNodeId_b,99997]
|
|
filter [.SectionId_a < .SectionId_b])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {c}
|
|
hashjoin [NodeId,StartNodeId_c,99997]
|
|
filter [.SectionId_a < .SectionId_c])
|
|
FullSectionsView feed
|
|
sortby [SectionId]
|
|
project [StreetId,SectionId,StartNodeId,StreetData,SectionData,
|
|
OneWay] {d}
|
|
hashjoin [NodeId,StartNodeId_d,99997]
|
|
filter [.SectionId_b < .SectionId_d])
|
|
projectextEnd [;
|
|
Road1: .StreetId_a,
|
|
Pos1: atpoint(.StreetData_a,.Node,TRUE),
|
|
# * size(.StreetData_a,create_geoid("WGS1984")) / size(.StreetData_a),
|
|
Road2: .StreetId_b,
|
|
Pos2: atpoint(.StreetData_b,.Node,TRUE),
|
|
# * size(.StreetData_b,create_geoid("WGS1984")) / size(.StreetData_b),
|
|
Road3: .StreetId_c,
|
|
Road4: .StreetId_d,
|
|
JunctionType:
|
|
getconnectivitycode(2,1,1,2,
|
|
.OneWay_a = 1,.OneWay_b = 1,.OneWay_c = 1,.OneWay_d = 1),
|
|
Sec1: .SectionId_a,
|
|
Sec2: .SectionId_b,
|
|
Sec3: .SectionId_c,
|
|
Sec4: .SectionId_d,
|
|
Node: .Node,
|
|
SecData1: .SectionData_a,
|
|
SecData2: .SectionData_b,
|
|
SecData3: .SectionData_c,
|
|
SecData4: .SectionData_d]
|
|
filter [(.Road1 = .Road3) and (.Road2 = .Road4) and not(.Road1 = .Road2)]
|
|
consume;
|
|
|
|
# Creating the union
|
|
let FourSecJuncBtwTwoSts =
|
|
((((((((((((((FourSecInZeroSecOut1111JuncTmp feed
|
|
ThreeSecInOneSecOut2111JuncTmp feed
|
|
concat)
|
|
ThreeSecInOneSecOut1211JuncTmp feed
|
|
concat)
|
|
ThreeSecInOneSecOut1121JuncTmp feed
|
|
concat)
|
|
ThreeSecInOneSecOut1112JuncTmp feed
|
|
concat)
|
|
TwoSecInTwoSecOut2211JuncTmp feed
|
|
concat)
|
|
TwoSecInTwoSecOut2121JuncTmp feed
|
|
concat)
|
|
TwoSecInTwoSecOut2112JuncTmp feed
|
|
concat)
|
|
TwoSecInTwoSecOut1221JuncTmp feed
|
|
concat)
|
|
TwoSecInTwoSecOut1212JuncTmp feed
|
|
concat)
|
|
TwoSecInTwoSecOut1122JuncTmp feed
|
|
concat)
|
|
OneSecInThreeSecOut2221JuncTmp feed
|
|
concat)
|
|
OneSecInThreeSecOut2212JuncTmp feed
|
|
concat)
|
|
OneSecInThreeSecOut2122JuncTmp feed
|
|
concat)
|
|
OneSecInThreeSecOut1222JuncTmp feed
|
|
concat)
|
|
ZeroSecInFourSecOut2222JuncTmp feed
|
|
concat
|
|
consume;
|
|
|