1. Relation SedentalerStr 1.1 Erzeugung der Relation SedentalerStr SedentalerStr basiert auf Relation Ways (erstellt durch "OrderedRelationGraphFromFullOSMImport-D.SEC"), gefiltert nach WayTagValue "Sedentaler Strasse" und WayTagKey "highway". Erzeugung der Relationen durch: let SedentalerWays = Ways feed filter[.WayInfo afeed filter[.WayTagValue = "Sedentaler Straße"] count > 0] consume; let SedentalerStr = SedentalerWays feed filter[.WayInfo afeed filter[.WayTagKey = "highway"] count > 0] consume 1.2 Aufbau der Relation SedentalerStr Ist eine Relation mit Aufbau: (rel(tuple ((WayId longint) (NodeList (arel (tuple ((NodeId longint) (Pos point) (NodeIdNew int) (NodeCounter int) (NodeRef longint))))) (Curve line) (WayIdInTag longint) (WayInfo (arel (tuple ((WayTagKey text) (WayTagValue text)))))) )) Übersicht: Die Relation besteht aus Tupeln: (WayId NodeListARel Curve WayIdInTag WayInfoARel) wobei NodeListARel und WayInfoARel eingebettete Relationen bzw. Tupel sind mit: - NodeList besteht aus Tupeln: (NodeId Pos NodeIdNew NodeCounter NodeRef) - WayInfo besteht aus Tupeln: (WayTagKey WayTagValue) longint [NodeList] longint point int int longint line longint [WayInfo] text text ********** 2. Weitere Relationen Weitere Relationen, die durch das Script "OrderedRelationGraphFromFullOSMImport-D.SEC" erstellt wurden: - CityNodesNew (rel(tuple ((NodeId longint) (Pos point) (NodeIdNew int)))) - Roads (wie Ways, gefiltert nach WayTagKey "highway") (rel (tuple ((WayId longint) (NodeList (arel (tuple ((NodeId longint) (Pos point) (NodeIdNew int) (NodeCounter int) (NodeRef longint))))) (Curve line) (WayIdInTag longint) (WayInfo (arel (tuple ((WayTagKey text) (WayTagValue text)))))) )) - Nodes (rel (tuple ((WayId longint) (NodeCounter int) (NodeIdNew int) (Pos point)))) - EdgesUp (rel (tuple ((WayId longint) (Source int) (Target int) (SourcePos point) (TargetPos point) (SourceNodeCounter int) (TargetNodeCounter int) (Curve sline) (RoadName text) (RoadType text)))) - EdgesDown (rel (tuple ((WayId longint) (Source int) (Target int) (SourcePos point) (TargetPos point) (SourceNodeCounter int) (TargetNodeCounter int) (Curve sline) (RoadName text) (RoadType text)))) - Edges (rel (tuple ((Source int) (Target int) (SourcePos point) (TargetPos point) (SourceNodeCounter int) (TargetNodeCounter int) (Curve sline) (RoadName text) (RoadType text) (WayId longint)))) - EdgeIndex (rel (tuple ((Source int) (Target int) (Curve sline) (Box rect)))) 3. RTrees Ebenfalls durch das Script "OrderedRelatio WayId : 254881822 NodeList : NodeId : 240181037 Pos : point: (6.96655,51.2075) NodeIdNew : 7298053 NodeCounter : 0 NodeRef : 240181037 NodeId : 2606702642 Pos : point: (6.96702,51.2075) NodeIdNew : 7298064 NodeCounter : 1 NodeRef : 2606702642 NodeId : 3787358578 Pos : point: (6.96781,51.2075) NodeIdNew : 7298913 NodeCounter : 2 NodeRef : 3787358578 NodeId : 240147936 Pos : point: (6.96804,51.2075) NodeIdNew : 7298915 NodeCounter : 3 NodeRef : 240147936 Curve : Generic display function used! Type : line Value: ( (6.9665451 51.2074576 6.9670241 51.2074876) (6.9670241 51.2074876 6.9678133 51.2074928) (6.9678133 51.2074928 6.9680353 51.2074943)) WayIdInTag : 254881822 WayInfo : WayTagKey : name WayTagValue : Sedentaler Straße WayTagKey : lanes WayTagValue : 3 WayTagKey : oneway WayTagValue : yes WayTagKey : source WayTagValue : survey WayTagKey : highway WayTagValue : tertiary WayTagKey : maxspeed WayTagValue : 50 WayTagKey : placement WayTagValue : left_of:3 WayTagKey : turn:lanes WayTagValue : left|through|right WayTagKey : postal_code WayTagValue : 40699 WayTagKey : source:lanes WayTagValue : Bing nGraphFromFullOSMImport-D.SEC" erstellt: - Ways_Curve_rtree ((rtree (tuple ((Box rect))) rect FALSE)) - Ways_WayTag ((rtree (tuple ((Box rect))) rect FALSE)) ******************** Beispiel für einen Straßenabschnitt: query SedentalerStr feed filter [.WayId = 254881822] consume WayId : 254881822 NodeList : NodeId : 240181037 Pos : point: (6.96655,51.2075) NodeIdNew : 7298053 NodeCounter : 0 NodeRef : 240181037 NodeId : 2606702642 Pos : point: (6.96702,51.2075) NodeIdNew : 7298064 NodeCounter : 1 NodeRef : 2606702642 NodeId : 3787358578 Pos : point: (6.96781,51.2075) NodeIdNew : 7298913 NodeCounter : 2 NodeRef : 3787358578 NodeId : 240147936 Pos : point: (6.96804,51.2075) NodeIdNew : 7298915 NodeCounter : 3 NodeRef : 240147936 Curve : Generic display function used! Type : line Value: ( (6.9665451 51.2074576 6.9670241 51.2074876) (6.9670241 51.2074876 6.9678133 51.2074928) (6.9678133 51.2074928 6.9680353 51.2074943)) WayIdInTag : 254881822 WayInfo : WayTagKey : name WayTagValue : Sedentaler Straße WayTagKey : lanes WayTagValue : 3 WayTagKey : oneway WayTagValue : yes WayTagKey : source WayTagValue : survey WayTagKey : highway WayTagValue : tertiary WayTagKey : maxspeed WayTagValue : 50 WayTagKey : placement WayTagValue : left_of:3 WayTagKey : turn:lanes WayTagValue : left|through|right WayTagKey : postal_code WayTagValue : 40699 WayTagKey : source:lanes WayTagValue : Bing **************** Anwendung von operator "line2region" aus "SpatialAlgebra": 1. Erstelle line (geschlossene Linie) let SedenDreieck = [const line value ((6.9665451 51.2074576 6.9670241 51.2074876) (6.9670241 51.2074876 6.9678133 51.2074928) (6.9678133 51.2074928 6.9680353 51.2074943) (6.9680353 51.2074943 6.9665451 51.2074576))] 2. Erstelle region let s3region = SedenDreieck line2region 3. Query region query s3region Type : region Value: ( ( ( (6.9665451 51.2074576) (6.9680353 51.2074944) (6.9678133 51.2074928) (6.9670241 51.2074876)))) *************** WayIds (auf Sedentaler Strasse) 254881822 375343324 375363885 375363886 Filter for two wayIds: query SedentalerStr feed filter[(.WayId = 254881822) or (.WayId = 375343324)] consume *************** Half segment 0: (6.9665451, 51.2074576) - (6.9670241, 51.2074876) (dominant point:(6.96654510, 51.20745760) (6.9665451 51.2074576 6.9670241 51.2074876) (6.9670241 51.2074876 6.9678133 51.2074928) (6.9678133 51.2074928 6.9680353 51.2074943))