<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Create a unique ID for new features based on a gridcode and sequential number in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/create-a-unique-id-for-new-features-based-on-a/m-p/528798#M41426</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;bump&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 30 Apr 2018 19:35:18 GMT</pubDate>
    <dc:creator>MTorres</dc:creator>
    <dc:date>2018-04-30T19:35:18Z</dc:date>
    <item>
      <title>Create a unique ID for new features based on a gridcode and sequential number</title>
      <link>https://community.esri.com/t5/python-questions/create-a-unique-id-for-new-features-based-on-a/m-p/528797#M41425</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am very new to Python (this is in fact my first attempt at scripting) so I am hoping someone could please give me some guidance.&amp;nbsp; Any help would be greatly appreciated!:confused:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks very much&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would like to be able to autopopulate the unique ID of a sample locations featureclass.&amp;nbsp; The unique ID is based on the grid square that each sample location intesects (grid squares are saved in a separate grid featureclass) and a sequential number. eg sample locations in grid square 'A1' will be assigned a unique ID of A1_1, A1_2, A1_3 and so on.&amp;nbsp; The script will be run whenever new features are added and require the next unique sequential ID's to be calculated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have had an attempt but I am not sure I have the logic correct (and definitely not all of the coding) and may need to start from scratch.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bits of this script are from a previous forum which i have adapted.&amp;nbsp; The script is not updating the [Location_Code] which is the unique ID field at the moment. If I unindent the last 'for statement' at the bottom it does update the [Location_Code] field but only with the same value for each sample location so it seems like the indenting was incorrect.&amp;nbsp; I have also not incorporated a spatial join yet and am selecting based on a pre calculated [Grid_Code] field but ideally it would be nice to have this in the same script.&amp;nbsp; The print statements are merely for me to work out what is going on.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks again,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Karyn&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;import arcpy, sys, re, os
from arcpy import env
import string

# Assign environment workspace
env.workspace = r'C:\Users\karyn\Documents\My Documents\Business\GIS\ArcGIS\Learnings\Python\ivgn_loc_new_ID\127613066.gdb'&amp;nbsp; 


#Create filter for selecting only features where there is a location code
filter = "\"Location_Code\" &amp;lt;&amp;gt; ' '" 

#Define sample locations feature layer which require their IDs to be populated
selected_feat = r'C:\Users\karyn\Documents\My Documents\Business\GIS\ArcGIS\Learnings\Python\ivgn_loc_new_ID\ivgn_locn_pt selection.lyr'
#Define sample location featureclass
fc = r'C:\Users\karyn\Documents\My Documents\Business\GIS\ArcGIS\Learnings\Python\ivgn_loc_new_ID\127613066.gdb\ivgn_locn_pt'

#Define cursors
selrows = arcpy.SearchCursor(selected_feat)
orirows = arcpy.UpdateCursor(fc, filter) 
selrows2 = arcpy.UpdateCursor(selected_feat)

print "variables assigned"

#Get the gridcode for the sample locations that need updated - this needs updating to access this through a spatial join 
for selrow in selrows:
&amp;nbsp;&amp;nbsp;&amp;nbsp; fcgridcode = selrow.Grid_Code

&amp;nbsp;&amp;nbsp;&amp;nbsp; print "grid code assigned" + fcgridcode

&amp;nbsp;&amp;nbsp;&amp;nbsp; # iterate through fc to find where the grid code of the new sample locations equals the grid code of the existing sample locations. Then
&amp;nbsp;&amp;nbsp;&amp;nbsp; # work out location code with the highest sequential number and asign the new location code to be the highest ID + 1&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; for orirow in orirows:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; origlocation_code = orirow.Location_Code
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #assign first 2 letters of location code to the varible (which is the grid code)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; origgridcode = origlocation_code[:2]

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "orig" + origgridcode
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "fc" + fcgridcode

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if origgridcode == fcgridcode:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Iterate through rows and get highest ID values

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "gridcode match " + origgridcode + fcgridcode
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row1 in orirows:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_id = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_idfull = row1.Location_Code&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_id1 = int(high_idfull[:3])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if high_id &amp;lt; high_id1:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; high_id = high_id1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print high_id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
# Iterate through rows and update values
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for selrow2 in selrows2:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = high_id1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i += 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selrow2.Location_Code = fcgridcode + "_" + str(high_id1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selrows2.updateRow(selrow2)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print high_id
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
del selrow, selrows, orirow, orirows, selrows2

print "script complete"&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 16 Sep 2012 08:46:16 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/create-a-unique-id-for-new-features-based-on-a/m-p/528797#M41425</guid>
      <dc:creator>KarynMcDonald</dc:creator>
      <dc:date>2012-09-16T08:46:16Z</dc:date>
    </item>
    <item>
      <title>Re: Create a unique ID for new features based on a gridcode and sequential number</title>
      <link>https://community.esri.com/t5/python-questions/create-a-unique-id-for-new-features-based-on-a/m-p/528798#M41426</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;bump&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Apr 2018 19:35:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/create-a-unique-id-for-new-features-based-on-a/m-p/528798#M41426</guid>
      <dc:creator>MTorres</dc:creator>
      <dc:date>2018-04-30T19:35:18Z</dc:date>
    </item>
  </channel>
</rss>

