Greetings!
I would like to pose a question about two snippets of Python code that basically take in a list of events, each of which contain a latitude, longitude and depth like so eventslist = [[ lat1, lng1, depth1], [lat2,lng2, depth2] ... [latN, lngN, depthN]] and input these as points into two separate Geodatabase Featureclasses. I have verified that both these code snippets work but I would like to ask, which snippet in your opinion is the more efficient/correct one in regards to where to start/end the edit operation (edit.startOperation()) and creation/deletion of the insert cursors.
Also if you think another solution is even more preferable then please don't hesitate to suggest, thanks in advance!
SNIPPET 1
<SPAN class="comment token">#Start an edit session to insert new events. Need to have edit session because of using two insert cursors at the same time. </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>env<SPAN class="punctuation token">.</SPAN>workspace<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">False</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Iterate over the list of new events, each event contains lat, lng and depth</SPAN>
<SPAN class="keyword token">for</SPAN> event <SPAN class="keyword token">in</SPAN> newevents<SPAN class="punctuation token">:</SPAN>
edit<SPAN class="punctuation token">.</SPAN>startOperation<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
cursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>inFc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lat"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lng"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"depth"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
cursor2 <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>archiveFc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lat"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lng"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"depth"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
lat<SPAN class="punctuation token">,</SPAN>lng<SPAN class="punctuation token">,</SPAN>Z <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">(</SPAN>event<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> event<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> event<SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
location <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Point<SPAN class="punctuation token">(</SPAN>lng<SPAN class="punctuation token">,</SPAN> lat<SPAN class="punctuation token">,</SPAN> Z<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#Create the 3-D point object</SPAN>
pointGeom <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>PointGeometry<SPAN class="punctuation token">(</SPAN>location<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#Create the shape geometry as pointGeometry</SPAN>
row <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>pointGeom<SPAN class="punctuation token">,</SPAN> lat<SPAN class="punctuation token">,</SPAN> lng<SPAN class="punctuation token">,</SPAN> depth<SPAN class="punctuation token">]</SPAN>
row2 <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>pointGeom<SPAN class="punctuation token">,</SPAN> lat<SPAN class="punctuation token">,</SPAN> lng<SPAN class="punctuation token">,</SPAN> depth<SPAN class="punctuation token">]</SPAN>
cursor<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#Insert the new events into longterm class using insert cursor </SPAN>
cursor2<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN>row2<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#Insert the new events into archive class using insert cursor2</SPAN>
<SPAN class="keyword token">del</SPAN> row<SPAN class="punctuation token">,</SPAN> row2
<SPAN class="keyword token">del</SPAN> cursor<SPAN class="punctuation token">,</SPAN> cursor2
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><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>
SNIPPET 2
<SPAN class="comment token">#Start an edit session to insert new events. Need to have edit session because of using two insert cursors at the same time. </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>env<SPAN class="punctuation token">.</SPAN>workspace<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">False</SPAN><SPAN class="punctuation token">)</SPAN>
edit<SPAN class="punctuation token">.</SPAN>startOperation<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
cursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>inFc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lat"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lng"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"depth"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
cursor2 <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>InsertCursor<SPAN class="punctuation token">(</SPAN>archiveFc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lat"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"lng"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"depth"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Iterate over the list of new events, each event is a list that contains lat, lng and depth</SPAN>
<SPAN class="keyword token">for</SPAN> event <SPAN class="keyword token">in</SPAN> newevents<SPAN class="punctuation token">:</SPAN>
lat<SPAN class="punctuation token">,</SPAN>lng<SPAN class="punctuation token">,</SPAN>Z <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">(</SPAN>event<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> event<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> event<SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
location <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Point<SPAN class="punctuation token">(</SPAN>lng<SPAN class="punctuation token">,</SPAN> lat<SPAN class="punctuation token">,</SPAN> Z<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#Create the 3-D point object</SPAN>
pointGeom <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>PointGeometry<SPAN class="punctuation token">(</SPAN>location<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#Create the shape geometry as pointGeometry</SPAN>
row <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>pointGeom<SPAN class="punctuation token">,</SPAN> lat<SPAN class="punctuation token">,</SPAN> lng<SPAN class="punctuation token">,</SPAN> depth<SPAN class="punctuation token">]</SPAN>
row2 <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>pointGeom<SPAN class="punctuation token">,</SPAN> lat<SPAN class="punctuation token">,</SPAN> lng<SPAN class="punctuation token">,</SPAN> depth<SPAN class="punctuation token">]</SPAN>
cursor<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#Insert the new events into longterm class using insert cursor</SPAN>
cursor2<SPAN class="punctuation token">.</SPAN>insertRow<SPAN class="punctuation token">(</SPAN>row2<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#Insert the new events into archive class using insert cursor2</SPAN>
<SPAN class="keyword token">del</SPAN> row<SPAN class="punctuation token">,</SPAN> row2
edit<SPAN class="punctuation token">.</SPAN>stopOperation<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">del</SPAN> cursor<SPAN class="punctuation token">,</SPAN> cursor2
edit<SPAN class="punctuation token">.</SPAN>stopEditing<SPAN class="punctuation token">(</SPAN><SPAN class="token boolean">True</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>