ENIF Plot # Enif plot configuration generated on Fri Oct 29 11:32:40 2004 # File: /u/emme2/enif/conf/aggdeslin.e2p # # String Name: name of plot configuration (tr,subst) Name = Display aggregated matrix expression # Text Description: description of plot configuration (tr,subst) Description = \

Display of aggregated desire lines - a proof-of-concept type implementation

\ This plot configuration tries to provide a "proof of concept" implementation of a plot which automatically aggregates a a matrix expression according to a zone group ensemble and displays the group-to-group demand as desire lines.\

\ The groups are represented (simplistically) as either the first or the last zone in the group\ of the representative ensemble. By default, the representative ensemble is the same\ as the aggregation ensemble. If using explicit representatives, make sure that each\ group of the representative ensemble contains only one zone which belongs to the corresponding group of the aggregation ensemble. All non-representative zones must be in a group for which the correponding aggregation group is empty.\

\ Note that if any change is made in the ensembles or the first/last parameter. it is necessary to reload the network in order to get the correct representation on screen.\

\ Note that the highest used zone group number in the ensembles used for aggregation and representation must not exceed the square root of the number of generic elements configured in your preference file. If necessary, adjust the number of generic network element in the network tab of the preferences.\

\ The implementation is essentially based on the following ideas:\

\ 1) A local configurable attribute lca_repzone which computes the representative zone of a group to be either the first or last zone in the group, using the "first" or "last" aggregation operators.\

\ 2) A local configurable attribute lca_aggvals which is aggregating the matrix expression to an array of generic elements which represent the group-to-group matrix.\

\ 3) The matrix value mapper then accesses the aggregated values using the Pgen() intrinsic pointer function and displays them for those zones only which are the representatives of their respective zone groups\ \

\ This configuration is just a proof of concept which shows the mechanisms that can be used to implement matrix aggregation in Enif plots. It has not been tested - so any use is at your own risk!\

