/*makeroutes.aml - make SBRB and LCTY routesystems
for the network cover
/* from placenames cover
/*
/* Rules: SBRB routes overlap by %sbrboverlap% percentage
(see args)
/* LCTY routes have max impedance %lctyradius%
in map units
/*
/* Bruce Harold, Eagle Technology, New Zealand.
/* bruce_harold@eagle.co.nz
/*
&args netcover placecover sbrboverlap lctyradius
&if [null %netcover%] or [null %placecover%]
~
or [null %sbrboverlap%] or [null %lctyradius%] &then
&return Usage: &r makeroutes <netcover>
<placecover> <sbrboverlap> <lctyradius>
&if ^ [exists %netcover% -line] or ^ [exists
%placecover% -point] ~
or [type %sbrboverlap%] > 0 or [type %lctyradius%]
> 0 &then
&return Usage: &r makeroutes <netcover>
<placecover> <lctyradius>
&if %:program% ne ARC &then &return Must
be in Arc:
/*
near %placecover% %netcover% node
/*
&if ^ [iteminfo %placecover%.pat -info %netcover%-id
-exists] &then
additem %placecover%.pat %placecover%.pat %netcover%-id
4 5 b
/*
/*
/*Make the initial routes for each suburb, no overlap
yet...
arcplot
relate add
p2n,%netcover%.nat,info,%netcover%#,%netcover%#,link,ro
~
calculate %placecover% point %netcover%-id = p2n//%netcover%-id
&call droprel
netcover %netcover% sbrb init
reselect %placecover%.pat info type = 'SBRB'
centers %placecover%.pat %netcover%-id
impedance length length
allocate centers out connected
clearselect
arc additem %netcover%.ratsbrb %netcover%.ratsbrb
name 36 36 c
arc indexitem %netcover%.secsbrb arclink#
relate add
r2pat,%placecover%.pat,info,sbrb-id,%netcover%-id,linear,ro
~
moveitem %netcover% route.sbrb r2pat//name to name
/*
/*
/*Expand each route by %sbrboverlap% percent of terminal
cumimpedance.
/*Given 20% overlap a route edge arc with terminal
measure 1000 will expand
/*by 200, another part of the same route with terminal
measure 2000 will
/*expand by 400. This is like growing fur on each
route, hence the RAT name...
infofile %netcover%.ratsbrb info sbrbroutes sbrb#
sbrb-id init
quit
alteritem sbrbroutes sbrb-id %netcover%-id /*see
alteritem.aml
arcplot
cursor s declare sbrbroutes info ro
cursor s open
&do &while %:s.aml$next%
&call addfur /*makes routesystem FUR on skin
of route %:s.sbrb-id%
calculate %netcover%.secfur info routelink# = %:s.sbrb#%
infofile %netcover%.secfur info %netcover%.secsbrb
routelink# arclink# ~
f-meas t-meas f-pos t-pos append
&call droprel
netcover clear
arc dropfeatures %netcover% section.fur
cursor s next
&end
cursor s (!close remove!)
&s byebye [delete sbrbroutes -info]
/*
&call droprel
clearselect
calculate %netcover%.secsbrb info sbrb# = $recno
calculate %netcover%.secsbrb info sbrb-id = $recno
/*
/*make the locality routes...
&r makelctys %netcover% %placecover% %lctyradius%
relate add
rat2p,%placecover%.pat,info,sbrb-id,%netcover%-id,linear,ro
~
moveitem %netcover% route.sbrb rat2p//name to name
sort %netcover%.secsbrb info routelink# ascending
~
f-meas ascending t-meas ascending
calculate %netcover%.secsbrb info sbrb# = $recno
calculate %netcover%.secsbrb info sbrb-id = sbrb#
&call droprel
quit /*arcplot
/*
&r poplist /*see notes about Avenue processing
in header
/*
&return /*makeroutes.aml
/*
/*
/*
/*
/*
&routine droprel
&do rel &list [show relates]
relate drop
%rel%
~
&end
&return
/*
&routine addfur
/*make a new routesystem FUR with centres being
the terminal nodes of route
relate add
sec2rat,%netcover%.ratsbrb,info,routelink#,sbrb#,link,ro
~
reselect %netcover% section.sbrb sec2rat//sbrb-id
= %:s.sbrb-id%
reselect %netcover% line keyfile %netcover% section.sbrb
%netcover%# ~
keyitem arclink#
reselect %netcover% node keyfile %netcover% line
%netcover%# keyitem fnode#
aselect %netcover% node keyfile %netcover% line
%netcover%# keyitem tnode#
writeselect tmp.sel %netcover% node
clearselect %netcover% (!line node!)
unselect %netcover% line keyfile %netcover% section.sbrb
%netcover%# ~
keyitem arclink#
reselect %netcover% node keyfile %netcover% line
%netcover%# keyitem fnode#
aselect %netcover% node keyfile %netcover% line
%netcover%# keyitem tnode#
readselect tmp.sel and
&s byebye [delete tmp.sel -file] [delete tmp.sex
-file]
infofile %netcover% node furnodes %netcover%-id init
clearselect %netcover% (!line node!)
arc additem furnodes furnodes capacity 4 12 f 3
relate add
nat2fur,furnodes,info,%netcover%-id,%netcover%-id,ordered,rw
fn2nat,%netcover%.nat,info,fnode#,%netcover%#,link,rw
tn2nat,%netcover%.nat,info,tnode#,%netcover%#,link,rw
sec2aat,%netcover%.aat,info,arclink#,%netcover%#,link,rw
aat2sec,%netcover%.secsbrb,info,%netcover%#,arclink#,linear,ro
~
reselect %netcover% node keyfile furnodes %netcover%-id
reselect %netcover% line keyfile %netcover% node
fnode# keyitem %netcover%#
aselect %netcover% line keyfile %netcover% node
tnode# keyitem %netcover%#
reselect %netcover% line aat2sec//sec2rat//sbrb-id
= %:s.sbrb-id%
calculate %netcover% line fn2nat//nat2fur//capacity
= ~
aat2sec//t-meas * %sbrboverlap% / 100
calculate %netcover% line tn2nat//nat2fur//capacity
= ~
aat2sec//t-meas * %sbrboverlap% / 100
clearselect %netcover% (!section.sbrb line node!)
netcover %netcover% fur init
reselect %netcover% section.sbrb sec2rat//sbrb-id
= %:s.sbrb-id%
&if [extract 1 [show select %netcover% section.sbrb]]
= 0 &then &goto avoid
unselect %netcover% line keyfile %netcover% section.sbrb
%netcover%# ~
keyitem arclink#
&if [extract 1 [show select %netcover% line]]
= ~
[extract 2 [show select %netcover% line]] &then
&goto avoid
clearselect %netcover% section.sbrb
centers furnodes %netcover%-id capacity
allocate centers out unconstrained /*allow growth
past other arcs
&label avoid
clearselect %netcover% (!line section.sbrb!)
/*
&return /*routine addfur