Files
secondo/Algebras/Traffic/SecondoScripts/Traffic_CreateNetworkObjects.SEC
2026-01-23 17:03:45 +08:00

38 lines
1.4 KiB
Plaintext

#####################################################################
# Translate BerlinMOD Data to network representation
#####################################################################
open database berlinmod;
######################################################################
# Build a network from street data.
######################################################################
let B_ROUTES =
streets feed projectextendstream[; geoData: .geoData polylines[TRUE]]
addcounter[id,1]
projectextend [id; lengt : size(.geoData), geometry: fromline(.geoData), dual: TRUE, startSmaller: TRUE]
consume;
let B_JUNCTIONS =
B_ROUTES feed {r1}
B_ROUTES feed {r2}
symmjoin [(.id_r1 < ..id_r2) and (.geometry_r1 intersects ..geometry_r2)]
projectextendstream[id_r1, geometry_r1, id_r2, geometry_r2; CROSSING_POINT: components(crossings(.geometry_r1, .geometry_r2))]
projectextend[; r1id: .id_r1, r1meas: atpoint(.geometry_r1, .CROSSING_POINT, TRUE), r2id: .id_r2, r2meas: atpoint(.geometry_r2, .CROSSING_POINT, TRUE), cc: 65535]
consume;
let B_NETWORK = thenetwork(1, B_ROUTES, B_JUNCTIONS);
#########################################################
#
# translate relation values in network representation
#
#########################################################
let dataSNcar = dataScar feed
projectextend[Licence, Model, Type; Trip: mpoint2mgpoint(B_NETWORK, .Trip)]
consume;
close database;