38 lines
1.4 KiB
Plaintext
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;
|