Developing Custom Transformers to Simplify a Sanitary Sewer Geometric Network
Carl Von StettenCCCSD
About Me
GIS Analyst, CCCSDCarl Von Stetten
Last Year on the FME
World Tour…
Our GoalGIS will serve as the authority of record for the inventory of District infrastructure assets.
Our ProblemGIS sewer main features were not always 1:1 with physical pipes, sometimes they were n:1.
Historical Context…• From 1970’s thru mid-1990’s, infrastructure
maps produced by manual drafting• Annotation overload!
…More Historical Context…• 1996 MGE deployed – similar hardcopy format,
just maintained with different tools• Sewer mains with attribute changes stored as
“minisegs”
# Main ID
Length
Diam.
Material
Job
1 75D1 M 70.5 75D1 80 131 6 VC X1558
2 75D1 80 75D1 81 114 8 CI X1558
3 75D1 81 75D1 82 18 8 CI X1558
4 75D1 82 75D1 83 100 8 CI X1558
5 75D1 83 75D1 84 18 8 CI X1558
6 75D1 84 75D1 M70 75 6 VC X1558
…Almost Caught Up…• 2005-06 GeoMedia deployed – somewhat refined
hardcopy format, new tools and custom code• Automated process to calculate “majorsegs” from
“minisegs”# Majorseg Main ID1 75D1 M 70.5 75D1 M 70 75D1 M 70.5 75D1 80
2 75D1 M 70.5 75D1 M 70 75D1 80 75D1 81
3 75D1 M 70.5 75D1 M 70 75D1 81 75D1 82
4 75D1 M 70.5 75D1 M 70 75D1 82 75D1 83
5 75D1 M 70.5 75D1 M 70 75D1 83 75D1 84
6 75D1 M 70.5 75D1 M 70 75D1 84 75D1 M70
So Where Are We?• “minisegs” solved the problem of tracking the
attribute changes over the length of a sewer main• “majorsegs” solved the problem of linking to external
databases (CMMS, CCTV, hydraulic modeling, etc.)
• But… still can’t reliably link back to GIS from the external databases 1:1• Which single GIS feature represents the whole pipe?
Time to Rethink Things
How can we consolidate the “minisegs” into single features without losing any information?
What do we do with “miniseg” data?
Pipe attribute changes tracked by “minisegs”
Need to track
spatially? New solution
Pipe material Yes Copy “miniseg” to ssAttributeChangeLine FC
Liner material/method Yes Copy “miniseg” to ssAttributeChangeLine FC
Diameter Yes Add reducer fitting in ssFitting FC – make it a defining structure
Slope (grade breaks, vertical curves) Yes Move mid-pipe elevation changes to ssElevationPoint FC, retain start/end invert elevations on pipe
Job number(s) No Move to a related JobLinks tableEncasement Yes Copy “miniseg” to ssCasing FC, remove
encasement attributes from pipe
What do we do with “miniseg” data?A few leftover details:• When consolidated pipe has multiple materials set the
MATERIAL attribute to “Varies”• Same for multiple liner materials/methods
(LINERMATERIAL/LINERMETHOD)• If the “minisegs” can be consolidated at all before copying to
ssAttributeChangeLine, do so• Can consolidate job and slope changes if material or liner doesn’t
change between adjacent “minisegs”• Sum the total length of the consolidated pipes and
consolidated ssAttributeChangeLines
How do we accomplish
this?
• With FME of course! (duh!)
• Using the LineJoiner transformer
• Using a reuseable Custom Transfomer
Let’s see this in FME…
The Mighty Workbench!
MiniSeg Consolidation to Whole Pipes
MiniSeg Consolidation to ssAttributeChangeLine
MiniSegJoiner Custom Transformer
MiniSegJoiner User Parameters
Define inside Custom Transformer
Set attributes on each placement
Move Job info to a Relate
JobHandler Custom Transformer
JobHandler User ParametersDefine inside Custom Transformer
Set attributes on each placement
Custom Transformers
rock!!!
• Keeps workbench DRY (don’t repeat yourself)
• Configureable behavior (through user parameters)
• Encapsulate your task logic
Thank you!Carl Von StettenEmail: [email protected]: http://centralsan.org
http://about.me/cfvonnerTwitter: @cfvonnerSlack: @cfvonner
http://gisdevs.slack.com signup: http://bit.ly/1HxiNv1