<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Construct Points on polyline at 3d distance  in 3D Questions</title>
    <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538772#M3232</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey mate - all good . I’ve done what I needed to do in ArcMap. The addin worked a treat, so no rush from me. Will be good to have it in Pro when you can get to it though, as this will keep coming up.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;David Eastman&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;National Security Industry Specialist&lt;/P&gt;&lt;P&gt;Esri Australia&lt;/P&gt;&lt;P&gt;0400 731 168&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 19 Feb 2019 18:12:40 GMT</pubDate>
    <dc:creator>DavidEastman</dc:creator>
    <dc:date>2019-02-19T18:12:40Z</dc:date>
    <item>
      <title>Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538760#M3220</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Greetings. I'm having trouble finding information on the construct points tool. I have about 100 separate hiking trails that have z geometry. I have calculated points at 1 mile intervals along the track using the Construct Points tool in the editor toolbar. The problem I'm having is determining whether these points are based on the surface distance or euclidean distance along the line. I can't seem to find any documentation on this in the help files or in the forum. Any insight? I can upload files if needed. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 21 Feb 2016 20:54:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538760#M3220</guid>
      <dc:creator>JasonBarnes</dc:creator>
      <dc:date>2016-02-21T20:54:15Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538761#M3221</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In the absence of a statement, I would suspect that it would be 2D distance.&lt;/P&gt;&lt;P&gt;&lt;A href="http://desktop.arcgis.com/en/arcmap/latest/manage-data/creating-new-features/creating-new-points-along-a-line.htm" title="http://desktop.arcgis.com/en/arcmap/latest/manage-data/creating-new-features/creating-new-points-along-a-line.htm"&gt;Creating new points along a line—Help | ArcGIS for Desktop&lt;/A&gt; &lt;/P&gt;&lt;P&gt;However, it is always best to test an unknown circumstance.&amp;nbsp; &lt;/P&gt;&lt;UL&gt;&lt;LI&gt;On a horizontal line construct a point 1000 meters from an origin point&lt;/LI&gt;&lt;LI&gt;assign z value 1000 meters greater than the origin point's Z and the angle&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;obviously, you should end up with a 45 degree angle and root 2 * 1000 m as the horizontal distance if the distance from the origin to destination was actually 3D.&amp;nbsp; If you end up with X being 1000 meters greater, then it is 2D distance&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 21 Feb 2016 21:53:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538761#M3221</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2016-02-21T21:53:40Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538762#M3222</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the reply and idea Dan. I created a 3d line with 45 degree angle as you mentioned. Turns out it does in fact use the 2d distance. One would think this would be a very trivial function, but apparently not. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Feb 2016 23:24:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538762#M3222</guid>
      <dc:creator>JasonBarnes</dc:creator>
      <dc:date>2016-02-22T23:24:07Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538763#M3223</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I do understand the rationale however, if one is in the field gathering data with the worlds most precise instrument, you would have the option of determining position using a horizontal offset from a location or one that is "parallel" to a slope.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Considering the first case, you are measuring distance/offset between two points along a parallel plane (ie like using a level in the field for instance if you have ever done old-school surveying).&amp;nbsp; You don't care about the intervening elevations and if you need Z, you simply determine the offset relative to the elevation to your origin point.&amp;nbsp; You get an 'exact' measure of the distance and the coordinates, relative to the origin.&amp;nbsp; If the distance is short enough you could confirm it with a tape measure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the second case, you measure along a slope... now think about it... you aren't actually measuring the distance along the slope since you are generalizing the surface by taking a line 'parallel' the surface between 2 points.&amp;nbsp; How realistic is that assumption?&amp;nbsp; Most people don't give a beaver dam, they just think... cool ... its more accurate.&amp;nbsp; sorry, I can think of all kinds of surfaces where that assumption is just plain wrong. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Summary... (finally)&amp;nbsp; I prefer that the distance between two points is 2D as is the determination of their coordinates.&amp;nbsp; I then can make the overt statement/assumption that the elevation values between those two points can be used to "estimate" the slope length...aka distance between the 2 points... and I am confident that the locations are the same.&amp;nbsp; Now you say, but I need a distance along the slope of 100 m and I am getting 120 m.&amp;nbsp; So you cleverly do the math and come up with a new location...of course you now have to deal with the fact that you again have&amp;nbsp; an "estimate" and the only thing that you can be sure of is the 2D location since the elevation at your new point may not be representative of the slope you estimated from your first guess.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Head hurt?&amp;nbsp; good, stick with 2D distance and known coordinates, estimate 3D distance with your assumptions of the intervening terrain between them.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Feb 2016 00:12:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538763#M3223</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2016-02-23T00:12:28Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538764#M3224</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It would be nice if there there were additional methods for 3D measurements. All methods are 2D on the polyline geometry. There is the segmentAlongLine method that mentions measures, so I was hopeful that converting the geometry to Polyline ZM would allow for extracting a sub-segment and use the lastPoint of the polyline to get the point. In a previous thread I published a snippet to convert a PolylineZ to PolylineZM and assign the 3D length as M value:&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.esri.com/message/516789#comment-516789" title="https://community.esri.com/message/516789#comment-516789" target="_blank"&gt;https://community.esri.com/message/516789#comment-516789&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That turned out to be wrong. So I used the snippet and shaped it a little bit to create a &lt;EM&gt;positionAlongLine3D&lt;/EM&gt; function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; import arcpy
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.env.overwriteOutput = True
&amp;nbsp;&amp;nbsp;&amp;nbsp; sr = arcpy.SpatialReference(28992)
&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_coords = [[[0, 0, 0], [1000, 0, 0], [1000, 1000, 0], [0, 1000, 0], [0, 0, 0]],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [[2000, 0, 0], [3000, 0, 1000], [3000, 1000, 2000], [2000, 1000, 3000], [2000, 0, 4000]]]
&amp;nbsp;&amp;nbsp;&amp;nbsp; lines = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; points = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; lines_m = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; points_m = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; points_ok = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; for feature in lst_coords:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polyline = arcpy.Polyline(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Array([arcpy.Point(*coords) for coords in feature]), sr, True, False)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lines.append(polyline)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; segment = polyline.segmentAlongLine(0, 2500, False)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; points.append(arcpy.PointGeometry(segment.lastPoint, sr, True, False))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polyline_zm = CreateZAwareFeature(polyline, sr)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lines_m.append(polyline_zm)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; segment_m = polyline_zm.segmentAlongLine(0, 2500, False)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; points_m.append(arcpy.PointGeometry(segment_m.lastPoint, sr, True, True))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt_ok = positionAlongLine3D(polyline, 2500)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; points_ok.append(pnt_ok)

