Saturday, August 23, 2008

Identifying StopValves that control a Pipe Segment

The Problem: Given a network of line and point features representing pipes and valves respectively, how to determine the stopvalves associated with a given pipe segment?

Business Purpose: If there is a break in a pipe, which valves must be shut off in order to isolate the break, and therefore prevent excess water loss.

Some definitions:
  1. A pipe section is a series of pipes joined end to end in a straight or continuous smooth line.
  2. Each pipe section has a unique PipeID associated with it.
  3. Each valve has a unique ValveId associated with it.
  4. Each valve should have 1 or 2 pipe sections attached to it.
  5. A valve controls amount of flow, not direction of flow: the direction of flow is determined by pressure values at different parts of the network. Consequently, water may flow in opposite directions through a valve, an in a pipe section at different times.
  6. A pipe segment is a set of pipe sections joined to one another so that the sections are topologically connected, and isolated from other pipe segments. It follows that each pipe section can belong to one and only one pipe segment.
  7. A pipe segment will have 2 or more ends to it. There are no pipe segments with 0 or 1 end (Actually a pipe segment with 0 end may exist if it is a ring or a closed polygon without any valves in it).
  8. Within a pipe section, individual pipes may meet end to end only. A T-junction would therefore be a place where 3 pipe sections join together in the pipe segment.
    A pipe junction could have more than 3 pipe sections coming together.
    A series of pipe sections may meet one another at angular junctions, so that any of the sections can be isolated by turning off 2 valves. These pipe sections make up a pipe segment.

The Problem described in abstract terms: For a given pipe segment, provide a list of ValveIDs at the ends of the segment.

Possible exception conditions:
A valve may not have any pipe segments associated with it. This would be a standalone valve which does not control any pipes.
A valve may show only one pipe segment associated with it. This means that the valve controls consumption of water flowing through it, or that the other segment possibly associated with it is not of current interest in the network.
The end of a pipe segment may not have a valve; this could mean that we are not interested in what happens at the end of that pipe segment.

One Solution algorithm in Geomedia:

Given: Line Feature PIPES and Point Feature VALVES
  1. Apply [ANALYTIC MERGE] to PIPES merging ALL geometries to create a feature query qry_merge_PIPES (Why? See Note 1)
  2. Apply [BUFFER ZONE] with small radius (1 mm or 1 cm) around VALVE to create feature query qry_VALVES_Buffered (Why? See Note 2)
  3. Apply [SPATIAL DIFFERENCE] with input qry_merge_PIPES subtracting qry_VALVES_Buffered to create a query qry_PSEGMENTS which is still a single feature consisting of joined and unjoined pipe (See Note 3)
  4. Add [FUNCTIONAL ATTRIBUTE] [Geometry] using the [GEOMETRIES] function to qry_PSEGMENTS.Difference_Geometry to create a query qry_PIPE_SECTIONS (See Note 4)
  5. Apply [ANALYTICAL MERGE] to qry_PIPE_SECTION by Merge Criteria [TOUCHING] to create a feature qry_PIPE_SEGMENTS. (See Note 5)
  6. Apply [AGGREGATION] with the summary feature in qry_PIPE_SEGMENTS from the detail features qry_VALVE_Buffered with spatiallty aggregation where the summary features [TOUCH] the detail features. Create an Output [FUNCTIONAL ATTRIBUTE] called [STOP_VALVES] which uses the function [CONCATENATE] function on the Detail.VALVE_IDs, separating them using a suitable separator such as a comma or a semi-colon. The resulting qry will be called PIPE_SEGMENTS. (See Note 6)
  7. Display PIPE_SEGMENTS. When the attributes of a particular PIPE_SEGMENT are displayed, the only attribute shown will be the list of STOPVALVES. (See Note 7)
Technical difficulties:

Note 1 This merges all the pipe segments together to get one or more unconnected pipe networks.
Note 2 This makes the valves to small circular areas and why we do so will become clearer at the end of the next step.
Note 3 In theory it should be possible to subtract the VALVES directly from PIPE_NETWORK so that there is a break where the valve is located. In practice, GeoMedia will not allow [SPATIAL DIFFERENCE] between line and points, only between lines and lines or lines and areas.
Note 4 What we want here is to separate each pipe segment. However, Geomedia will do this, and in addition, will also break apart pipe segments where pipe sections meet at an angle, and at T-junctions.
Note 5 By comparing the number of pipe segments together with the original pipe segments, we can get an idea of any inconsistent network.
Note 6 This is a means of associating the valve buffers with the pipe segments they each helped to create. The CONCATENATE function works because the VALVE_IDs were text rather than Numbers.
Note 7 To generate Valve Segment IDs, we need to output the query to a feature.

Data Quality issues:

  1. 1 valve with no ID
  2. some valves do not touch pipes - suggests (a) valve does not exist in reality (b) linework error 3) some pipe sections appear in multiple segments - this means that some of the original pipe linework had valves sitting on a continuous pipe.
    Since original data came from CAD system, it is necessary to correct the data at the CAD level, rather than update at the Geomedia level.

No comments: