To prioritize water lines in a network based on the building they service
I have a shapefile of water lines in a region. The lines are split at their vertices and form a network (more or less, will probably have to do some topo cleanup). What I want to do is find the "importance" of each pipe in the network based on the building it's connected to. That would be a simple spatial join, but I also want to attribute each connecting pipe in the network with that same info.
For example, a service line that's connected to a large building gets importance "10" (based on an attribute for that building). I want the lines that touch that service line at a shared vertex to also get a score of 10. I understand that redundant lines are present but this is for a proof-of-concept.
What I've tried
for building in buildings_gdf: for pipe in pipes_gdf: if pipe.touches(building): pipe.buildings_connected_to = building.id + ", " # for multiple buildings
This gives me a gdf of pipes with the ID of the building they touch. But how can I find pipes that touch THESE pipes, all the way through the network, without a script that takes 10 years to run?