Let us do it python school... because you can do it directly as a spreadsheet or you can use Numpyarrayto featureclass or the insertcursor approach to produce your geometries after the calculations are done. Verbose description.
Do it in reverse first
<SPAN class="keyword token">import</SPAN> numpy <SPAN class="keyword token">as</SPAN> np np<SPAN class="punctuation token">.</SPAN>set_printoptions<SPAN class="punctuation token">(</SPAN>edgeitems<SPAN class="operator token">=</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">,</SPAN>linewidth<SPAN class="operator token">=</SPAN><SPAN class="number token">80</SPAN><SPAN class="punctuation token">,</SPAN>precision<SPAN class="operator token">=</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">,</SPAN>suppress<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">,</SPAN>threshold<SPAN class="operator token">=</SPAN><SPAN class="number token">10</SPAN><SPAN class="punctuation token">)</SPAN> cent <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>array<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>dtype<SPAN class="operator token">=</SPAN><SPAN class="string token">"float64"</SPAN><SPAN class="punctuation token">)</SPAN> pnts <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>array<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">3</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">3</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>dtype<SPAN class="operator token">=</SPAN><SPAN class="string token">"float64"</SPAN><SPAN class="punctuation token">)</SPAN> Xs <SPAN class="operator token">=</SPAN> pnts<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> Ys <SPAN class="operator token">=</SPAN> pnts<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> diff <SPAN class="operator token">=</SPAN> pnts<SPAN class="operator token">-</SPAN>cent angles<SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>degrees<SPAN class="punctuation token">(</SPAN>np<SPAN class="punctuation token">.</SPAN>arctan2<SPAN class="punctuation token">(</SPAN>diff<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>diff<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> dist <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>hypot<SPAN class="punctuation token">(</SPAN>diff<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>diff<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> data <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>vstack<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>Xs<SPAN class="punctuation token">,</SPAN>Ys<SPAN class="punctuation token">,</SPAN>angles<SPAN class="punctuation token">,</SPAN>dist<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>T <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Origin (0,0)\n {:<10s} {:<10s} {:<10s} {:<10s}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Xs"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Ys"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"angles"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"dist"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"{}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>data<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>
Origin (0,0)
Xs Ys angles dist
[[ 1. 1. 45. 1.4142]
[ 1. 2. 63.4349 2.2361]
[ -3. 3. 135. 4.2426]
[ -4. -4. -135. 5.6569]
[ 5. -5. -45. 7.0711]]
Now lets do it forward
<SPAN class="comment token"># Now only distance and angle are known. Calculate the point coordinates from distance and angle</SPAN> angles<SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>degrees<SPAN class="punctuation token">(</SPAN>np<SPAN class="punctuation token">.</SPAN>arctan2<SPAN class="punctuation token">(</SPAN>diff<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>diff<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> dist <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>hypot<SPAN class="punctuation token">(</SPAN>diff<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>diff<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> rads <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>deg2rad<SPAN class="punctuation token">(</SPAN>angles<SPAN class="punctuation token">)</SPAN> sines <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>sin<SPAN class="punctuation token">(</SPAN>rads<SPAN class="punctuation token">)</SPAN> coses <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>cos<SPAN class="punctuation token">(</SPAN>rads<SPAN class="punctuation token">)</SPAN> Xn <SPAN class="operator token">=</SPAN> sines <SPAN class="operator token">*</SPAN> dist Yn <SPAN class="operator token">=</SPAN> coses <SPAN class="operator token">*</SPAN> dist data <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>vstack<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>angles<SPAN class="punctuation token">,</SPAN>dist<SPAN class="punctuation token">,</SPAN>Xs<SPAN class="punctuation token">,</SPAN>Ys<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>T <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Origin (0,0)\n {:<10s} {:<10s} {:<10s} {:<10s}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"angles"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"dist"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Xn"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Yn"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"{}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>data<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>
angles dist Xn Yn
[[ 45. 1.4142 1. 1. ]
[ 63.4349 2.2361 1. 2. ]
[ 135. 4.2426 -3. 3. ]
[-135. 5.6569 -4. -4. ]
[ -45. 7.0711 5. -5. ]]
if you can assemble the origin point and all the destination points together into one file, you can then steal the code from the following line to generate your polylines or simply use the toolbox to generate desire lines connect the destinations to the origins
http://www.arcgis.com/home/item.html?id=6ce9db93533345e49350d30a07fc913a
Or there is Bearing Distance To Line—Help | ArcGIS for Desktop which can be use on or better still
XY To Line—Help | ArcGIS for Desktop
generate this....
final from Xc,Yc,Xs,Ys
[[ 0. 0. 1. 1.]
[ 0. 0. 1. 2.]
[ 0. 0. -3. 3.]
[ 0. 0. -4. -4.]
[ 0. 0. 5. -5.]]
from this...
N <SPAN class="operator token">=</SPAN> len<SPAN class="punctuation token">(</SPAN>Xs<SPAN class="punctuation token">)</SPAN> Xc <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>empty<SPAN class="punctuation token">(</SPAN>N<SPAN class="punctuation token">)</SPAN> Xc<SPAN class="punctuation token">.</SPAN>fill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># coincidently 0,0 is used as the center</SPAN> Yc <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>empty<SPAN class="punctuation token">(</SPAN>N<SPAN class="punctuation token">)</SPAN> Yc<SPAN class="punctuation token">.</SPAN>fill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">)</SPAN> pairs <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>array<SPAN class="punctuation token">(</SPAN>list<SPAN class="punctuation token">(</SPAN>zip<SPAN class="punctuation token">(</SPAN>Xc<SPAN class="punctuation token">,</SPAN>Yc<SPAN class="punctuation token">,</SPAN>Xs<SPAN class="punctuation token">,</SPAN>Ys<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"final from Xc,Yc,Xs,Ys\n{}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>pairs<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>
If you comfortable with python you could do it with python Writing geometries—Help | ArcGIS for Desktop
If your not comfortable with code see this thread Moving a point by distance and bearing
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.