##################################################################### # 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;