Ortelius: Best Practices

Ortelius: Best Practices
Best Practices
for Editing Track
Mapdiva, LLC
Ortelius version 1.8.1, November 2013
Drawing street maps with standard illustration tools is often a chore, because it needs a lot of manual work to make sure that intersections between streets or other linear features are correctly handled. The problem
is made harder with cased roads, and where different colors to represent
streets intersect. Ortelius's track tools are intended to automate a lot of
that work, making drawing street maps much, much easier.
Some users have found tracks so easy to snap together that they have
occasionally managed to get the system a bit tangled up, and find that
some networks start to misbehave. This document is intended to point
out how best to use tracks to avoid these sorts of issues. Understanding
how tracks work, while somewhat technical, can help the designer get
the best out of them by avoiding creating networks that can misbehave
under some circumstances.
Understanding Tracks
In Ortelius, a track is much more than a graphical
path, which is as much as you get with normal illustration software. For example, here is what happens
if ordinary paths are used to represent cased roads:
overridden for the junction region, and a correctly ordered rendering taking into account casement and
differing colors is performed.
Note that while this result is certainly possible with
standard illustration software, it requires making duplicate paths for the casement and the colored 'fill' of
the road and carefully arranging them in z-order to
achieve the desired effect. That z-order may need to
be different for another junction in the same network,
requiring various fix-ups and tricky workarounds to
resolve (or using uncased, single colors for tracks,
as often as not). Ortelius automates junctions and so
completely eliminates the need for these sorts of
tricks and path duplication. Tracks of the same type
and in the same layer will automatically form junctions.
But how does it work?
In the first image above, it's obvious that the junction
is incorrect. But rearranging the objects' z-order isn't
right either. In the second image, the casement for
the arrowed road cuts across the junction.
Ortelius tracks are smarter – tracks know about
other tracks, and automatically forms networks that
represent a road, street, rail or even waterway network. When a track is connected to another track, it
forms a junction, and that junction is graphically rendered in such a way that the z-order of the tracks is
By understanding some of the architecture of tracks,
you can avoid falling into a few traps that can exist
for the unwary.
Tracks, like all graphical paths, have a natural direction that runs from the starting point of the track to
the end point. In the above images, the arrows illustrate the street's natural direction. Note that this direction is a logical property of the track object – it
does not imply anything about the road or street it
represents, such as being a one-way street (though
you can take advantage of the logical directionality
to add symbols representing such things easily). In
Ortelius, the logical direction of a track (and indeed
any path) can be reversed very simply using the
Edit > Paths & Tracks > Reverse menu. The logical direction is used to align symbols and labels the
"right way up" relative to the path, so reversal is an
easy way to flip labels that appear upside down, for
The directionality of a track is also very important for
connections to other tracks. Here, a selected track is
connected between two others. The junction at the
start has a green target symbol, and the junction at
the end has a red target symbol. If you were to reverse this track, the red and green symbols would
swap, and the arrows would point the other way.
Here, the horizontal track is the parent of the two
other tracks, one of which is connected by its ending
point (red target), the other by its starting point
(green target). The position of the junction is measured from the starting point of the parent track. This
is a critical value - this distance is maintained even
as the parent track is edited or moved. This fact
means that junctions stay connected, maintaining
the network, even as the parent track changes. This
allows the designer to make small tweaks to a
track's position or layout without having to manually
go back and fix up any junctions there may be there
- they'll all come along for the ride. What does
change, naturally, is the actual x,y location of the
junction itself, and this is moved as necessary to
maintain the distances for the junction. If the junction
is the start of another ("child") track, then if the child
is in turn the parent of further tracks, they too may
move to maintain the junction distances it holds, and
so on.
Of course, a junction's position can easily be
changed - simply drag it where you want. But once
you have moved it, its new distance on its parent
track is maintained, and so on.
To connect a track to a parent, you simply drag an
unconnected track end near enough to another track
for it to 'snap' into position. The junction target symbol will appear to let you know that a connection was
made. Likewise, drag a junction off a track to disconnect it.
Many tracks form a parent-child relationship, and describing the placement of junctions in such cases is
easy enough. Consider this network:
While junction distances are maintained for general
movement of tracks, some operations will adjust
these as necessary to maintain the proper x, y location. These include Reverse, Split and Join operations, and also Magic Roundabout, which performs
various modifications simultaneously.
The automatic junctions formed by the snapping of
tracks is a bit different than the standard “Snap To
Other Objects” command. Track junctions have an
additional snap factor so that they properly center
onto their parent tracks. Sometimes the standard
snapping can get in the way, so when working with
tracks it's often useful to turn off "Snap To Other Objects" and also other snapping if you find they are
unhelpful. Holding the control key while dragging will
temporarily toggle snapping.
Pathological Loops
Since snapping tracks together is so easy, the user
can seemingly form junctions as they wish, without
any restrictions. While mostly true, there are a few
cases that can lead to potentially awkward behaviors. Consider this network:
Here, the horizontal track has a child that curves
around, and becomes the parent of the first track!
Doing this won't break anything, but it leads to an
ambiguous relationship between the two objects. If
the first track is moved, the second track will move
with it, causing the first track's end point to also get
moved. The software must be prevented from going
around in circles in this sort of case, otherwise it enters a so-called "infinite loop", which the user experiences as a hang. To prevent this, the software detects such loops and does not perform secondary
moves that would be implied by such a network.
However, the user can sometimes experience this
refusal as a certain baulkyness where tracks do not
move exactly as commanded by a drag, etc.
Therefore, while such loops are permitted, we recommend that they be avoided if possible. If not possible, then try to lay the tracks out in their final positions if you can before making the connections. That
way you'll minimize the need for movements that
might be partly blocked or modified.
Other kinds of loops can also create cycles, which
cause possibly unexpected movement. For example,
here's another sort of loop, which while perfectly legal, might yield some unexpected movement if you
move the unconnected starting point (the one on the
far left). (Here, the tracks are straight lines, which
can't limit the track movement in the same way that
a curve can – moving the first point inevitably moves
the entire track and therefore all child junctions. A
curve allows the movement to be limited to only the
first segment of the track, reducing unwanted movements. Drawing tracks with the Curved Track tool
therefore recommended if you're likely to be doing
much movement of a connected network). But even
curves can't avoid moving junctions if their length
changes because junctions are always relative to
the starting point.
Sometimes, you might accidentally form a loop of
the doubling-back kind without realizing it, especially
when two tracks are joined end-to-end. It might not
be easy to tell that this has happened as the junctions are on top of each other. If you drag the junction, you'll find it doesn't disconnect, because the
other track is being changed to keep its junction at
the correct distance, so the two seem to be locked
together! Ortelius provides a couple of tricks to help
you out if this occurs. First, try dragging the junction
with the Option-key down - that forces it to disconnect from its parent track and not seek further connections, and that will usually be enough to allow it
to be moved independently. Another way is to to select the tracks and choose Edit > Paths & Tracks >
Disconnect Loops. This will break all looped connections from the selected tracks allowing you to
start over with those tracks.
(Note, the blended section between styles can be
further modified by changing “Width Adaptors” in the
Object Inspector - Features pane.)
This shows the difference between an end-to-end
connection (with deliberate misalignment to emphasize the ugly join) and a properly joined track:
The 'Disconnect Loops' command will not have any
effect on loops like the second example in the previous section - it only breaks loops which immediately
loop back to the selected track object.
Avoiding End-to-End Joins
Ortelius attempts to prevent you making pathological
loops accidentally. If you attempt to connect to a parent track and you are already its parent, and the junction would be close to the ends of the track, the connection isn't made. Here 'close' means in the first or
last 10% of the length of the track, or 15 points,
whichever is less. You are not prevented from making a junction further along, then moving it back towards the end however, so if this is really what you
want, you can do it. Ortelius merely attempts to
avoid the accidental formation of such joins.
In general, we recommend against making end-toend joins between tracks. Graphically, they do not
blend well, forming an abrupt transition if their styles
differ, and requiring very careful alignment to eliminate the appearance of an ugly crack artifact. Instead, the paths should be joined properly by selecting both and using the Edit > Paths & Tracks >
Join command. Not only will this convert two tracks
into one, improving efficiency, it will blend differing
styles smoothly and take care of all the necessary
connections for other tracks that connect to these.
From a graphical point of view, making tracks as
long as possible to avoid end-to-end joins is usually
a good idea. For example, a street in a city might
thread through from one side of the city to the other,
even if it is known by different street names. If this
can be made one single object (with different styles
as needed) then it may help you avoid the need for
end-to-end joins. However, the downside to this is
that if the street is known by different names, you'll
need to do extra work to label it, because wherever
a label is added that refers to the %%NAME attribute, it will of course display the same street name. (A
solution is to add additional attributes, such as e.g.
%%NAME_WEST and refer to these in your labels,
or else just set the label text directly.)
Breaking at cross-streets
Often the correct final approach might be a mixture
of techniques, where for example you can break a
long street into two shorter ones where it intersects
a cross-street. Tracks can be cut using the path cutting tool, and doing this will automatically deal with
any connected junctions that end up on the downstream side of the cut. In fact, users can take advantage of the cutting tool to automatically break paths
at a cross-street intersection. This can be a great
convenience for laying out some kinds of street
grids. For example, here, you can draw all the eastwest streets as single tracks, then all the north-south
tracks on top, then clicking the path cutting tool at
the intersections will break the north-south street (because it's in front) and connect it to the east-west
Ortelius does not permit a track to connect to itself.
Graphically, this is usually OK since if the track has
a single style, the drawn path will appear to intersect
correctly where it crosses itself even though there is
no logical connection in place. It's only if the track
has multiple styles that this may not work. This
would be a rare situation, and would have to be handled accordingly. Breaking the track into two at some
point can solve these problems. A track that is a loop
in its entirety is no problem – as for any path if the
ends are placed on top of each other they are
treated as a single point for dragging. Formally closing such a path will eliminate any graphical artifacts
at the start/end of the loop. If the ends of the path
have different styles, they won't be blended across
the join. This can be solved by making sure the joining point is at a place where the style either side of it
is the same.
Avoid transparent colors
Track joins assume that colors fully obscure other
colors, in other words, transparency spoils things. If
you use transparent colors for any part of your track
style, you'll find that junctions don't appear correctly
and multi-style blending doesn't work very cleanly
either. While there's nothing to prevent you attempting it, our advice is stick to 100% solid colors for all
inline track use.
Linear Select
Ortelius provides a unique tool for selecting sections
along a longer path called “Linear Select”. Use the
tool as you would a highlighter to select a portion of
a track for applying inline styles, style adornments,
labels, and other special features, such as a magic
Magic Roundabout
If you have a junction between two or more tracks in
which a roundabout needs added, Ortelius can automate the initial changes needed. To do this, select
the length of a parent track that has the junctions to
be modified using the Linear Select tool, then
choose Edit > Insert Special > Magic Roundabout.
Ortelius will split the parent track at a suitable point
(the location of the first junction being replaced), add
a roundabout track centered at this point, sized according to the width of the track being modified, and
reconnect the junctions to the roundabout. It will also
manage all affected 'downstream' junctions caused
by splitting and modifying the tracks such that they
don't move. This example shows before and after
using Magic Roundabout on a staggered
The yellow roads are tracks whose junctions with the
'arterial' red roads are affected by the modifications.
As you can see, they do not change position.
The inserted roundabout is simply a normal track, so
it can be adjusted and edited like any other. For example, after some manual adjustments, the map is
altered to this:
Making sure junctions render
The rendering of junctions can be a complex affair,
and to make sure it works well, a couple of things
need to be borne in mind. Every track is built on a
bezier path, with on- and off-path control points like
any other path. Junctions are formed where an end
point connects to any point on another path. Exactly
what is drawn depends on many factors - the widths
of the paths involved, how many style components
there are (which affects casing, etc.) and the angle
that the paths form between themselves. This last
point is especially important, because junctions that
form an acute angle must necessarily render over a
much longer distance than one that meets at 90°. In
the limit, an adjoining path that formed no angle at
all (i.e. it lies exactly along its parent) requires an infinite length to form the junction. This follows from the
tangent operation in trigonometry. Naturally, such a
thing is impossible, so we impose constraints based
on a couple of heuristics.
Firstly, there is a hard limit for the rendering length. If
exceeded, the junction will get cut off. There are also
softer limits that kick in before this is hit, usually.
These are based on various factors that take into account track widths as well as angles. The resulting
factors have been derived empirically to give a compromise between good results in most cases, and
causing problems for the more extreme cases. The
most optimal junction angle is 90° - that renders the
shortest possible junction with the fewest side effects. But of course junctions can form many angles,
so as the angle becomes more acute, the junction
will lengthen until it is cut off. At that point, artifacts
may appear. This illustrates the problem, showing a
90° junction, an angled junction that is rendered correctly, and an angled junction that has been cut off:
In practice, the latter case is rare. It can also often
be avoided by curving the adjoined track away,
which is likely to be more like the real thing anyway:
An additional potential problem with junctions is
when the parent track is significantly narrower than
the adjoined track, and there is a significant angle. In
that case, it's possible for the corners of the strokes
to become visible, like this:
In practice, this is also rare, as usually subordinate
tracks are typically the same width or narrower than
the parent track. Curves can also be used to fix this
situation by subtly curving the track to a more orthogonal angle at the last moment. Such tricks, if
needed at all, are rarely noticeable.
A final potential issue with junctions is where the
track's end point has a control point that is set at a
completely wrong angle. For smooth curves, the final control point for bezier curves should lie more or
less along the line of the path. If it doesn't things can
look very messy:
Note that there's no reason that tracks have to stay
on the side of their parent track that they form a junction. This is perfectly reasonable (note that the normal z-ordering of objects will set whether the ramp
will 'fly-over' or 'fly-under' the parent track):
But the same warning applies if the angle ends up
too acute, causing part of the junction to be cut off:
The second image shows what's happened: the control point is at the wrong angle. Ortelius tries to help
out when connecting a bezier-based track by setting
the final control point to an initial 'sensible' position,
so this can only arise by deliberately (or accidentally) manipulating the control handle.
Synchronizing Dash Phases
Track Terminations
A final graphics trick up a track's sleeve is that it will
synchronize dash phases between a parent track
and its child tracks. This helps tidy up graphics when
dashed styled tracks are connected. Consider the
following tracks, which might represent a railway, for
example. When they are not connected, each one
starts its dashes at zero (white). When connected,
the child track's phase is adjusted so that it lines up
with its parent:
An unconnected end of a track may have a termination assigned. This is an additional graphic used to
tidy up the free end. The simplest is a simple capping line (bar), but an extended bar, a round end or
a turning circle are also provided. Here, the start of
all four tracks is unterminated, but the other end
shows a bar, and extended bar, a round end and a
turning circle, respectively. Select one or more tacks
and choose Edit > Paths and Tracks > Terminate
Start / Terminate End to apply the termination.
Note that the presence of a terminator has no effect
on the connectivity of the track - it can still be connected to another track, in which case the termination is ignored. Having no terminator is the default.
The designer does not have to do anything to adjust
dash phases. It is important to note that the dash
phases are drawn and adjusted relative a track’s
starting point. Therefore, If the end point of a track is
the end connected to the parent, the dash phases
will not be synchronized (though the track could be
reversed to remedy this situation).
To avoid asynchronous dash phases, it is a best
practice to start child tracks at the parent track and
draw away from the parent. The dashes themselves
are part of a style, and can be edited by the Style Inspector. Phase can be adjusted in the Style Inspector, but creating separate dashed styles just to align
different tracks' dashes would be exceedingly painful, and probably not worth the effort.
Using Track Types to Avoid Connections
Ortelius treats all tracks alike. In your map though,
they may represent different kinds of things, such as
roads, railways and waterways. Very often, layers
will be used to keep these different things separate,
and on the whole that is the recommended way
(best practice) to manage separate track networks.
Tracks on different layers will never interconnect they must belong to the same layer to do so.
However, if for some reason you cannot keep different networks on separate layers (one good reason
would be that rails can pass both over and under
roads), you can assign a type to a track. Only tracks
having the same type will connect together. Note
that the assignment of a type must be done before
connecting the tracks – changing the type later does
not automatically break existing connections, which
may cause confusion.
A track's type is an attribute of the track object, and
is set using the Object Inspector:
The Features tab allows you to set a preset type, either Generic (the default), Road, Rail or Watercourse. This is a convenience for setting the
ORTL_TRACK_TYPE attribute, which can also be
directly edited to be any string value you wish, if the
built-in types don't cover it.
Inline Styles
on Tracks
All tracks support multiple inline styles along their length, allowing you to
change the appearance of a single track however you wish. The earlier
‘Join’ example showed this in action when joining tracks having differing
styles, but you can use the Linear Select tool and the normal Styles &
Symbols palette to apply any linear style to any length of track as you
Width Adaptors
Where an inline style is applied, Ortelius will always do its best to blend
the chosen styles smoothly at the transition between them.
Here, a track having a simple red cased style [a] is Linear Selected [b]
and then has a new blue stroke style applied [c]. The new style is applied
like any other – by double-clicking the style you want in the Styles & Symbols palette. In addition to a different color, the new style applied here
has an additional stroke component, as well as a different width. Ortelius
blends the transition between styles automatically.
The blend effect can be modified using the Object
Inspector - Features pane. These “Width Adaptors”
change change the transition to favor the wider
stroke’s main color, the narrower stroke, create a
smooth blend, or use an average of the two. For example, in the image below the 'Wider' option creates
ana.abrupt color change favoring the color from the
wider of the two styles:
Pinch and Inflate
As a convenience, Ortelius provides a quick way to
make a track style narrower and wider without having to create the styles in advance (though that is
also certainly a perfectly good approach). Using Linear Select in conjunction with Edit > Insert Special
> Pinch / Inflate, you can make the track narrower
(50% of the selected width) or wider (200% wider)
respectively. Here, Pinch and Inflate have been used
on two different parts of a track:
Tunnels are special inline style elements that follow
along a track. Tunnels are applied in conjunction
with the Linear Select tool. Use the tool to select a
portion of the track and insert a Tunnel.
As a convenience, inserting tunnels has been automated. From the main menu, choose Edit > Insert
Special to add a tunnel. This convenient inline style
automatically adjust to the width of the track for
which the Linear Selection has been made. Its color
is automatically adopted from the track’s secondary
color (in other words, its casing if it exists), and width
adaptors are applied.
on Tracks
Adornments are secondary graphical objects hosted by a track – if the
track moves, these objects move with the track. Adornments can be
based on any symbol or any style. Unlike the inline style variations
shown in the previous chapter, adornments are applied either on top of,
or behind the track. Symbol adornments are always on top, style adornments always behind.
Style Adornments
Style adornments are special secondary graphical elements that follow
along a track – these include bridges, cuttings, and embankments. Style
adornments are applied in conjunction with the Linear Select tool. Use
the tool to select a portion of the track and insert a style adornment.
As a convenience, inserting certain kinds of adornment has been automated. From the main menu, choose Edit > Insert Special to add a
bridge, cutting or embankment style adornment. These convenient style
adornments automatically adjust to the width of the track for which the
Linear Selection has been made. (Note, the Tunnel command inserts an
inline style, again automatically sized.)
Here, a style representing a bridge is applied as an
adornment. The new style replaces the Linear Selection, but unlike inline styles, it is not blended with the
track's style, but drawn behind. The diamondshaped handles are used to change the adornment
after it has been added - the yellow handle repositions the adornment, and the orange one changes
the length over which it is applied. By right-clicking
on the yellow or orange diamond, menu options are
presented for deleting the style, copying it, etc.
As with junctions, the position of an adornment or
inline style is calculated as a distance from the logical starting point of the track. Like junctions, the distances are maintained as tracks are edited or
moved. To avoid the need for gross repositioning of
these elements, best practice is to finish and fix the
layout of your tracks before adding adornments.
Symbol Adornments
Symbol-based adornments are used to add graphics
on top of a track, and of course these move with the
track. Adding them is a simple matter of using the
Symbol Stamp tool with the selected symbol in
Styles & Symbols palette to stamp the symbol onto
the track:
By default the symbol is aligned to the track, and
some symbols, like this shield here, will automatically pick up attributes if defined for the track object,
such as its %%ROUTE_NUM (=15 in this example).
Right clicking on the symbol adornment presents
menu options for deleting the symbol, aligning it differently, etc. Deleting a symbol adornment can also
be accomplished by simply dragging it off the track.
It can also be repositioned by dragging it once the
track is selected (click once to select the track, then
click again and drag in the symbol's selection box).
There are no limits to the number of adornments and
labels on a track. Adornments and labels naturally
align to the track's direction, and so are affected by
reversing a track. They can also be individually reversed or rotated which may be more convenient.
Adding symbol adornments should be your go-to
technique for adding additional graphical information
to tracks, such as road shields, gradient markers,
bus stops, stations on railways, lock gates on canals, to name just a few. Labels on the other hand
are best for adding additional textual information.
Style adornments are best for supplementary linear
features such as bridges, cuttings and embankments, fence lines and so on.
Custom Style Adornments
The Edit > Insert Special > style adornment commands are a convenience for common types of track
adornment, but they are not the only way to add
such features. If you don't like the effects these give
you, you can use a different style adornment available in the Styles & Symbols palette (for example,
there are several bridge styles in the built-in library),
or create your own.
Custom style adornments are attached to tracks by
holding down the option key while double-clicking
the desired style in the Styles & Symbols palette.
For a custom look, create your own style adornments using the Style Inspector. Different style components, such as a “bridge”, let you change graphical attributes such as line width, color, pier size, and
the like. Save your new custom style adornment to
use the option-double-click method described above
for adding custom adornment styles to your tracks.
Ortelius does not impose a specific workflow on you. But we have noticed that things tend to go more smoothly when actually making a map if
you have all your styles and symbols that you'll be using defined in advance. We recommend that you create a library collection for your project
and gather the necessary styles and symbols there, categorizing them as
needed for quick access.
For example, add a drawing layer and create all your map styles and symbols there, overlaying lines and fills, and even text, as appropriate to see
how they interact with each other. In the Ortelius built-in templates, an exercise called “Map Graphic Elements Visual Design Guide” demonstrates
the interaction among different map graphics (Adapted from J. Krygier
and D. Wood, Making Maps, Guilford Press, 2005.). You can always
make fine tune adjustments to style later as needed.
Most people find working with tracks much easier and quicker if you have
all your needed styles to hand, rather than making them up as you go
along (though you can, if you want).
In Conclusion
Now you've read and learned a bit more about how
tracks work, we hope you'll find making maps with
Ortelius even more enjoyable and rewarding!
Ortelius version 1.8.1, November 2013
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF