I need to determine the shortest distance between each point within a single feature class. Near Analysis would have worked perfectly, but unfortunately you need to have an Advanced ArcGIS Licence and I only have a Standard Licence.
I found the following code on Stack Exchange written by PolyGeoâ:
<SPAN class="kwd" style="color: #00008b;">import</SPAN><SPAN class="pln" style="color: #2e3133;"> arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="pln" style="color: #2e3133;">math
</SPAN><SPAN class="com" style="color: #848a91;"># Set variables for input point feature classes and output table</SPAN><SPAN class="pln" style="color: #2e3133;">
ptFC1 </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="str" style="color: #6b291b;">"C:/temp/test.gdb/PointFC1"</SPAN><SPAN class="pln" style="color: #2e3133;">
ptFC2 </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="str" style="color: #6b291b;">"C:/temp/test.gdb/PointFC2"</SPAN><SPAN class="pln" style="color: #2e3133;">
outGDB </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="str" style="color: #6b291b;">"C:/temp/test.gdb"</SPAN><SPAN class="pln" style="color: #2e3133;">
outTableName </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="str" style="color: #6b291b;">"outTable"</SPAN><SPAN class="pln" style="color: #2e3133;">
outTable </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> outGDB </SPAN><SPAN class="pun" style="color: #2e3133;">+</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="str" style="color: #6b291b;">"/"</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="pun" style="color: #2e3133;">+</SPAN><SPAN class="pln" style="color: #2e3133;"> outTableName
arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="pln" style="color: #2e3133;">env</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="pln" style="color: #2e3133;">overwriteOutput </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="kwd" style="color: #00008b;">True</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="com" style="color: #848a91;"># Create empty output table</SPAN><SPAN class="pln" style="color: #2e3133;">
arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="typ" style="color: #2b91af;">CreateTable_management</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">outGDB</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="pln" style="color: #2e3133;">outTableName</SPAN><SPAN class="pun" style="color: #2e3133;">)</SPAN><SPAN class="pln" style="color: #2e3133;">
arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="typ" style="color: #2b91af;">AddField_management</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">outTable</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"INPUT_FID"</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"LONG"</SPAN><SPAN class="pun" style="color: #2e3133;">)</SPAN><SPAN class="pln" style="color: #2e3133;">
arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="typ" style="color: #2b91af;">AddField_management</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">outTable</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"NEAR_FID"</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"LONG"</SPAN><SPAN class="pun" style="color: #2e3133;">)</SPAN><SPAN class="pln" style="color: #2e3133;">
arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="typ" style="color: #2b91af;">AddField_management</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">outTable</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"DISTANCE"</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"DOUBLE"</SPAN><SPAN class="pun" style="color: #2e3133;">)</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="com" style="color: #848a91;"># Create and populate two dictionaries with X and Y coordinates for each</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="com" style="color: #848a91;"># OBJECTID in second feature class using a SearchCursor</SPAN><SPAN class="pln" style="color: #2e3133;">
ptFC2XCoordDict </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="pun" style="color: #2e3133;">{}</SPAN><SPAN class="pln" style="color: #2e3133;">
ptFC2YCoordDict </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="pun" style="color: #2e3133;">{}</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="kwd" style="color: #00008b;">with</SPAN><SPAN class="pln" style="color: #2e3133;"> arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="pln" style="color: #2e3133;">da</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="typ" style="color: #2b91af;">SearchCursor</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">ptFC2</SPAN><SPAN class="pun" style="color: #2e3133;">,[</SPAN><SPAN class="str" style="color: #6b291b;">"OBJECTID"</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"SHAPE@XY"</SPAN><SPAN class="pun" style="color: #2e3133;">])</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="kwd" style="color: #00008b;">as</SPAN><SPAN class="pln" style="color: #2e3133;"> cursor</SPAN><SPAN class="pun" style="color: #2e3133;">:</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="kwd" style="color: #00008b;">for</SPAN><SPAN class="pln" style="color: #2e3133;"> row </SPAN><SPAN class="kwd" style="color: #00008b;">in</SPAN><SPAN class="pln" style="color: #2e3133;"> cursor</SPAN><SPAN class="pun" style="color: #2e3133;">:</SPAN><SPAN class="pln" style="color: #2e3133;">
ptFC2XCoordDict</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="pln" style="color: #2e3133;">row</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="lit" style="color: #6b291b;">0</SPAN><SPAN class="pun" style="color: #2e3133;">]]</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> row</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">][</SPAN><SPAN class="lit" style="color: #6b291b;">0</SPAN><SPAN class="pun" style="color: #2e3133;">]</SPAN><SPAN class="pln" style="color: #2e3133;">
ptFC2YCoordDict</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="pln" style="color: #2e3133;">row</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="lit" style="color: #6b291b;">0</SPAN><SPAN class="pun" style="color: #2e3133;">]]</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> row</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">][</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">]</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="com" style="color: #848a91;"># Open an InsertCursor ready to have rows written for each pair of OBJECTIDs</SPAN><SPAN class="pln" style="color: #2e3133;">
iCursor </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="pln" style="color: #2e3133;">da</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="typ" style="color: #2b91af;">InsertCursor</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">outTable</SPAN><SPAN class="pun" style="color: #2e3133;">,[</SPAN><SPAN class="str" style="color: #6b291b;">"INPUT_FID"</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"NEAR_FID"</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"DISTANCE"</SPAN><SPAN class="pun" style="color: #2e3133;">])</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="com" style="color: #848a91;"># Use a SearchCursor to read the rows (and X,Y coordinates) of the first</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="com" style="color: #848a91;"># feature class</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="kwd" style="color: #00008b;">with</SPAN><SPAN class="pln" style="color: #2e3133;"> arcpy</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="pln" style="color: #2e3133;">da</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="typ" style="color: #2b91af;">SearchCursor</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">ptFC1</SPAN><SPAN class="pun" style="color: #2e3133;">,[</SPAN><SPAN class="str" style="color: #6b291b;">"OBJECTID"</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="str" style="color: #6b291b;">"SHAPE@XY"</SPAN><SPAN class="pun" style="color: #2e3133;">])</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="kwd" style="color: #00008b;">as</SPAN><SPAN class="pln" style="color: #2e3133;"> cursor</SPAN><SPAN class="pun" style="color: #2e3133;">:</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="kwd" style="color: #00008b;">for</SPAN><SPAN class="pln" style="color: #2e3133;"> row </SPAN><SPAN class="kwd" style="color: #00008b;">in</SPAN><SPAN class="pln" style="color: #2e3133;"> cursor</SPAN><SPAN class="pun" style="color: #2e3133;">:</SPAN><SPAN class="pln" style="color: #2e3133;">
x1 </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> row</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">][</SPAN><SPAN class="lit" style="color: #6b291b;">0</SPAN><SPAN class="pun" style="color: #2e3133;">]</SPAN><SPAN class="pln" style="color: #2e3133;">
y1 </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> row</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">][</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">]</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="kwd" style="color: #00008b;">for</SPAN><SPAN class="pln" style="color: #2e3133;"> i </SPAN><SPAN class="kwd" style="color: #00008b;">in</SPAN><SPAN class="pln" style="color: #2e3133;"> range</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">len</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">ptFC2XCoordDict</SPAN><SPAN class="pun" style="color: #2e3133;">)):</SPAN><SPAN class="pln" style="color: #2e3133;">
x2 </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> ptFC2XCoordDict</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="pln" style="color: #2e3133;">i</SPAN><SPAN class="pun" style="color: #2e3133;">+</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">]</SPAN><SPAN class="pln" style="color: #2e3133;">
y2 </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> ptFC2YCoordDict</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="pln" style="color: #2e3133;">i</SPAN><SPAN class="pun" style="color: #2e3133;">+</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">]</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="com" style="color: #848a91;"># Prepare and insert the InsertCursor row</SPAN><SPAN class="pln" style="color: #2e3133;">
iRow </SPAN><SPAN class="pun" style="color: #2e3133;">=</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="pln" style="color: #2e3133;">row</SPAN><SPAN class="pun" style="color: #2e3133;">[</SPAN><SPAN class="lit" style="color: #6b291b;">0</SPAN><SPAN class="pun" style="color: #2e3133;">],</SPAN><SPAN class="pln" style="color: #2e3133;">i</SPAN><SPAN class="pun" style="color: #2e3133;">+</SPAN><SPAN class="lit" style="color: #6b291b;">1</SPAN><SPAN class="pun" style="color: #2e3133;">,</SPAN><SPAN class="pln" style="color: #2e3133;">math</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="pln" style="color: #2e3133;">sqrt</SPAN><SPAN class="pun" style="color: #2e3133;">((</SPAN><SPAN class="pln" style="color: #2e3133;">x2</SPAN><SPAN class="pun" style="color: #2e3133;">-</SPAN><SPAN class="pln" style="color: #2e3133;">x1</SPAN><SPAN class="pun" style="color: #2e3133;">)*(</SPAN><SPAN class="pln" style="color: #2e3133;">x2</SPAN><SPAN class="pun" style="color: #2e3133;">-</SPAN><SPAN class="pln" style="color: #2e3133;">x1</SPAN><SPAN class="pun" style="color: #2e3133;">)</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="pun" style="color: #2e3133;">+</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">y2</SPAN><SPAN class="pun" style="color: #2e3133;">-</SPAN><SPAN class="pln" style="color: #2e3133;">y1</SPAN><SPAN class="pun" style="color: #2e3133;">)*(</SPAN><SPAN class="pln" style="color: #2e3133;">y2</SPAN><SPAN class="pun" style="color: #2e3133;">-</SPAN><SPAN class="pln" style="color: #2e3133;">y1</SPAN><SPAN class="pun" style="color: #2e3133;">))]</SPAN><SPAN class="pln" style="color: #2e3133;">
iCursor</SPAN><SPAN class="pun" style="color: #2e3133;">.</SPAN><SPAN class="pln" style="color: #2e3133;">insertRow</SPAN><SPAN class="pun" style="color: #2e3133;">(</SPAN><SPAN class="pln" style="color: #2e3133;">iRow</SPAN><SPAN class="pun" style="color: #2e3133;">)</SPAN><SPAN class="pln" style="color: #2e3133;">
</SPAN><SPAN class="kwd" style="color: #00008b;">del</SPAN><SPAN class="pln" style="color: #2e3133;"> iCursor
</SPAN><SPAN class="kwd" style="color: #00008b;">print</SPAN><SPAN class="pln" style="color: #2e3133;"> </SPAN><SPAN class="str" style="color: #6b291b;">"Done!"</SPAN>The following reports the distance of the first point to the rest of the points:

I would like to amend the following to iterate through each point within the feature class to report the shortest distance between the points, greater than zero of course. Any advice in amending the following will be appreciated. I'm trying to use the results from this as a way of validating that none of the points are within 3m or less from each other and if there are the filtered list is processed further to move the points away from each other within bounding box for each point.