Is there a way to generate a matrix of distances between points like the way one could do with Hawths Analysis tool using ArcGIS 9.3? Hawths tool is not supported in ArcGIS 10.x. I am using ArcGIS 10.5
Details of einsum (as e_dist) and art.frmt_ in blogs. If a featureclass is needed, then two more columns (X and Y) can be inserted
<SPAN class="comment token"># ---- create 10 random points, 'a' 10 and produce a distance matrix ----</SPAN> <SPAN class="comment token">#</SPAN> a <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>random<SPAN class="punctuation token">.</SPAN>randint<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> size<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> b <SPAN class="operator token">=</SPAN> a<SPAN class="punctuation token">.</SPAN>reshape<SPAN class="punctuation token">(</SPAN>np<SPAN class="punctuation token">.</SPAN>prod<SPAN class="punctuation token">(</SPAN>a<SPAN class="punctuation token">.</SPAN>shape<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="operator 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> a<SPAN class="punctuation token">.</SPAN>shape<SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># magic 1</SPAN> diff <SPAN class="operator token">=</SPAN> a <SPAN class="operator token">-</SPAN> b dist_arr <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>einsum<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'ijk,ijk->ij'</SPAN><SPAN class="punctuation token">,</SPAN> diff<SPAN class="punctuation token">,</SPAN> diff<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># magic 2, einsum distance</SPAN> dist_arr <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>sqrt<SPAN class="punctuation token">(</SPAN>dist_arr<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>squeeze<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#</SPAN> <SPAN class="comment token"># ---- also available in scipy as cdist ----</SPAN> <SPAN class="comment token">#</SPAN> art<SPAN class="punctuation token">.</SPAN>frmt_<SPAN class="punctuation token">(</SPAN>dist_arr<SPAN class="punctuation token">,</SPAN> deci<SPAN class="operator token">=</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">,</SPAN> title<SPAN class="operator token">=</SPAN><SPAN class="string token">'Distance matrix...'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#</SPAN> Distance matrix<SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN> <SPAN class="operator token">-</SPAN>shape <SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> ndim <SPAN class="number token">3</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">1.41</SPAN> <SPAN class="number token">5.10</SPAN> <SPAN class="number token">7.62</SPAN> <SPAN class="number token">8.60</SPAN> <SPAN class="number token">8.49</SPAN> <SPAN class="number token">5.39</SPAN> <SPAN class="number token">2.00</SPAN> <SPAN class="number token">6.08</SPAN> <SPAN class="number token">5.00</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">1.41</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">6.00</SPAN> <SPAN class="number token">8.94</SPAN> <SPAN class="number token">10.00</SPAN> <SPAN class="number token">9.90</SPAN> <SPAN class="number token">6.71</SPAN> <SPAN class="number token">3.16</SPAN> <SPAN class="number token">7.00</SPAN> <SPAN class="number token">6.08</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">5.10</SPAN> <SPAN class="number token">6.00</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">8.25</SPAN> <SPAN class="number token">6.32</SPAN> <SPAN class="number token">7.07</SPAN> <SPAN class="number token">6.71</SPAN> <SPAN class="number token">5.83</SPAN> <SPAN class="number token">1.00</SPAN> <SPAN class="number token">1.00</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">7.62</SPAN> <SPAN class="number token">8.94</SPAN> <SPAN class="number token">8.25</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">4.47</SPAN> <SPAN class="number token">3.16</SPAN> <SPAN class="number token">2.24</SPAN> <SPAN class="number token">5.83</SPAN> <SPAN class="number token">8.54</SPAN> <SPAN class="number token">7.28</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">8.60</SPAN> <SPAN class="number token">10.00</SPAN> <SPAN class="number token">6.32</SPAN> <SPAN class="number token">4.47</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">1.41</SPAN> <SPAN class="number token">5.00</SPAN> <SPAN class="number token">7.62</SPAN> <SPAN class="number token">6.08</SPAN> <SPAN class="number token">5.39</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">8.49</SPAN> <SPAN class="number token">9.90</SPAN> <SPAN class="number token">7.07</SPAN> <SPAN class="number token">3.16</SPAN> <SPAN class="number token">1.41</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">4.12</SPAN> <SPAN class="number token">7.21</SPAN> <SPAN class="number token">7.00</SPAN> <SPAN class="number token">6.08</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">5.39</SPAN> <SPAN class="number token">6.71</SPAN> <SPAN class="number token">6.71</SPAN> <SPAN class="number token">2.24</SPAN> <SPAN class="number token">5.00</SPAN> <SPAN class="number token">4.12</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">3.61</SPAN> <SPAN class="number token">7.21</SPAN> <SPAN class="number token">5.83</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">2.00</SPAN> <SPAN class="number token">3.16</SPAN> <SPAN class="number token">5.83</SPAN> <SPAN class="number token">5.83</SPAN> <SPAN class="number token">7.62</SPAN> <SPAN class="number token">7.21</SPAN> <SPAN class="number token">3.61</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">6.71</SPAN> <SPAN class="number token">5.39</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">6.08</SPAN> <SPAN class="number token">7.00</SPAN> <SPAN class="number token">1.00</SPAN> <SPAN class="number token">8.54</SPAN> <SPAN class="number token">6.08</SPAN> <SPAN class="number token">7.00</SPAN> <SPAN class="number token">7.21</SPAN> <SPAN class="number token">6.71</SPAN> <SPAN class="number token">0.00</SPAN> <SPAN class="number token">1.41</SPAN> <SPAN class="punctuation token">.</SPAN> <SPAN class="number token">5.00</SPAN> <SPAN class="number token">6.08</SPAN> <SPAN class="number token">1.00</SPAN> <SPAN class="number token">7.28</SPAN> <SPAN class="number token">5.39</SPAN> <SPAN class="number token">6.08</SPAN> <SPAN class="number token">5.83</SPAN> <SPAN class="number token">5.39</SPAN> <SPAN class="number token">1.41</SPAN> <SPAN class="number token">0.00</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>
The featureclass can be constructed as follows... done verbosely
<SPAN class="comment token"># ---- construct a data type so that the data can be sent to a featureclass ----</SPAN> dt0 <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'X'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'<f8'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Y'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'<f8'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN> dt1 <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'p{}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>i<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'<f8'</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> i <SPAN class="keyword token">in</SPAN> range<SPAN class="punctuation token">(</SPAN>len<SPAN class="punctuation token">(</SPAN>a<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN> dt <SPAN class="operator token">=</SPAN> dt0 <SPAN class="operator token">+</SPAN> dt1 <SPAN class="comment token">#</SPAN> b <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>c_<SPAN class="punctuation token">[</SPAN>a<SPAN class="punctuation token">,</SPAN> dist_arr<SPAN class="punctuation token">]</SPAN> <SPAN class="comment token"># combine coordinates and data</SPAN> out <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>zeros<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>len<SPAN class="punctuation token">(</SPAN>b<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> dtype<SPAN class="operator token">=</SPAN>dt<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># prepare a structured array to fill</SPAN> names <SPAN class="operator token">=</SPAN> out<SPAN class="punctuation token">.</SPAN>dtype<SPAN class="punctuation token">.</SPAN>names <SPAN class="keyword token">for</SPAN> i <SPAN class="keyword token">in</SPAN> range<SPAN class="punctuation token">(</SPAN>b<SPAN class="punctuation token">.</SPAN>shape<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> out<SPAN class="punctuation token">[</SPAN>names<SPAN class="punctuation token">[</SPAN>i<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> b<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">,</SPAN> i<SPAN class="punctuation token">]</SPAN> <SPAN class="comment token"># ---- off to a shapefile or featureclass</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>NumPyArrayToFeatureClass<SPAN class="punctuation token">(</SPAN>out<SPAN class="punctuation token">,</SPAN> r<SPAN class="string token">'c:\temp\test.shp'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'X'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Y'</SPAN><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>
Of course, helper functions (and a module with these) make these steps greatly reduced.
See below the result of the script posted further down (after pasting the data into Excel):
Code used:
<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> arcpy <SPAN class="keyword token">import</SPAN> random arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>overwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN> <SPAN class="comment token"># create a featureclass with 30 random points</SPAN> fc <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\NearMatrix\data.gdb\points'</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> x_range <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">8418055</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">8408208</SPAN><SPAN class="punctuation token">]</SPAN> y_range <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="number token">689582</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">705039</SPAN><SPAN class="punctuation token">]</SPAN> num_points <SPAN class="operator token">=</SPAN> <SPAN class="number token">30</SPAN> feats <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">for</SPAN> cnt <SPAN class="keyword token">in</SPAN> range<SPAN class="punctuation token">(</SPAN><SPAN class="number token">30</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> x <SPAN class="operator token">=</SPAN> random<SPAN class="punctuation token">.</SPAN>randrange<SPAN class="punctuation token">(</SPAN>x_range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> x_range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> y <SPAN class="operator token">=</SPAN> random<SPAN class="punctuation token">.</SPAN>randrange<SPAN class="punctuation token">(</SPAN>y_range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> y_range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</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>x<SPAN class="punctuation token">,</SPAN> y<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN> feats<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>pntg<SPAN class="punctuation token">)</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>CopyFeatures_management<SPAN class="punctuation token">(</SPAN>feats<SPAN class="punctuation token">,</SPAN> fc<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># analyze points and create matrix</SPAN> flds <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">'OID@'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'SHAPE@'</SPAN><SPAN class="punctuation token">)</SPAN> dct_pnts <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN>r<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN> r<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">for</SPAN> r <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>fc<SPAN class="punctuation token">,</SPAN> flds<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">}</SPAN> dct_res <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="punctuation token">}</SPAN> oids <SPAN class="operator token">=</SPAN> sorted<SPAN class="punctuation token">(</SPAN>dct_pnts<SPAN class="punctuation token">.</SPAN>keys<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> oid_from <SPAN class="keyword token">in</SPAN> oids<SPAN class="punctuation token">:</SPAN> dct_i <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="punctuation token">}</SPAN> <SPAN class="keyword token">for</SPAN> oid_to <SPAN class="keyword token">in</SPAN> oids<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">if</SPAN> oid_from <SPAN class="operator token">==</SPAN> oid_to<SPAN class="punctuation token">:</SPAN> dist <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN> <SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN> dist <SPAN class="operator token">=</SPAN> dct_pnts<SPAN class="punctuation token">[</SPAN>oid_from<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN>distanceTo<SPAN class="punctuation token">(</SPAN>dct_pnts<SPAN class="punctuation token">[</SPAN>oid_to<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> dct_i<SPAN class="punctuation token">[</SPAN>oid_to<SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> dist dct_res<SPAN class="punctuation token">[</SPAN>oid_from<SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> dct_i <SPAN class="comment token"># print the result</SPAN> <SPAN class="keyword token">print</SPAN> <SPAN class="string token">'oid\t'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'\t'</SPAN><SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>str<SPAN class="punctuation token">(</SPAN>a<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> a <SPAN class="keyword token">in</SPAN> oids<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> oid <SPAN class="keyword token">in</SPAN> oids<SPAN class="punctuation token">:</SPAN> dct_i <SPAN class="operator token">=</SPAN> dct_res<SPAN class="punctuation token">[</SPAN>oid<SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">print</SPAN> oid<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'\t'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'\t'</SPAN><SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>str<SPAN class="punctuation token">(</SPAN>dct_i<SPAN class="punctuation token">[</SPAN>a<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>replace<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'.'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">','</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> a <SPAN class="keyword token">in</SPAN> oids<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></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>
In this case the part until line 20 is to create a featureclass with 30 random points in it (using a projected coordinate system).
Lines 22 to 36 are used to loop through the points and determine the distance between them. In this case the distance between each point pair is calculated twice (both directions) and could be enhanced.
Lines 38 to 42 is used to print the data with TAB as separator and in my case line 42 contains an additional ".replace('.', ',')" to change the decimal sign from point to comma.
The printed code was copied from the intermediate window and pasted in Excel and that's basically all there is to it.
Or if you lack the license level Generate Near Table for points
Perhaps Generate Near Table—Help | ArcGIS Desktop could work followed by Pivot Table—Help | ArcGIS Desktop (or do this in Excel).
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.