1

ArcGIS Pro 2.4.0 - all extensions

I have a dataset showing Water Mains (lines) for an area. I have been tasked with finding water mains that go from a given diameter to a smaller diameter, and back to a larger diameter.

For example: An 8" water main that links into a 6" water main, which then links back into an 8".

Ideally I would want to select just the 6" water main in the example but I'm unsure how to go about this. Another problem I think I might run into is that the water main lines are made up of many small segments. For example a 40 foot line is actually 8 different 5" segments.

I'm unsure whether I can use a tool for this, definition query, or write a Python script which I'm not very good with.

  • 1
    Does the attribute table for the water main have a unique identifier for each main and segment (e.g. main A, segment #1, #2, #3...) – smiller Sep 3 at 17:16
  • @smiller The attribute table only has unique identifiers for the segments. There is no "Main A" , just segment #1, #2, #3 .. which makes this really tough because there are 7,000+ segments – brice.f Sep 3 at 17:21
  • 1
    Are the links sequential? e.g. would you follow segment 1 to segment 2, or could it jump around numerically? – smiller Sep 3 at 17:42
  • @smiller The segments unique identifiers are not always sequential. I have found a few Mains where the segments are sequential but for the most part - no they are not. – brice.f Sep 3 at 17:50
2

Given:

enter image description here

We want the 3 inch pipe.

Basic work flow:

  1. Dissolve tool by diameter to connect segments.

enter image description here

  1. Spatial join dissolved lines to themselves, one to many. Keep your diameter fields.

enter image description here

  1. Copy/Paste spatial join layer in the table of contents. Rename one layer LessThan and one layer GreaterThan.

enter image description here

  1. Apply the following Definition Query to the LessThan layer: DIAMETER < DIAMETER_1. These will be your pipes with a diameter less than at least one of its neighbor's diameter.

  2. Apply the following Definition Query to the GreaterThan layer: DIAMETER > DIAMETER_1. These will be your pipes with a diameter greater than at least one of its neighbor's diameter.

enter image description here

enter image description here

  1. Select by location -> LessThan identical to Greater Than. These pipes have a diameter that is smaller than at least one of its neighbors and a diameter that is greater than at least one of its neighbors. We're not interested in these.

enter image description here

  1. Switch selection on your LessThan Layer. These are the pipes with a diameter less than all its neighbors' diameters.

enter image description here

  1. Select By Location your original lines which share a line segment to your selected LessThan lines. These are the pipes you're interested in.

enter image description here

Result:

enter image description here

  • Okay so I made it to Step 8 and before I continue I just need a little bit of clarification. On Step 8 I'm doing a second Select by Location - is my input the selection from Step 7? If so, in Step 7 should I have created a feature class from selection? – brice.f Sep 3 at 21:09
  • @brice.f By input I mean your starting lines; the lines with insignificant sections you're trying to identify. In my pictures it would be TestLines. I've changed input to original in my answer for clarity. – Emil Brundage Sep 3 at 21:15
  • This worked fantastically. I couldn't have done this without your help. – brice.f Sep 3 at 21:47
  • Locating diameter conflicts is standard procedure. It's enough to compute from and to nodes, e.g. gis.stackexchange.com/questions/125090/… and summarise diameters or areas of incoming and outgoing pipes. Works for real life pipe networks. The one you show is ideal, non-existing one. – FelixIP Sep 3 at 21:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.