I can't use the Bearing Distance to Line tool because I only have one point with a known location. Each additional point will be created sequentially by taking the bearing and distance from the last one. There has to be a way to do this in ArcMap 10.5 right?
enter a traverse... and create a traverse... rings a bell
If you want to script this, the pointFromAngleAndDistance method of the ArcPy Geometry—Help | ArcGIS Desktop classes can be used.
Depending on the amount of data you have you should either choose doing this manually in an edit session as Dan suggests of doing this with some python. To give you some additional help on using the Python option see the script below:
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">main</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">import</SPAN> random <SPAN class="keyword token">import</SPAN> arcpy <SPAN class="comment token"># settings input and output data</SPAN> tbl <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\BearingDistance\data.gdb\BrearingDistanceData'</SPAN> fld_bear <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Bearing'</SPAN> fld_dist <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Distance'</SPAN> fc_out <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\BearingDistance\data.gdb\BrearingDistanceLine'</SPAN> <SPAN class="comment token"># start point and projected coordinate system</SPAN> start_x <SPAN class="operator token">=</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">8413550</SPAN> start_y <SPAN class="operator token">=</SPAN> <SPAN class="number token">696897</SPAN> sr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="number token">3857</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># create start point</SPAN> pntg <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>PointGeometry<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Point<SPAN class="punctuation token">(</SPAN>start_x<SPAN class="punctuation token">,</SPAN> start_y<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># create sequential points</SPAN> points <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>pntg<SPAN class="punctuation token">.</SPAN>firstPoint<SPAN class="punctuation token">]</SPAN> pntg_prev <SPAN class="operator token">=</SPAN> pntg <SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>tbl<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN>fld_bear<SPAN class="punctuation token">,</SPAN> fld_dist<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> curs<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> curs<SPAN class="punctuation token">:</SPAN> angle <SPAN class="operator token">=</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> distance <SPAN class="operator token">=</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> pntg_new <SPAN class="operator token">=</SPAN> pntg_prev<SPAN class="punctuation token">.</SPAN>pointFromAngleAndDistance<SPAN class="punctuation token">(</SPAN>angle<SPAN class="punctuation token">,</SPAN> distance<SPAN class="punctuation token">)</SPAN> pntg_prev <SPAN class="operator token">=</SPAN> pntg_new points<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>pntg_new<SPAN class="punctuation token">.</SPAN>firstPoint<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># create polyline and store result</SPAN> polyline <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Polyline<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>Array<SPAN class="punctuation token">(</SPAN>points<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>CopyFeatures_management<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>polyline<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> fc_out<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN> main<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
It takes a table with two fields (Bearing and Distance, see settings on line 7 and 😎 and an initial point (see lines 12 and 13) and traces a line. See the result below:
To create the table data I used a random function. See code below:
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">main</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">import</SPAN> random <SPAN class="keyword token">import</SPAN> arcpy tbl <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\BearingDistance\data.gdb\BrearingDistanceData'</SPAN> fld_bear <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Bearing'</SPAN> fld_dist <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Distance'</SPAN> <SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>tbl<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN>fld_bear<SPAN class="punctuation token">,</SPAN> fld_dist<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> curs<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">for</SPAN> i <SPAN class="keyword token">in</SPAN> range<SPAN class="punctuation token">(</SPAN><SPAN class="number token">100</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> sector <SPAN class="operator token">=</SPAN> divmod<SPAN class="punctuation token">(</SPAN>i<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">25</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="comment token"># 0 to 3</SPAN> angle <SPAN class="operator token">=</SPAN> random<SPAN class="punctuation token">.</SPAN>randrange<SPAN class="punctuation token">(</SPAN>sector <SPAN class="operator token">*</SPAN> <SPAN class="number token">90</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN>sector<SPAN class="operator token">+</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">*</SPAN><SPAN class="number token">90</SPAN><SPAN class="punctuation token">)</SPAN> distance <SPAN class="operator token">=</SPAN> random<SPAN class="punctuation token">.</SPAN>randrange<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1000</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">1050</SPAN><SPAN class="operator token">+</SPAN>i<SPAN class="operator token">*</SPAN><SPAN class="number token">50</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN> i<SPAN class="punctuation token">,</SPAN> sector<SPAN class="punctuation token">,</SPAN> angle<SPAN class="punctuation token">,</SPAN> distance curs<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>angle<SPAN class="punctuation token">,</SPAN> distance<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN> main<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
If you have any questions, just post them back here.
A traverse lesson.... might also do it
Sounds a bit like COGO (Coordinate Geometry). There is a tool available with Standard or Advanced license. An overview of COGO
When surveyors or civil engineers need to record the location of human-made features, such as land parcels, road centerlines, utility easements containing transmission lines, and oil and gas leases, they typically provide the results on a survey plan that describes the location of features relative to each other.
Randy... just waiting until the OP responds https://community.esri.com/message/743572-re-i-have-a-lat-and-long-starting-point-and-want-to-create-a-polyline-with-vertices-at-distances-and-bearings-sequentially-from-one-to-another?commentID=743572#comment-743572
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.