&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CopyFeatures_management(lines, r'C:\GeoNet\Query3DpointAndDistance\test.gdb\lines')
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CopyFeatures_management(points, r'C:\GeoNet\Query3DpointAndDistance\test.gdb\points')
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CopyFeatures_management(lines_m, r'C:\GeoNet\Query3DpointAndDistance\test.gdb\lines_m')
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CopyFeatures_management(points_m, r'C:\GeoNet\Query3DpointAndDistance\test.gdb\points_m')
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CopyFeatures_management(points_ok, r'C:\GeoNet\Query3DpointAndDistance\test.gdb\points_ok')

def positionAlongLine3D(polyline_z, dist):
&amp;nbsp;&amp;nbsp;&amp;nbsp; length = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; if dist &amp;lt;= 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return arcpy.PointGeometry(polyline_z.firstPoint, polyline_z.spatialReference, True)
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif dist &amp;gt;= polyline_z.length:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return arcpy.PointGeometry(polyline_z.lastPoint, polyline_z.spatialReference, True)
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for part in polyline_z:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for pnt in part:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if cnt == 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt_prev = arcpy.Point(pnt.X, pnt.Y, pnt.Z)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length += get3DLength(pnt, pnt_prev)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if length &amp;gt; dist:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1 = dist - prev_length
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; seg_length = length - prev_length
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; frac = d1 / seg_length
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; segment = arcpy.Polyline(arcpy.Array([pnt_prev, pnt]), polyline_z.spatialReference)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt_3d = segment.positionAlongLine(frac, True)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; z = (1-frac) * pnt_prev.Z + frac * pnt.Z
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pntz = arcpy.Point(pnt_3d.firstPoint.X, pnt_3d.firstPoint.Y, z)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return arcpy.PointGeometry(pntz, polyline_z.spatialReference, True)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt += 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt_prev = pnt
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_length = length

def CreateZAwareFeature(polyline_z, sr):
&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_poly_zm = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; length = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; for part in polyline_z:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; part_zm = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for pnt in part:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if cnt == 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt_prev = arcpy.Point(pnt.X, pnt.Y, pnt.Z)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length += get3DLength(pnt, pnt_prev)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt_zm = arcpy.Point(pnt.X, pnt.Y, pnt.Z, length)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; part_zm.append(pnt_zm)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt_prev = arcpy.Point(pnt.X, pnt.Y, pnt.Z)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt += 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lst_poly_zm.append(part_zm)
&amp;nbsp;&amp;nbsp;&amp;nbsp; polyline_zm = arcpy.Polyline(arcpy.Array(lst_poly_zm), sr, True, True)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return polyline_zm

def get3DLength(pnt1, pnt2):
&amp;nbsp;&amp;nbsp;&amp;nbsp; return math.sqrt((pnt1.X - pnt2.X)**2 + (pnt1.Y - pnt2.Y)**2 + (pnt1.Z - pnt2.Z)**2)

