I need to generate a polygon FC using some records previously flagged as 'NUMBER_GT_NUMBER_END = 1'
These records need to be loaded into a new schema of the same FC in order to include duplicates that will be used later for other processes. If you run the code as I am giving it here, it will print out the number of records per OBJECTID. The issue is that I am able to insert only one for each case. Once added a record into the new FC schema, I want to update the SITUS_STREET_NUMBER field with the value stored in x + 1. I have been going back and forth with other approaches like using Append, Copy, among others, but the process is really slow in comparison to the one achieved so far using the da.cursors.
Example:
OBJECTID = 28964 ---> 3 records
4815
4816
4817
This means that the above polygon geometry with OBJECTID = 28964 needs to be inserted to the new FC three times and that the SITUS_STREET_NUMBER field needs to be updated with the listed values.
Thanks in advance.
Can't you do it using a for loop and range?
>>> sample_data = [2,5,3]
... for sample in sample_data:
... for i in range(sample):
... print "insert"
... print "done"
...
insert
insert
done
insert
insert
insert
insert
insert
done
insert
insert
insert
done
Darren thanks for your feedback but I am still stuck in the same step (I guess).
Not sure if you ran my script but it does a similar thing. It iterates using the xrange. In addition, it also provides me with the numbers that will be used later to update some values.
Example:
OBJECTID = 28964 ---> 3 records
4815
4816
4817
OBJECTID = 39423 ---> 999 records
1976
1977
1978
1979
1980
1981
.
.
.
.
What I am missing now is the piece of the code that will allow me to insert the rows N number of times according to this xrange.
on iPad.. no download, are you trying to use an insertcursor InsertCursor—Help | ArcGIS Desktop
Yes sir
Then follow Joshua's advice
At first glance, a couple of thoughts. You are using both the original/older cursors as well as the newer Data Access cursors. Although doing so is technical feasible, and possibly even supported, it creates readability and maintainability issues because the syntax for the two types of cursors are different. I recommend just using one type of cursor, specifically the newer Data Access cursors.
Second, you appear to be re-creating the insert cursor every time you want to insert a record, even a duplicate of a previous record. Without running your code, I may be mistaken. If I am not, you might want to refactor the code so the insert cursor isn't being recreated if it doesn't need to be. Creating cursors is an expensive operation, so reusing/resetting a cursor is desirable if possible.
Joshua thanks a lot for your feedback. Can you provide an example of what you are suggesting? Not sure if you notice from my script that I am not a programmerJ. I am getting a little bit confused/lost with your programming lingo. Again, thanks a lot for your feedback
I believe you should generally follow this pattern, but you've got quite a few changes ahead of you.
iCur = arcpy.da.InsertCursor(featureClassCopy, fieldnames) # make before any loops
with arcpy.da.SearchCursor(featureClass, fieldnames, ...) as sCur:
for sRow in sCur:
for x in range(sRow[99]) # replace 99 with whatever field index your value should be
iCur.insertRow(sRow) # insert