My intent is to reverse geocode points, and assign them their nearest address. I have:
- A master point feature class
- Which will ultimately need the address populated in a field
- A "master script" that calculates a bunch of fields on the master point feature class
- I would like to ultimately add a section that joins the reverse geocoded addresses, calculates the appropriate address field on the master, and removes the join and deletes all the scratch data
- The master script is pretty quick as to minimize down time, and would like to keep it that way
My initial standalone script to reverse geocode took entirely to long to do as it was always reverse coding all the points, and as this points will increase it will eventually take longer. So, I thought lets only select from the master point feature class, export those out, reverse geocode the selection, and then join the master feature class to do the join and field calculation.
However, the reverse geocoding keeps crashing. In PyScripter I get an "exceptions.EOFError:[Errno 10054] An existing connection was forcibly closed by the remote host" error. and just running the script cause python to crash.
It does the first part correctly, which is exports out the features with missing addresses, but then crashes on the reverse geocoding part. Below is the code I have thus far. What am I doing wrong? Am I missing something? Do I need to clean up some variables?
<SPAN class="comment token"># import modules</SPAN>
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="comment token"># Set workspaces</SPAN>
scratchWorkspace <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\ESRITest\GeoReportingSystem\Testing9116\Scratch.gdb'</SPAN>
selectExport <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\ESRITest\GeoReportingSystem\Testing9116\Testing9716.gdb\GeoReporting'</SPAN>
missingAddresses <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Match_Addr"</SPAN>
sql <SPAN class="operator token">=</SPAN> <SPAN class="string token">"""{} is NULL"""</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>missingAddresses<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Export Only missing Addresses"</SPAN>
raw_input<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Press enter to continue ;)"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Select concerns that have missing addresses and send them to a scratch workspace for geocoding</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>FeatureClassToFeatureClass_conversion<SPAN class="punctuation token">(</SPAN>selectExport<SPAN class="punctuation token">,</SPAN> scratchWorkspace<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NoAddresses"</SPAN><SPAN class="punctuation token">,</SPAN> sql<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Export Successful"</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Are You Ready to Start Reverse Geocoding?"</SPAN>
raw_input<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Press enter to continue ;)"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Start edit session</SPAN>
edit <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>Editor<SPAN class="punctuation token">(</SPAN>scratchWorkspace<SPAN class="punctuation token">)</SPAN>
edit<SPAN class="punctuation token">.</SPAN>startEditing<SPAN class="punctuation token">(</SPAN><SPAN class="token boolean">False</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
edit<SPAN class="punctuation token">.</SPAN>startOperation<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Additional Variables for reverse geocoding</SPAN>
needsAddress <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\ESRITest\GeoReportingSystem\Testing9116\Scratch.gdb\NoAddresses'</SPAN>
address_locator <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:/ESRITest/GeoReportingSystem/Testing9116/ActiveOnlyAddresses_CreateAd'</SPAN>
outfc <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\ESRITest\GeoReportingSystem\Testing9116\Scratch.gdb\NearestAddress2'</SPAN>
<SPAN class="comment token"># Reverse Geocode the missing addresses that were selected from the main concern features</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>ReverseGeocode_geocoding<SPAN class="punctuation token">(</SPAN>needsAddress<SPAN class="punctuation token">,</SPAN> address_locator<SPAN class="punctuation token">,</SPAN> outfc<SPAN class="punctuation token">,</SPAN> address_type<SPAN class="operator token">=</SPAN><SPAN class="string token">"ADDRESS"</SPAN><SPAN class="punctuation token">,</SPAN> search_distance<SPAN class="operator token">=</SPAN><SPAN class="string token">"100 Meters"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Reverse Geocode Successful. Would you like to Exit?"</SPAN>
<SPAN class="comment token"># Close edit session</SPAN>
edit<SPAN class="punctuation token">.</SPAN>stopOperation<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
edit<SPAN class="punctuation token">.</SPAN>stopEditing<SPAN class="punctuation token">(</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
raw_input<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Press enter to exit ;)"</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>