segjoin is a linear data processor that was originally developed to join individual
lines and linestrings into longer multi-vertice linestrings, but now does a lot, lot more!
segjoin is designed to remove unnecessary breaks in lines, linestrings, curves,
connected strings, arcs, and b-spline curves. Arcs, b-splines, and shapes can be
converted to linear elements as part of the process. Linear elements may be strung
together removing unnecessary breaks that result in extra element headers and
redundant starting and ending vertices. The default mode of the process is that
linework of different levels, symbolic properties, graphic groups, or zlow/zhigh range
values will not be joined. Specific options enable the user to override these defaults.
Linework may be processed level by level or for a group of levels at one time.
Original linear elements may be saved (-s flag) if the joined linework is placed
on another level. When multiple levels are processed all intersections of linear
elements from all levels are used to determine where a linear element ends.
Cells, text, and text nodes can be included during processing to retain breaks
at these points. Dangling endpoints can be identified using the -D flag and linework
can include data in adjoining reference files tocheck connectivity between elements
of adjacent files.
As segjoin evolved over the past twenty years it has been enhanced to include many
different types of linear functionality. While the major purpose of segjoin is
element consolidation, the process also performs other significant functions; these
functions include line weeding, resymbolization, element conversion, label creation,
database loading, element deletion, and cleaning. Linework can be weeded using
the -W flag. Weeding options include distance, length, and angle tolerances.
Linework may be output with user specified symbolic properties of style, weight,
and color, so segjoin can be used to resymbolize data. The "class" of the linework
may also be altered by this process by specifying a different class as one of the
options following the -S flag. Linework may be output to a new level using the -L
flag, or as one of several element types, including lines, linestrings, curves or
b-splines, or as connected (complex) strings (if none of these element properties
are specified the process outputs the elements as linestrings and lines using their
original symbolic specifications). Labels for linear elements can be created
from the database and placed along the linear elements (e.g. street names on street
segjoin may also be used to manipulate "zero-length" lines by either deleting or
moving them to another level. Short length segments can be removed using the -O
option. Dangling end-points may be identified using the -D flag. segjoin will also
remove consecutive identical vertices found in the definition of a linear element.
Elements may be deleted using the -delete flag. Linear values that include slope,
distance, and from/to x,y, and z values can be loaded into the database using the
-XY option. Attribute linkages can be manipulated, including their removal using
the -A flag.