This content has been marked as final. Show 6 replies
Did you ever get this figured out? I'd like to do the same with our Stormwater dataset (assign upstream and downstream id's to pipes).
Attribute assitant can do this if they participate in a geometric network.. Atrribute Asistant takes a while to set up but it does provide some great data-model support.
the FROM_JUNCTION_FIELD and TO_JUNCTION_FIELD functions are the ones you are looking for
I found a great tool in ArcHydro 2.0 for ArcGIS 10 called "Accumulate Attributes". Basically you select the downstream nodes that you want to assign the cumulative upstream information to, select the source field / target fields and run the tool. It doesn't populate the downstream ID to upstream nodes, but the function that it performs is exactly what I needed in the end.
Its also possible to do this by dissolving the lines in your sewer network, executing two separate Features Vertices to Point functions (one for upstream points and one for downstream nodes), at this point if your nodes represent features that are matched in another layer (such as Manholes) you can use a spatial join to import those structure IDs into your new upstream and downstream nodes layers. Once your upstream and downstream features have IDs you can use another series of joins to add the ID's to your original (un-dissolved) sewers layer.
It could look something like this
Note that this model is not a working version of what we came up as a solution, the final version was much more complicated and had to be completed with python to be flexible with incomplete data sets and poorly interconnected sewer features.
Export Graphic.jpg 28.6 K
Here is my solution for those who don't have a geometric network and need to attribute upstream and downstream manholes in your sanitary sewer mains layer. You'll need to follow the steps in sequence. But you won't need to download any software, or use additional extensions or resources other than a basic ArcGIS license. I developed this technique to attribute my layer for use in Pipelogix software (for televising sewer mains).
HOW TO ATTRIBUTE MAINS WITH UPSTREAM AND DOWNSTREAM MANHOLE IDS
1) Use Python code to attribute manholes and mains with unique IDs. I used this one. Next, add -4- DOUBLE precision items to your mains attribute table. Call them:
2) For each of the above items, select the column and calculate the corresponding Geometry:
FromNodeX - X Coordinate Line Start
FromNodeY - Y Coordinate Line Start
ToNodeX - X Coordinate Line End
ToNodeY - Y Coordinate Line End
3) Export the MAINS attribute table to a dbf file and add this table to your table of contents.
4) Right click on the new table and use ADD XY to create two new point layers, one for FromNodeX & FromNodeY coordinates and one for the ToNodeX & ToNodeY coordinates. Name the FromNode (Start) layer "Upstream MH" and the ToNode (End) layer "DownstreamMH".
5) Use Spatial Join to join the manholes layer to the new Upstream and Downstream MH point layers. Use the match option "Intersect" and add a search radius of around 5 feet (could be more or less, depending on your features). You are now adding the Manhole IDs to both the Upstream and Downstream manhole layers. You will create two new point layers, one for the upstream MH and one for the downstream MH. Call your two new point layers: UpstreamMH1 & DownstreamMH1. Your new layers will contain both the Main ID and corresponding Manhole ID.
6) With the attribute table open, add two new TEXT items to your Mains layer: UpstreamMH and DownstreamMH. You will perform two table JOINS, one at a time. First, JOIN the UpstreamMH1 attribute table to the MAINS attribute table. Use the Mains-ID as your join item. Open the attribute table. Calculate the UpstreamMH column in the Mains table to the MH-ID from the joined table. Then, remove the join. Next, Join the DownstreamMH1 layer and calculate the Downstream MH column with the joined item value. Finally, remove the Join.
7) Check your work by labeling each main with its MainID, UpstreamMH and DownstreamMH in one color. Then, label the Manholes with the MH-ID in a contrasting color. As long as your mains were oriented correctly, and a manhole existed at every start and ending point, your work should be mostly done.
8) Clean up any null values. Edit the mains layer and sort the upstreamMH and downstreamMH columns, one at a time. Zoom to each main with a null manhole ID and fix the problem.
BONUS: HOW TO ATTRIBUTE MAINS WITH STREET NAMES
1) Start with a good street centerline layer. Buffer the centerlines with a minimum distance of 30 feet for local roads. Even better, vary the buffer distance by the street class, giving a larger distance for highways and major roads.
2) Use Spatial Join on your mains layer to the buffered street layer. Choose the match option: Have their Center In.
3) Join the attribute table from your new spatial joined layer to the original mains layer, using the MainsID.
4) Calculate the Street name column to the joined street name and voila, your mains are now attributed with the street name.
** Feel free to leave a comment or question on this method. I admit, there might be more simple way, but this method worked on a large mains layer with over 1500 manholes.