\ Heinz Spiess, 2004-10-29\ # Flags Flags: plot configuration flags Flags = 0x2 # String Caption: caption that appears on window bar (tr,subst) Caption = Display aggregated matrix expression # Box FullViewAdjust: viewport relative box for mapping full view bounding box FullViewAdjust = 0;0;0;0 # String Active: name of currently active mapper Active = Aggregate matrix [Configurable attribute list] # String Name: name of attribute configurations (tr) Name = q # String IncomingGroups: regular expression to filter incoming group signals IncomingGroups = . # String OutgoingGroups: regular expression to filter outgoing group signals OutgoingGroups = . [Configurable attribute] # String Name: configurable attribute name Name = lca_maxgroup # Text Description: description of configurable attribute (tr) Description = # Flags Flags: bit pattern containing object flags Flags = 0x0 # String ExpressionType: network element type of expression ExpressionType = nodes # Expression Expression: expression for computing attribute values (tr,node,string) Expression = int(sqrt(number(subst("%%"))-2)) # Selector Selector: selector used to compute attribute values (tr,node,unbuffered) Selector = # String AggregationPointer: pointer from expression to result element AggregationPointer = Pconst # String AggregationOperator: aggregation operator for computing result value AggregationOperator = max # Integer Decimals: number of decimals for default formatting Decimals = 7 # Float DefaultValue: default value DefaultValue = 0 # String DefaultString: default string used to display instead of default value DefaultString = [Configurable attribute] # String Name: configurable attribute name Name = lca_aggens # Text Description: description of configurable attribute (tr) Description = # Flags Flags: bit pattern containing object flags Flags = 0x1 # String ExpressionType: network element type of expression ExpressionType = zones # Expression Expression: expression for computing attribute values (tr,zone,string) Expression : /ZoneGroupEnsemble Expression = ga # Selector Selector: selector used to compute attribute values (tr,zone,unbuffered) Selector = # String AggregationPointer: pointer from expression to result element AggregationPointer = # String AggregationOperator: aggregation operator for computing result value AggregationOperator = # Integer Decimals: number of decimals for default formatting Decimals = 7 # Float DefaultValue: default value DefaultValue = 0 # String DefaultString: default string used to display instead of default value DefaultString = [Configurable attribute] # String Name: configurable attribute name Name = lca_repens # Text Description: description of configurable attribute (tr) Description = ensemble containing zone group representatives # Flags Flags: bit pattern containing object flags Flags = 0x1 # String ExpressionType: network element type of expression ExpressionType = zones # Expression Expression: expression for computing attribute values (tr,zone,string) Expression : @RepresentativeEnsemble Expression = ga # Selector Selector: selector used to compute attribute values (tr,zone,unbuffered) Selector = # String AggregationPointer: pointer from expression to result element AggregationPointer = # String AggregationOperator: aggregation operator for computing result value AggregationOperator = # Integer Decimals: number of decimals for default formatting Decimals = 7 # Float DefaultValue: default value DefaultValue = 0 # String DefaultString: default string used to display instead of default value DefaultString = [Configurable attribute] # String Name: configurable attribute name Name = lca_repzone # Text Description: description of configurable attribute (tr) Description = representative zone of group # String ExpressionType: network element type of expression ExpressionType = zones # Expression Expression: expression for computing attribute values (tr,zone,string,max. 2 values) Expression : //@Recompute Expression = i,lca_repens+1 # String AggregationPointer: pointer from expression to result element AggregationPointer = Pgen # String AggregationOperator: aggregation operator for computing result value AggregationOperator : @Representative/Representative AggregationOperator[] = last AggregationOperator[] = first AggregationOperator[] = last [Configurable attribute] # String Name: configurable attribute name Name = lca_aggvals # Flags Flags: bit pattern containing object flags Flags = 0x1 # String ExpressionType: network element type of expression ExpressionType = O-D pairs # Expression Expression: expression for computing attribute values (tr,o-d,string,max. 2 values) Expression : /AggregationExpression/UpdateAggregation Expression = mf1,Pp->Pi->(ga)*lca_maxgroup+Pq->Pi->(ga)+1 # String AggregationPointer: pointer from expression to result element AggregationPointer = Pgen # String AggregationOperator: aggregation operator for computing result value AggregationOperator = + [Background] [Link base] # Flags Flags: bit pattern containing mapper flags Flags = 0xbc00000 # Float Offset: link offset (pixels) Offset = 0 # Selector LinkSelector: expression for link selection [,link iterator] (tr,link) LinkSelector = [no connectors] not(isConnector) [Node box] # Flags Flags: bit pattern containing mapper flags Flags = 0xbc00000 # Float NodeBoxWidth: width of node box in pixels NodeBoxWidth = 6 # Float NodeBoxHeight: height of node box in pixels NodeBoxHeight = 6 # Selector NodeSelector: expression for node selection [,node iterator] (tr,node) NodeSelector = isZone # Bool NodeBoxes: display rectangular node boxes NodeBoxes = 1 # Bool NodeNumbers: display node numbers in node box NodeNumbers = 0 # Float YOffset: vertical offset of node box YOffset = 0 # Stylus Stylus: stylus for node box outline, fill and text properties Stylus : Stylus Stylus[] = 0x20000000 0x01ff0000 0x00000000 0x20 Stylus[] = 0x20000000 0x0100ff00 0x00000000 0x0b Stylus[] = 0x20000000 0x010000ff 0x00000000 0x08 Stylus[] = 0x20000000 0x0100ffff 0x00000000 0x3e Stylus[] = 0x20000000 0x01ff00ff 0x00000000 0x16 Stylus[] = 0x20000000 0x01ffff00 0x00000000 0x15 Stylus[] = 0x20000000 0x01ff7f00 0x00000000 0x11 Stylus[] = 0x20000000 0x017f8000 0x00000000 0x1b Stylus[] = 0x20000000 0x01008000 0x00000000 0x1e Stylus[] = 0x20000000 0x01000080 0x00000000 0x16 Stylus[] = 0x20000000 0x018c00d3 0x00000000 0x0a Stylus[] = 0x20000000 0x01ff008c 0x00000000 0x18 Stylus[] = 0x20000000 0x01545454 0x00000000 0x12 Stylus[] = 0x20000000 0x01ababab 0x00000000 0x16 # Expression StylusIndex: node expression for stylus index (tr,node) StylusIndex : /ZoneGroupEnsemble StylusIndex = ga # Expression NodeValue: expression for node value (tr,node,string,max. 6 values) NodeValue = [Matrix value] # Bool ShowValueStrings: display matrix values numerically on o-d bars ShowValueStrings = 1 # Bool Intrazonals: display intrazonal values as circles Intrazonals = 1 # Float HeadOffset: arrowhead offset (pixels) HeadOffset = -0.01 # Float TailOffset: arrow tail offset (pixels) TailOffset = 14 # Float Scale: value scale for proportional bars (units/pixel) Scale : Scale/Scale/AutoScale Scale = 120 # Stylus Stylus: stylus for bar outline, fill and text properties Stylus : Stylus Stylus[] = 0x20000000 0x01ff0000 0x00000000 0x20 Stylus[] = 0x20000000 0x0100ff00 0x00000000 0x0b Stylus[] = 0x20000000 0x010000ff 0x00000000 0x08 Stylus[] = 0x20000000 0x0100ffff 0x00000000 0x3e Stylus[] = 0x20000000 0x01ff00ff 0x00000000 0x16 Stylus[] = 0x20000000 0x01ffff00 0x00000000 0x15 Stylus[] = 0x20000000 0x01ff7f00 0x00000000 0x11 Stylus[] = 0x20000000 0x017f8000 0x00000000 0x1b Stylus[] = 0x20000000 0x01008000 0x00000000 0x1e Stylus[] = 0x20000000 0x01000080 0x00000000 0x16 Stylus[] = 0x20000000 0x018c00d3 0x00000000 0x0a Stylus[] = 0x20000000 0x01ff008c 0x00000000 0x18 Stylus[] = 0x20000000 0x01545454 0x00000000 0x12 Stylus[] = 0x20000000 0x01ababab 0x00000000 0x16 # Float TextSize: text size for matrix values TextSize = 12 # Expression MatrixValue: expression for matrix value (tr,o-d) MatrixValue = Pgen(Pp->Pi->lca_aggens*lca_maxgroup+Pq->Pi->lca_aggens+1)->lca_aggvals # Selector OriginSelector: expression for origin selection [,origin iterator] (tr,orig.) OriginSelector = p==Pgen(Pi->lca_aggens+1)->lca_repzone,-p # Selector DestinationSelector: expression for destination selection [,destination iterator] (tr,dest.) DestinationSelector = q==Pgen(Pi->lca_aggens+1)->lca_repzone,-q # Expression StylusIndex: Expression for stylus index (tr,o-d) StylusIndex = Pq->Pi->lca_aggens [Parameter conversion] # Flags Flags: bit pattern containing mapper flags Flags = 0xbfb0000 # String SA: string parameter SA (subst) SA : /MatrixToAggregate SA = mf1 # String SB: string parameter SB (subst) SB : /ZoneGroupEnsemble SB = ga # String SC: string parameter SC (subst) SC : /Representative SC[] = last SC[] = first SC[] = last # Expression Expression: expression for parameter conversion (tr,string,max. 12 values) Expression = SA+",Pp->Pi->("+SB+")*lca_maxgroup+Pq->Pi->("+SB+")+1" # String SR: string result SR : AggregationExpression SR = mf1,Pp->Pi->(ga)*lca_maxgroup+Pq->Pi->(ga)+1 # Bool SingleShotTimer: if set, timer stops after one signal SingleShotTimer = 1 # Float Timer: timer interval in seconds (0=inactive) Timer : //Representative Timer = 0 # Click TimerSignal: parameter activated by timer signal TimerSignal : UpdateAggregation/ [Configurable control] # String Name: mapper name that appears on mapper control tab (tr,subst) Name = Aggregate matrix # String Layout: layout parameters (tr) Layout[] = Expression0;Expression;O-D value:;matrix or OD expression to be aggregated and displayed;0;0;4;4;O-D pairs;1;0 Layout[] = String0;String combo;Representative:;zone in group which graphically represents the group (reload network to take effect);3;3;1;1;; Layout[] = Float0;Scale;Scale:;Scale for aggregated desire lines;0;0;1;1;;;1 Layout[] = Expression1;Expression;Aggr. ensemble:;Zone group ensemble used for aggregation;2;2;4;4;zones;1;0 Layout[] = Expression2;Expression;Repr. ensemble:;Ensemble containing representative zones (def. = aggr. ensemble);3;3;4;4;zones;1;0 Layout[] = Bool0;Checkbox;When changing any parameters below you need to reload the network!;;2;2;0;1;; Layout[] = Stylus0;Stylus;Stylus:;;1;1;1;1;; # Bool Bool0 Bool0 = 1 # Float Float0: Scale for aggregated desire lines Float0 : Scale Float0 = 120 # String String0: zone in group which graphically represents the group (reload network to take effect) String0 : (0x20) Representative/ String0[] = last String0[] = first String0[] = last # String String1: string parameter String1 String1 : ZoneGroupEnsemble String1 = ga # Expression Expression0: matrix or OD expression to be aggregated and displayed (tr,o-d) Expression0 : MatrixToAggregate Expression0 = mf1 # Expression Expression1: Zone group ensemble used for aggregation (tr,zone) Expression1 : ZoneGroupEnsemble Expression1 = ga # Expression Expression2: Ensemble containing representative zones (def. = aggr. ensemble) (tr,zone) Expression2 : @RepresentativeEnsemble/ZoneGroupEnsemble Expression2 = ga # Stylus Stylus0 Stylus0 : Stylus Stylus0[] = 0x20000000 0x01ff0000 0x00000000 0x20 Stylus0[] = 0x20000000 0x0100ff00 0x00000000 0x0b Stylus0[] = 0x20000000 0x010000ff 0x00000000 0x08 Stylus0[] = 0x20000000 0x0100ffff 0x00000000 0x3e Stylus0[] = 0x20000000 0x01ff00ff 0x00000000 0x16 Stylus0[] = 0x20000000 0x01ffff00 0x00000000 0x15 Stylus0[] = 0x20000000 0x01ff7f00 0x00000000 0x11 Stylus0[] = 0x20000000 0x017f8000 0x00000000 0x1b Stylus0[] = 0x20000000 0x01008000 0x00000000 0x1e Stylus0[] = 0x20000000 0x01000080 0x00000000 0x16 Stylus0[] = 0x20000000 0x018c00d3 0x00000000 0x0a Stylus0[] = 0x20000000 0x01ff008c 0x00000000 0x18 Stylus0[] = 0x20000000 0x01545454 0x00000000 0x12 Stylus0[] = 0x20000000 0x01ababab 0x00000000 0x16 # Stylus Stylus1: stylus parameter Stylus1 Stylus1 = 0x00000000 0x00000000 0x00000000 0x00 # Stylus Stylus2: stylus parameter Stylus2 Stylus2 = 0x00000000 0x00000000 0x00000000 0x00 # Stylus Stylus3: stylus parameter Stylus3 Stylus3 = 0x00000000 0x00000000 0x00000000 0x00 # Stylus Stylus4: stylus parameter Stylus4 Stylus4 = 0x00000000 0x00000000 0x00000000 0x00 # Box BBox0: bounding box parameter BBox0 BBox0 = 1;1;0;0 # Box BBox1: bounding box parameter BBox1 BBox1 = 1;1;0;0 # Box BBox2: bounding box parameter BBox2 BBox2 = 1;1;0;0 # Box BBox3: bounding box parameter BBox3 BBox3 = 1;1;0;0 # Box BBox4: bounding box parameter BBox4 BBox4 = 1;1;0;0 # Click UpdatingFloat0: aux. parameter to catch update signal from Float0 UpdatingFloat0 : AutoScale/