Electric Circuit Mapping with Inventory Data � Tips, Tricks, and OVERPOST
Finesse
Faced with the need to use large-scale electric facility data for smaller
scale schematic circuit mapping, the City of Riverside Public Utilities
Department employed many unique techniques to create these critical output
products. Elegant approaches to scaling, placement and page management
usher several ARCPLOT commands including OVERPOST to the "next level".
Peek under the hood to learn how OVERPOST really works and how to make
it respect asymmetrical marker symbols. This paper addresses the issues,
reveals AML fragments, and presents algorithms.
The Goal
The initial objective of the City of Riverside GIS implementation was to
replace all manually maintained maps with a common base and department
specific data layers to support the historical as well as enhanced map
products. One of these map products is the electric circuit map. AutoCAD
and manual methods maintained these maps. They were at various page sizes,
orientations and map scales. The map scales ranged from 1" = 200' to 1"
= 800' and the page sizes ranged from A to D. The primary reason for the
different scales, page sizes and orientation was to minimize total page
counts while maintaining clarity. Several inset maps clarified congested
areas.
The electric department automated their facilities with a sophisticated
database design using ArcInfo coverages and Oracle to support 1"=100'
inventory mapping. This scale, while very clear and easy to read did not
lend itself well to circuit mapping due to the number of pages required
to cover each circuit. The engineering staff attempted various scales and
page sizes before standardizing on one page size ("D") and map scale (1"
= 200'). Even at the standard scale, inset maps are required to detail
congested areas.
FIG 1: All of the electric data for this area.
FIG 2: The final product.
Data Issues
We could manage most of the data relationships within the electric data
model by employing creative RDBMS "views" and "native mode" SQL selects.
For the uninitiated, a native mode SQL select uses a relate which connects
ARCINFO to the RDBMS using the format "^relate name" with a standard where
clause to create the selected set. The advantage to native mode selects
is you can have very creative where clause collecting a selected set in
the RDBMS and returning it to ARCINFO. In addition, the native mode queries
perform the query once and return the selected set of related records instead
of performing the query for each row. Here is a good example explaining
each:
The expression "reselect electric point transformer//KVA
= 100" performs the query for each point and checks it against each row
in the Oracle table.
The expression "reselect electric point ^transformer KVA
= 100" goes to Oracle and returns the selected set of records which interns
selects the set of electric points. This is unbelievably fast.
The only down side of native mode queries is the ARCINFO data must be indexed
on the relate item. This sounds obvious but when the data is edited,
the index on the relate item is lost until the data is re-saved. Through
trial and error, we found in most cases creative selects and processing
can reduce the number of edits blowing away the index .
To optimize the circuit display requirements, we extracted the electric
data from Librarian and processed it so that only the features represented
in the circuit remained. When the data (designed for 1" = 100') is simply
mapped at 1" = 200', the annotation becomes too small and marker symbols
overstrike making the map unreadable. Several new data editing and processing
steps as well as application issues resolved these problems.
Application Issues/Resolutions!
The next series of issues unravel the annotation readability and marker
placement. The problems were initially addressed in three ways. 1) Rotate
markers to minimize overstrike; 2) Use "Detail Boxes" to blowup congested
areas; 3) Scale up the annotation text sizes; and 4) Use overpost to move
annotation dynamically.
Judicious editing eliminated marker overstrikes by properly rotating
the markers and creating 1" = 200� test plots to verify rotation effectiveness.
Where necessary, detail or inset maps make sure that even in the most congested
areas, markers will not overstrike.
FIG 3: Detail boxes clarifying congested areas.
To create detail boxes for the circuit maps, we added two features to the
circuit page layout coverage. The layout coverage is used to denote how
the circuit is mapped from the inventory data into the circuit pages where
"pages" are created covering the entire circuit. Special annotation show
where other circuits connect to the other side of switches or to help in
the identification of the circuit in the field. For the detail boxes,
we draw a box for the area to detail, pick the detail box map scale and
then place the detail box on the map where it will not effect the display
of the rest of the circuit data. To make things even clearer, a leader
line ties the detail box to the map location. The size of the detail box
is calculated to precisely scale the data as selected in the detail area.
The information drawn in the detail box is exactly the same as shown in
the base but is scaled such that it is clear. The following is the general
series of steps used to get the map extent of detail area and the
map limits and scale to plot it.
/*---------------------------------
/* Reset everything to known values
things to reset:
/* clipmape, units, mape, mapscale,
mapposition, mapangle, maplimits
/*---------------------------------
/* deleted stuff for clarity
mapangle %mpangle% /*
the map angle for the circuit page
clipmape off
/*---------------------------------
/* Get the mape for the detail area
/*---------------------------------
clearselect cctpage arc
reselect cctpage arc line_tag = %cur_page_detail%
&s xy1 [show select cctpage line
1 xy 1]
&s xy2 [show select cctpage line
1 xy 3]
&s smallmape %xy1% %xy2%
/*--------------------------------------------
/* Get the x,y for the blowup and
the mapscale
/* have to convert x,y to page because
we are
/* playing with map and page units.
/*--------------------------------------------
clearselect cctpage arc
reselect cctpage arc line_tag = %cur_page_blowup%
units map
&s xy1 [show select cctpage line
1 xy 1]
&s xy2 [show select cctpage line
1 xy 3]
&s blow_up_scale [show select
cctpage line 1 item scale]
&s bigx1 [extract 1 [unquote %xy1%]]
&s bigy1 [extract 2 [unquote %xy1%]]
&s bigx2 [extract 1 [unquote %xy2%]]
&s bigy2 [extract 2 [unquote %xy2%]]
&s xycoord1 [show convert map
%bigx1% %bigy1% page]
&s xycoord2 [show convert map
%bigx2% %bigy2% page]
/*--------------------------------------------
/* Patch the area under the blowup
box set mape
/*--------------------------------------------
lineset carto.lin
shadeset colornames.shd
linesymbol 102
shadesymbol 26
mappos cen cen
maplimit %xycoord1% %xycoord2%
units page
patch %xycoord1% %xycoord2% outline
/*--------------------------------------------
/* Set mape, mapscale for the
area that is detailed
/*--------------------------------------------
mape %smallmape%
mapscale %blow_up_scale%
/*--------------------------------------------------
/* Redraw circuit features within
the circuit detail
/*--------------------------------------------------
&call DRAW
Scaling up the annotation, which looked great at the original size, caused
the text to overstrike. For the transformer and conductor annotation, individual
text strings denote separate attribute values. Further data editing concatenated
the individual strings reducing text overstrike. Even with this editing,
stacked text still over struck in some instances necessitating the use
of the OVERPOST command to move annotation slightly to increase readability.
The initial attempts at using OVERPOST where quite funny. The first real
attempt used the TEXT FIXED NODELETE option to keep the conductor annotation
in place and the TEXT MOVABLE NODELETE to allow the device and structure
annotation to float. Markers where plotted first with the MARKER FIXED
NODELETE option set, blocking the bit map for the other text to float around
them. Although they were not usable, these early attempts showed
promise.
FIG 4: Processed data with the annotation scaled up for readability.
Need to move the strings or use the OVERPOST environment.
FIG 5: OVERPOST gone crazy. The annotation is scaled but it is
not concatenated into single strings.
FIG 6: Concatenated the device and conductor annotation into single
strings.
Using the OVERPOST command required some innovative thinking. Separate
stacked text strings, that "went together" were moved individually and
were separated. We had to exercise some annotation data relationships to
process the data and assemble the individual parts into one "text string"
so it would move as a unit. The process was to use the annotation linkage
to the device, the device knowledge of its structure and the structure
linkage to its annotation to tie everything together. We were getting somewhere,
but it was easy to get lost trying to determine which bit of text annotated
what.
FIG 7: Concatenate the annotation for the devices and structures
into their own block. It is ambiguous as what goes where.
At this point we really understood the fact the OVERPOST command moves
points or text based on its origin. For many annotations, the original
placement designed to support the display all of the electric data, caused
some of the text placement to be too far away for clear identification.
By using our data relationships, we moved the annotation on top of the
associated electric devices or structures. The OVERPOST command would then
move the string away from the new origin point, preventing overstrike with
other points and text. By using the LEADERSYMBOL, LEADERTOLERANCE and LEADERS
commands, we were able to clarify what went where even when it was far
away.
FIG 8: Move the annotation to the device or structure for clarity.
FIG 9: OVERPOST after moving the annotation to the device or structure.
Other than long leader lines, it is clear what goes where.
We were still not happy with the results of our efforts because in most
cases we had leader arrows trailing all over the place. Since we could
not control the order in which the annotation was placed, we had some cases
where leaders crossed over each other. After talking with Esri and through
trial and error, we determined our specialized marker symbols resulted
in overpost bit maps that were blocking an area much larger than the actual
marker. We called this the bounding box vs. the ink on the page problem.
Because many of our markers are very large and are not centered around
the midpoint of the marker block, we were caught by this trap in a big
way. Fortunately we crafted a solution by plotting white boxes that closely
bound each of our symbols, turned overpost off, plotted the real markers,
and then turned overpost back on to plot the annotation.
FIG 10: The magenta markers represent the 'hidden' markers which
are used to trick the overpost bit map.
The final issue to fix was the instances where annotation was placed over
line work. The overpost environment did not take into account line work
in the bit map. Overcoming this was easy, we used the DENSIFYARC command
with the VERTEX option to create new vertices every foot. Then we used
ARCPOINT the resulting coverage to create points for all of the nodes and
vertices. We simply plotted all of the points with a small white marker
to set the bit map for all of the lines.
FIG 11: The completed circuit data. Annotation stacked neatly and
close to the markers.
Summary
Our creative approach by processing the data in a specific way, understanding
the overpost limitations, and tenacity allowed the City of Riverside to
re-use GIS data developed for inventory mapping at a different scale for
circuit mapping. Many people at the City seeing our early attempts doubted
we could ever pull it off. It was nice to prove it could be done.
Bradley Mayo
Senior Programmer Analyst, City of Riverside
Pat Hohl
Senior Electric Engineer, City of Riverside