I have downspout points that are currently emptying at the foundation. We need to redirect those into the roadway to be collected by the storm sewer. However we need to check that there is enough vertical elevation change between the base of the house and the curb to slope the pipe appropriately (e.g. if the downspout is 50ft away and the elevation at the foundation is 700ft and at the curb 699ft and I need 18" of cover then this will not work). So I need to construct a line from every single downspout point that connects to the edge of pavement line and get the elevation at each end. This line also needs to meet the edge of pavement line at a 90-degree angle. I have over 4000 downspouts so I'm looking for a way to automate the generation of the line segment between the two in such a way that when I calculate the start and end elevation using my DEM I will know my grade change.

Example of Downspouts & Edge of Pavement Shapes

  • 2
    Do you know any python? Do you have an advanced license? I don't know about 90 degree but the near tool will give you the closest point on your curb by location, from there it would be a simple (ish) thing in python to create a polyline from the source to destination locaton... from here I think you could work out the angle of intersection (advanced) and manually check the intersections that are not near enough to 90 degrees; that should reduce your manual intervention to only a fraction of the 4k source features. Commented Sep 27, 2017 at 21:05
  • I do have an advanced license and have applied the nearest tool. I was thinking the same thing that I could somehow use that info to generate a line but wasn't sure how to generate a line from two x y coordinates. Unfortunately, I don't have experience with python.
    – mgc77
    Commented Sep 27, 2017 at 21:14
  • 1
    Without python your only chance is Points file To Line resources.arcgis.com/en/help/main/10.2/index.html#//… just make sure that each pair has the same unique ID and if directional is important use a sort field (0 for from, 1 for to ends). If you have 3d analyst you can get the Z values from your DEM to the points with Add Surface Information resources.arcgis.com/en/help/main/10.2/index.html#//… hint: you can create an XY point file from the table using an event layer or feature class from XY locations in catalog. Commented Sep 27, 2017 at 21:37
  • When you get a result (or at least as close as you can get to a result) can you please post an answer to your own question with working methodology and screen grabs, I think that a non-python solution to this problem would be interesting to future users with a similar problem. Commented Sep 27, 2017 at 21:49
  • 1
    I did use the addin manager. GIS crashed everytime it ran. I eventually figured out that though the readme says that having the same spatial reference can provide more accurate results it also seems to be a requirement for it to not crash. My point feature class was NAD 1983 State Plane and line feature class was NAD 1983 (2011) State Plane which once changed to the same projected system it ran without a problem. It created perpendicular points for over 3000 records in one run.
    – mgc77
    Commented Sep 28, 2017 at 14:28

1 Answer 1



enter image description here


arcpy.Near_analysis("CON_POINT", "Kerblines", "LOCATION")
arcpy.TableToTable_conversion("CON_POINT","../SCRATCH.gdb", "XYtable")
arcpy.MakeXYEventLayer_management("XYtable", "NEAR_X", "NEAR_Y","XYtable_Layer")
arcpy.Merge_management("CON_POINT;XYtable_Layer", "../merged.shp")
arcpy.PointsToLine_management("merged","../connections.shp", Line_Field="PAR_ID")
arcpy.InterpolateShape_3d("DEM", "connections", "../CON_3D.shp")
arcpy.AddField_management("CON_3D", "SLOPE")
# field calculator
(!Shape!.lastPoint.Z- !Shape!.firstPoint.Z)/ !Shape!.length*100


enter image description here

  • 1
    This looks like a good solution. However, I don't know what the OP's actual requirements are, but I would assume one could not build a drain pipe through someone else's house.
    – Fezter
    Commented Sep 28, 2017 at 6:47
  • 1
    This is one of the points I tried to make.
    – FelixIP
    Commented Sep 28, 2017 at 7:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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