I am unable to solve a closest facility problem in ArcGIS Desktop 10.2.2 with ArcPy using the sample code provided in help documentation.
I get this error:
ERROR: A geoprocessing error occurred.
ERROR 001156: Failed on input OID 32768, could not write value '32768' to output field ORIG_FID
Failed to execute (FeatureClassToFeatureClass).
An error occured on line 27
A geoprocessing error occurred.
ERROR 001156: Failed on input OID 32768, could not write value '32768' to output field ORIG_FID
Failed to execute (FeatureClassToFeatureClass).
Failed to execute (FindClosestFacilities).
It seems to me this is a bug with field mapping that is occurring internally. Its obvious that ORIG_FID should be a long int and it actually is short int. That is why we are seeing this exception at 32768.
I am using the San Francisco network dataset available in ArcGIS tutorial data, with some randomly generated facilities (about 100,000) over the area.
This is the code that throws the error.
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">from</SPAN> arcpy <SPAN class="keyword token">import</SPAN> env
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># Check out the Network Analyst extension license</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Network"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Set environment settings</SPAN>
env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\arcgis\ArcTutor\Network Analyst\Tutorial\SanFrancisco.gdb'</SPAN>
env<SPAN class="punctuation token">.</SPAN>overwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
<SPAN class="comment token"># Set local variables</SPAN>
inNetworkDataset <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\arcgis\ArcTutor\Network Analyst\Tutorial\SanFrancisco.gdb\Transportation\Streets_ND'</SPAN>
inIncidents <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'D:\Sample data\sampledata.gdb\incident'</SPAN>
inFacilities <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'D:\Sample data\sampledata.gdb\manholes_sf'</SPAN>
outGeodatabase <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'D:\Sample data\sampledata.gdb'</SPAN>
<SPAN class="comment token">#outGeodatabase = "in_memory"</SPAN>
outRoutes <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Routes"</SPAN>
outDirections <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Directions"</SPAN>
outClosestFacilities <SPAN class="operator token">=</SPAN> <SPAN class="string token">"ClosestFacilities"</SPAN>
measurement_units <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Meters"</SPAN>
<SPAN class="comment token"># Run FindClosestFacilities. Choose to find only the closest facility.</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>na<SPAN class="punctuation token">.</SPAN>FindClosestFacilities<SPAN class="punctuation token">(</SPAN>inIncidents<SPAN class="punctuation token">,</SPAN> inFacilities<SPAN class="punctuation token">,</SPAN> measurement_units<SPAN class="punctuation token">,</SPAN>
inNetworkDataset<SPAN class="punctuation token">,</SPAN> outGeodatabase<SPAN class="punctuation token">,</SPAN> outRoutes<SPAN class="punctuation token">,</SPAN>
outDirections<SPAN class="punctuation token">,</SPAN> outClosestFacilities<SPAN class="punctuation token">,</SPAN>
Number_of_Facilities_to_Find<SPAN class="operator token">=</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Script completed successfully"</SPAN>
<SPAN class="keyword token">except</SPAN> Exception <SPAN class="keyword token">as</SPAN> e<SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># If an error occurred, print line number and error message</SPAN>
<SPAN class="keyword token">import</SPAN> traceback<SPAN class="punctuation token">,</SPAN> sys
tb <SPAN class="operator token">=</SPAN> sys<SPAN class="punctuation token">.</SPAN>exc_info<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"An error occured on line %i"</SPAN> <SPAN class="operator token">%</SPAN> tb<SPAN class="punctuation token">.</SPAN>tb_lineno
<SPAN class="keyword token">print</SPAN> str<SPAN class="punctuation token">(</SPAN>e<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>