if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So the script creates two lines, the first is 2D (no Z) and the second has the same shape but the sides have an angle of 45° in Z direction, which mean that they are root(2) longer as shown in the field Length3D:&lt;/P&gt;&lt;P&gt;&lt;IMG class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/187199_pastedImage_3.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P&gt;If you look at the lines in 2D they look the same, but the (3D) length isn't:&lt;/P&gt;&lt;P&gt;&lt;IMG class="image-2 jive-image" src="https://community.esri.com/legacyfs/online/187200_pastedImage_4.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P&gt;When you want to get the point at a distance of 2500m from the start in 3D the result should be:&lt;/P&gt;&lt;P&gt;&lt;IMG class="image-3 jive-image" src="https://community.esri.com/legacyfs/online/187201_pastedImage_5.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P&gt;... or looking at it in 3D:&lt;/P&gt;&lt;P&gt;&lt;IMG class="jive-image image-4" src="https://community.esri.com/legacyfs/online/187202_pastedImage_6.png" style="max-width: 1200px; max-height: 900px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;The alternative would be to use dynamic segmentation on the M-aware polylines.&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 23:22:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538764#M3224</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-11T23:22:40Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538765#M3225</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nice Xander... and given a coordinate from an origin you could then return the 2D and 3D distance in the table... with the implicit, but oft ignored assumption, that the slope along the line from start to destination is representative of the underlying terrain.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My beef is that some think a 3D distance/length is more accurate than 2D... it isn't, think of a cliff, even its slope and hence length with get averaged it you measure on either side of it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On a similar vein, people have no problem understanding that Manhatten distance might be a better representation of distance on a rectilinear network, or network distance for that of less geometric configurations.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Feb 2016 04:30:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538765#M3225</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2016-02-23T04:30:54Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538766#M3226</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I just added an idea on the idea site (since it is not yet possible on GeoNet) to request support for 3D and M value on ArcPy geometries:&lt;/P&gt;&lt;P&gt;&lt;A href="http://ideas.arcgis.com/ideaView?id=087E0000000kBrIIAU" title="http://ideas.arcgis.com/ideaView?id=087E0000000kBrIIAU"&gt;ArcGIS Idea - Support for 3D methods and M values on ArcPy geometries&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please promote if you think this is a good idea.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 11:46:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538766#M3226</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2016-02-24T11:46:24Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538767#M3227</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ive created an ArcMap add-in with the .NET sdk to construct points along a 3D polyline using the 3d distance. In arcobjects this is exposed through the &lt;A href="http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//002m0000010p000000"&gt;ICurve3D&lt;/A&gt; interface. The add-in can be found on ArcGIS.com as &lt;A href="http://www.arcgis.com/home/item.html?id=9416fbdf13474923b462567e750417df"&gt;Construct points along a 3D line&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;An enhancement has been entered to update construct points for a future release. This also applies to Pro and the Pro SDK.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Feb 2016 22:49:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538767#M3227</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2016-02-24T22:49:52Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538768#M3228</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Sean - this addin is exactly what I need (I need to put a 5km marker for every 5km travelled on a trail). Is there a way to do this in Pro now - or is there a Pro Add In?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Feb 2019 02:46:05 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538768#M3228</guid>
      <dc:creator>DavidEastman</dc:creator>
      <dc:date>2019-02-14T02:46:05Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538769#M3229</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Dave,&lt;/P&gt;&lt;P&gt;Pro's 'construct points along a line' is still only 2D distance. A 3D distance option is on the todo list.&lt;/P&gt;&lt;P&gt;I'll probably end up porting the ArcMap add-in very soon though to cover the gap.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Feb 2019 17:52:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538769#M3229</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2019-02-14T17:52:49Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538770#M3230</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Sean, thanks for your speedy reply. having the tool native would be awesome! We've been spruiking how acurate these race maps are (compared to the web based options), then I discovered this little chestnut!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RE porting&amp;nbsp;the addin across - I'm dreading having to go back into ArcMap. When you say 'very soon' is that&amp;nbsp;days, weeks, or months sort of timeline?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Feb 2019 23:08:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538770#M3230</guid>
      <dc:creator>DavidEastman</dc:creator>
      <dc:date>2019-02-14T23:08:53Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538771#M3231</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Dave, I'll try and get the Pro sample out by the end of the week&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Feb 2019 16:36:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538771#M3231</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2019-02-19T16:36:28Z</dc:date>
    </item>
    <item>
      <title>Re: Construct Points on polyline at 3d distance</title>
      <link>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538772#M3232</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey mate - all good . I’ve done what I needed to do in ArcMap. The addin worked a treat, so no rush from me. Will be good to have it in Pro when you can get to it though, as this will keep coming up.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;David Eastman&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;National Security Industry Specialist&lt;/P&gt;&lt;P&gt;Esri Australia&lt;/P&gt;&lt;P&gt;0400 731 168&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Feb 2019 18:12:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/3d-questions/construct-points-on-polyline-at-3d-distance/m-p/538772#M3232</guid>
      <dc:creator>DavidEastman</dc:creator>
      <dc:date>2019-02-19T18:12:40Z</dc:date>
    </item>
  </channel>
</rss>

