I am trying to construct elevation profiles and then determine the horizontal length (i.e. not taking the elevation into account) and 3D length (i.e. taking the elevation into account) along the profiles. I have been constructing the profiles by digitizing polylines and then using the "Interpolate Shape" tool (under 3D Analyst) to add Z values to the polylines, based on a raster which contains the elevation data. This step of the process has been working properly.
I then calculated the horizontal length of each profile by adding a field to the attribute table of the polyline shapefile and using "Calculate Geometry" to calculate "Length". I now need to find the 3D or surface length along each profile. I have tried several methods, including adding a field to the attribute table of the polyline shapefile and using "Calculate Geometry" to calculate "3D Length", using the "Add Surface Geometry" tool (3D Analyst -> Functional Surface), and using the "Add Z Information" tool (3D Analyst -> 3D Features). All three methods return the same results, but they do not make any sense. Many 3D length values are actually lower than the horizontal length values for the same profile - how could this be possible? A line with any kind of elevation change should always have a longer 3D length than horizontal length. For other profiles, the 3D lengths and horizontal lengths are the same, and for many others the 3D length is only slightly higher (by a few metres) than the horizontal length, even when the elevation profile shows relief of hundreds of metres.
Does anyone have any insight on what could be going wrong? Thanks!