<?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: Adding Labels Using Related Data in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110135#M8532</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I noticed that your origin table may be a join, so it is possible that the field names have been modified because of the join.&amp;nbsp; I would also confirm that UserField4 and GIS_ID have some matching values.&amp;nbsp; Are you using Desktop or Pro?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since this is based on &lt;A href="https://community.esri.com/migrated-users/4811"&gt;Richard Fairhurst&lt;/A&gt;‌'s code, I'll tag him into the conversation.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 18 Oct 2020 20:49:01 GMT</pubDate>
    <dc:creator>RandyBurton</dc:creator>
    <dc:date>2020-10-18T20:49:01Z</dc:date>
    <item>
      <title>Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110134#M8531</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've tried to utilize the code I found posted by Richard Fairhurst that allows you to create labels based on data contained within a related table to no avail.&amp;nbsp; I keep getting the veritable "No features found. Could not verify expression".&amp;nbsp; Everyone's favorite error message.&amp;nbsp; BTW...a big shout out to Richard for posting this code and doing all he can to help others with this quest.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am attempting to add the information contained under the Table field "Name" to individual polygons.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any insight on what I am doing wrong would be most appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Here is the logistics of my relationship class setup:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Origin Table: DBOPlotOccJoin&lt;/P&gt;&lt;P&gt;Primary Key: UserField4&lt;/P&gt;&lt;P&gt;Foreign Key: GIS_ID&lt;/P&gt;&lt;P&gt;Destination Table: BSACemeteriesCopy&lt;/P&gt;&lt;P&gt;Table Label Field: Name&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Here is Richard's python code that I have augmented:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;# Initialize a global dictionary for a related feature class/table&lt;/P&gt;&lt;P&gt;relateDict = {}&lt;/P&gt;&lt;P&gt;def FindLabel ( [UserField4] &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; # declare the dictionary global so it can be built once and used for all labels&lt;/P&gt;&lt;P&gt;&amp;nbsp; global relateDict&lt;/P&gt;&lt;P&gt;&amp;nbsp; # only populate the dictionary if it has no keys&lt;/P&gt;&lt;P&gt;&amp;nbsp; if len(relateDict) == 0:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Provide the path and table name to the relate feature class/table&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; relateFC = r"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\DBOPlotOccJoin"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # create a field list with the relate field first (POLYID),&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # followed by sort field(s) (SCHOOLID), then label field(s) (CROSS_STREET)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; relateFieldsList = ["GIS_ID", "Name"]&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;# process a da search cursor to transfer the data to the dictionary&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.SearchCursor(relateFC, relateFieldsList) as relateRows:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for relateRow in relateRows:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # store the key value in a variable so the relate value&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # is only read from the row once, improving speed&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; relateKey = relateRow[0]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # if the relate key of the current row isn't found&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # create the key and make it's value a list of a list of field values&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not relateKey in relateDict:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # [searchRow[1:]] is a list containing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # a list of the field values after the key.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; relateDict[relateKey] = [relateRow[1:]]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # if the relate key is already in the dictionary&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # append the next list of field values to the&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # existing list associated with the key&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; relateDict[relateKey].append(relateRow[1:])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # delete the cursor, and row to make sure all locks release&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del relateRows, relateRow&lt;/P&gt;&lt;P&gt;&amp;nbsp; # store the current label feature's relate key field value&lt;/P&gt;&lt;P&gt;&amp;nbsp; # so that it is only read once, improving speed&lt;/P&gt;&lt;P&gt;&amp;nbsp; labelKey = [UserField4]&lt;/P&gt;&lt;P&gt;&amp;nbsp; # start building a label expression.&lt;/P&gt;&lt;P&gt;&amp;nbsp; # My label has a bold key value header in a larger font&lt;/P&gt;&lt;P&gt;&amp;nbsp; expression = '&amp;lt;FNT name="Arial" size="12"&amp;gt;&amp;lt;BOL&amp;gt;{}&amp;lt;/BOL&amp;gt;&amp;lt;/FNT&amp;gt;'.format(labelKey)&lt;/P&gt;&lt;P&gt;&amp;nbsp; # determine if the label key is in the dictionary&lt;/P&gt;&lt;P&gt;&amp;nbsp; if labelKey in relateDict:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # sort the list of the list of fields&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sortedList = sorted(relateDict[labelKey])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # add a record count to the label header in bold regular font&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expression += '\n&amp;lt;FNT name="Arial" size="10"&amp;gt;&amp;lt;BOL&amp;gt;School Count = {}&amp;lt;/BOL&amp;gt;&amp;lt;/FNT&amp;gt;'.format(len(sortedList))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # process the sorted list&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for fieldValues in sortedList:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # append related data to the label expression&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expression += '\n{0} - {1} - {2} - {3}'.format(fieldValues[0], fieldValues[1], fieldValues[2], fieldValues[3])&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # clean up the list variables after completing the for loop&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del sortedList, fieldValues&lt;/P&gt;&lt;P&gt;&amp;nbsp; else:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; expression += '\n&amp;lt;FNT name="Arial" size="10"&amp;gt;&amp;lt;BOL&amp;gt;School Count = 0&amp;lt;/BOL&amp;gt;&amp;lt;/FNT&amp;gt;'&lt;/P&gt;&lt;P&gt;&amp;nbsp; # return the label expression to display&lt;/P&gt;&lt;P&gt;&amp;nbsp; return expression&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Oct 2020 17:54:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110134#M8531</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-13T17:54:47Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110135#M8532</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I noticed that your origin table may be a join, so it is possible that the field names have been modified because of the join.&amp;nbsp; I would also confirm that UserField4 and GIS_ID have some matching values.&amp;nbsp; Are you using Desktop or Pro?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Since this is based on &lt;A href="https://community.esri.com/migrated-users/4811"&gt;Richard Fairhurst&lt;/A&gt;‌'s code, I'll tag him into the conversation.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 18 Oct 2020 20:49:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110135#M8532</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2020-10-18T20:49:01Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110136#M8533</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Randy for responding to my post.&amp;nbsp; I really appreciate your time.&lt;/P&gt;&lt;P&gt;Yes.&amp;nbsp; That is correct.&amp;nbsp; The origin table is based on a join between two tables; one representing Plots while the other is Occupants.&amp;nbsp; The field names both before and after the join have remained consistent and yes, UserField4 and GIS_ID have matching values.&amp;nbsp; I am using Desktop.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Oct 2020 10:50:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110136#M8533</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-19T10:50:01Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110137#M8534</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm still confused with your tables.&amp;nbsp; Is 'DBOPlotOccJoin' the related table?&amp;nbsp; And, is 'BSACemeteriesCopy' the feature layer you are symbolizing?&amp;nbsp; Perhaps a few sample rows of the feature layer and the related table would clear up my confusion.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have already joined the two tables into one that you are symbolizing, you won't need the steps in Richard's code.&amp;nbsp; You would just pass multiple fields to the 'FindLabel' function and add some formatting.&amp;nbsp; Again, some sample rows would be helpful; it can be made-up data as it is the structure that I'm trying to understand.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Oct 2020 04:10:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110137#M8534</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2020-10-21T04:10:02Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110138#M8535</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That is correct...DBOPlotOccJoin is the file geodatabase table and BSACemeteriesCopy is the feature layer being used for symbolizing.&amp;nbsp; I've attached a screen capture depicting both of these tables with the UserField4 and the GIS_ID fields present.&amp;nbsp; You can see the "many" in the DBOPlotOccJoin to the "one" in BSACemeteriesCopy in the capture.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Oct 2020 10:11:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110138#M8535</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-21T10:11:38Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110139#M8536</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the screen capture.&amp;nbsp; I am going to make one assumption: the field "Name" is in the "DBOPlotOccJoin" table.&amp;nbsp; If that is the case, then here is a simplified example of the labels and data I used for my testing.&lt;/P&gt;&lt;P&gt;&lt;IMG alt="Labels" class="jive-emoji image-1 jive-image j-img-original" src="https://community.esri.com/legacyfs/online/511542_Labels.png" /&gt;&lt;/P&gt;&lt;P&gt;The following code gets pasted in the expression section of the Label Expression window.&amp;nbsp; Be sure to check 'Advanced' and select Python as the 'Parser' before pasting.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;# Initialize a global dictionary for a related feature class/table&lt;/SPAN&gt;
relateDict &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;def&lt;/SPAN&gt; FindLabel &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;GIS_ID&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;# declare the dictionary global so it can be built once and used for all labels&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;global&lt;/SPAN&gt; relateDict
  &lt;SPAN class="comment token"&gt;# only populate the dictionary if it has no keys&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; len&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateDict&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# Provide the path and table name to the relate feature class/table&lt;/SPAN&gt;
    relateFC &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; r&lt;SPAN class="string token"&gt;"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\DBOPlotOccJoin"&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# create a field list with the relate field first (GIS_ID),&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# followed by sort field(s) (Name), then label field(s) (...)&lt;/SPAN&gt;
    relateFieldsList &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"UserField4"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Name"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;   
&lt;SPAN class="comment token"&gt;# process a da search cursor to transfer the data to the dictionary&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;with&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;da&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SearchCursor&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; relateFieldsList&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;as&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
      &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; relateRow &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;# store the key value in a variable so the relate value&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;# is only read from the row once, improving speed&lt;/SPAN&gt;
        relateKey &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;# if the relate key of the current row isn't found&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;# create the key and make it's value a list of a list of field values&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;not&lt;/SPAN&gt; relateKey &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateDict&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
          &lt;SPAN class="comment token"&gt;# [searchRow[1:]] is a list containing&lt;/SPAN&gt;
          &lt;SPAN class="comment token"&gt;# a list of the field values after the key.&lt;/SPAN&gt;
          relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
          &lt;SPAN class="comment token"&gt;# if the relate key is already in the dictionary&lt;/SPAN&gt;
          &lt;SPAN class="comment token"&gt;# append the next list of field values to the&lt;/SPAN&gt;
          &lt;SPAN class="comment token"&gt;# existing list associated with the key&lt;/SPAN&gt;
          relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;append&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# delete the cursor, and row to make sure all locks release&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;del&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; relateRow
  &lt;SPAN class="comment token"&gt;# store the current label feature's relate key field value&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;# so that it is only read once, improving speed&lt;/SPAN&gt;
  labelKey &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;GIS_ID&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;# start building a label expression.&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;# My label has a bold key value header in a larger font&lt;/SPAN&gt;
  expression &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'&amp;lt;FNT name="Arial" size="12"&amp;gt;&amp;lt;BOL&amp;gt;{}&amp;lt;/BOL&amp;gt;&amp;lt;/FNT&amp;gt;'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;format&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;labelKey&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;# determine if the label key is in the dictionary&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; labelKey &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateDict&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# sort the list of the list of fields&lt;/SPAN&gt;
    sortedList &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sorted&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;labelKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# add a record count to the label header in bold regular font&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# expression += '\n&amp;lt;FNT name="Arial" size="10"&amp;gt;&amp;lt;BOL&amp;gt;Name Count = {}&amp;lt;/BOL&amp;gt;&amp;lt;/FNT&amp;gt;'.format(len(sortedList))&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# process the sorted list&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; fieldValues &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; sortedList&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
       &lt;SPAN class="comment token"&gt;# append related data to the label expression&lt;/SPAN&gt;
       &lt;SPAN class="comment token"&gt;# expression += '\n{0} - {1} - {2} - {3}'.format(fieldValues[0], fieldValues[1], fieldValues[2], fieldValues[3])&lt;/SPAN&gt;
       expression &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'\n{0}'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;format&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fieldValues&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# clean up the list variables after completing the for loop&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;del&lt;/SPAN&gt; sortedList&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; fieldValues
  &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="comment token"&gt;# expression += '\n&amp;lt;FNT name="Arial" size="10"&amp;gt;&amp;lt;BOL&amp;gt;Name Count = 0&amp;lt;/BOL&amp;gt;&amp;lt;/FNT&amp;gt;'&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;pass&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;# return the label expression to display&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; expression‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Line 3 is the field in the feature that we are using for labeling and linking to the related table: GIS_ID.&lt;/P&gt;&lt;P&gt;Line 12 contains the linking field in the related table along with the related data used for the labels: UserField4 and Name&lt;/P&gt;&lt;P&gt;Line 41 is sorting the dictionary values, in this case the "Names".&amp;nbsp; You may wish to comment this line out if you do not want the names sorted.&lt;/P&gt;&lt;P&gt;I commented out line 43 as this adds a line to the label indicating how many names are associated with the feature.&lt;/P&gt;&lt;P&gt;Line 47 was also commented out, as there is only one field value being used, in this case "Name".&lt;/P&gt;&lt;P&gt;The else block, lines 51-53, was left in, but the name count is not added to the label.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 06:36:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110139#M8536</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2021-12-11T06:36:34Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110140#M8537</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;First of all...the code works beautifully!!&amp;nbsp; The display is exactly what I was looking for.&amp;nbsp; Thank you so much, Randy for taking the time and assisting me.&amp;nbsp; I really appreciate it!&lt;/P&gt;&lt;P&gt;Second...as a follow-up question...should there be any issues with the labels coming up in AGO?&amp;nbsp; Since the labels look so great I decided to explore creating a custom application for my internal clients.&amp;nbsp; Unfortunately, when I publish using the same Desktop project file that shows the labels perfectly, no labels appear within the application window.&amp;nbsp; I realize this is not an AGO forum, but have you run into any issues with labels disappearing in AGO when using this label workflow?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Oct 2020 11:17:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110140#M8537</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-22T11:17:01Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110141#M8538</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Glad to help.&amp;nbsp; Regarding your follow-up question, I would not expect this procedure to work on AGO.&amp;nbsp; I suggest asking the question "can Arcade create labels using data from related tables" in the &lt;A href="https://community.esri.com/space/2106"&gt;ArcGIS Online&lt;/A&gt; forum.&amp;nbsp; Hopefully &lt;A href="https://community.esri.com/migrated-users/3100"&gt;Xander Bakker&lt;/A&gt;‌ can provide an answer for you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Oct 2020 16:06:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110141#M8538</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2020-10-22T16:06:34Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110142#M8539</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Okay.&amp;nbsp; Thought I would check.&amp;nbsp; I will ask that exact question on the AGO forum.&amp;nbsp; Thank you so much again for your time and effort on this Randy!&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Oct 2020 16:11:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110142#M8539</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-22T16:11:00Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110143#M8540</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&amp;nbsp;&lt;A href="https://community.esri.com/migrated-users/326430"&gt;Jeff Davis&lt;/A&gt;&amp;nbsp; and&amp;nbsp;&lt;A href="https://community.esri.com/migrated-users/34565"&gt;Randy Burton&lt;/A&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regarding the question "&lt;SPAN style="background-color: #ffffff;"&gt;can Arcade create labels using data from related tables&lt;/SPAN&gt;" I am afraid the answer is&amp;nbsp;no... In the label profile Arcade has no access to related tables. You will need to add a field in the main featureset and fill it with the information of the related table(s) in order to show it as a label.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Oct 2020 16:43:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110143#M8540</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2020-10-22T16:43:36Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110144#M8541</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for replying.&amp;nbsp; Too bad.&amp;nbsp; I was hoping to eliminate a little database work.&amp;nbsp; Since it's a one to many relationship I'll not only need to add additional fields but create stacked polygons for the additional data. Doh...oh well...could be worse. I could be completely without this marvelous Randy Burton code!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again, Xander.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Oct 2020 16:50:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110144#M8541</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-22T16:50:36Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110145#M8542</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If it is helpful, I can post some code later that will read data from the feature and related table to create a new feature with one point per name that might meet your needs on AGO.&amp;nbsp; You could also add dates or other information if it is in the related table.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Oct 2020 16:56:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110145#M8542</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2020-10-22T16:56:24Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110146#M8543</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Randy...that would be amazing if it's not too much trouble for you!!!&amp;nbsp; Thank you so much!!!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Oct 2020 17:00:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110146#M8543</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-22T17:00:58Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110147#M8544</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is some test code that will give you an idea how to read the data from a feature and related table and create a point feature for use on AGO.&amp;nbsp; I have made some assumptions, so you will probably need to do some tweaking.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy &lt;SPAN class="comment token"&gt;# if not in python window&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; os

&lt;SPAN class="comment token"&gt;# Prep work : set up some parameters&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# feature with geometry - specifically polygons&lt;/SPAN&gt;
fc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; r&lt;SPAN class="string token"&gt;"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\BSACemeteriesCopy"&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# related table with data&lt;/SPAN&gt;
relateFC &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; r&lt;SPAN class="string token"&gt;"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\DBOPlotOccJoin"&lt;/SPAN&gt;
relateFieldsList &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"UserField4"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Name"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Born"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Died"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# Born and Died are optional, others can be added&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# new point feature we will create&lt;/SPAN&gt;
outPath &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; r&lt;SPAN class="string token"&gt;'R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb'&lt;/SPAN&gt;
outName &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'AGO_cemetery'&lt;/SPAN&gt;
outFields &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'SHAPE@X'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'SHAPE@Y'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Cemetery'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Plot'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Name'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Born'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Died'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# full path to new feature&lt;/SPAN&gt;
outFC &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;outPath&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; outName&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# Step 1 : create a new feature&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# spatial reference for new feature&lt;/SPAN&gt;
sr &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Describe&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fc&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SpatialReference &lt;SPAN class="comment token"&gt;# same spatial reference as source feature&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# create the new feature&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CreateFeatureclass_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;out_path &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outPath&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; out_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outName&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; geometry_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"POINT"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                    template &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", has_m = "DISABLED", has_z = "DISABLED",&lt;/SPAN&gt;
                                    spatial_reference &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sr&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# create fields (all text): Cemetery, Plot, Name, Born, Died&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;AddField_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;in_table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Cemetery'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"STRING"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_precision &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", field_scale = "#",&lt;/SPAN&gt;
                          field_length &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;50&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_alias &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Cemetery"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_is_nullable &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NULLABLE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_is_required &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NON_REQUIRED"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_domain &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#")&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;AddField_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;in_table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Plot'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"STRING"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_precision &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", field_scale = "#",&lt;/SPAN&gt;
                          field_length &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;50&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_alias &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Plot"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_is_nullable &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NULLABLE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_is_required &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NON_REQUIRED"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_domain &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#")&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;AddField_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;in_table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Name'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"STRING"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_precision &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", field_scale = "#",&lt;/SPAN&gt;
                          field_length &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;50&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_alias &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Name"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_is_nullable &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NULLABLE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_is_required &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NON_REQUIRED"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_domain &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#")&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;AddField_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;in_table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Born'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"STRING"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_precision &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", field_scale = "#",&lt;/SPAN&gt;
                          field_length &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;20&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_alias &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Born"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_is_nullable &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NULLABLE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_is_required &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NON_REQUIRED"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_domain &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#")&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;AddField_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;in_table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Died'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"STRING"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_precision &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", field_scale = "#",&lt;/SPAN&gt;
                          field_length &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;20&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_alias &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Died"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_is_nullable &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NULLABLE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_is_required &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NON_REQUIRED"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_domain &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#")&lt;/SPAN&gt;


&lt;SPAN class="comment token"&gt;# Step 2 : build the related dictionary&lt;/SPAN&gt;
relateDict &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# read the related table's data into a dictionary&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# the key will be the first field in the relateFieldsList&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# the value will be a list of tuples starting with the second field in the relatedFields list and using index [0] &lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;with&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;da&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SearchCursor&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; relateFieldsList&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;as&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; relateRow &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        relateKey &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;not&lt;/SPAN&gt; relateKey &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateDict&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;append&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;del&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; relateRow &lt;SPAN class="comment token"&gt;# clean up&lt;/SPAN&gt;


&lt;SPAN class="comment token"&gt;# Step 3 : populate the new feature&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# ready an insert cursor and loop through source feature and dictionary&lt;/SPAN&gt;
insertCursor &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;da&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;InsertCursor&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; outFields&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;with&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;da&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SearchCursor&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fc&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'SHAPE@'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Cemetery'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'GIS_ID'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;as&lt;/SPAN&gt; cursor&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; row &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; cursor&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        labelKey &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# the link&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; labelKey &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateDict&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            sortedList &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sorted&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;labelKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            listCount &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; len&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;sortedList&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="comment token"&gt;# calculate values for point geometry&lt;/SPAN&gt;
            xstep &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;XMax &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;XMin&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;listCount
            ystep &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;YMax &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;YMin&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;listCount
            xmin &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;XMin &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;xstep&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# x coord for first point&lt;/SPAN&gt;
            ymin &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;YMin &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ystep&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# y coord for first point&lt;/SPAN&gt;
            &lt;SPAN class="comment token"&gt;# final data&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; fieldValues &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; sortedList&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
                name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; fieldValues&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;# assuming the dates are type text/string and not type date&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;# otherwise some conversion will be required&lt;/SPAN&gt;
                born &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; fieldValues&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
                died &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; fieldValues&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;# print(xmin, ymin, row[1], labelKey, name, born, died)&lt;/SPAN&gt;
                insertCursor&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;insertRow&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;xmin&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; ymin&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; labelKey&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; name&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; born&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; died&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
                xmin &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; xstep &lt;SPAN class="comment token"&gt;# add step to x coord&lt;/SPAN&gt;
                ymin &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; ystep &lt;SPAN class="comment token"&gt;# add step to y coord&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# not in dictionary&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;pass&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# substitute with error code if necessary &lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;del&lt;/SPAN&gt; insertCursor&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;In the prep section (lines 4-15), the features and table are named along with the specific fields that are being accessed. Modify as needed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Lines 20-49 create a new point feature to store the combined data from the source feature and the related table.&amp;nbsp; All fields have been set as type text.&amp;nbsp; It is possible that you may wish to omit the born and died fields or set them as dates.&amp;nbsp; In my explorations of cemeteries and genealogy records, you don't often have a complete date for some of these events.&amp;nbsp; A text field can handle a variety of situations at the cost of sorting, etc.&amp;nbsp; I assumed the source feature is a polygon layer, and the new point feature will use the same spatial reference as the polygon layer.&amp;nbsp; If the feature already exists, an error will occur.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 2 (lines 52-66) builds the relationship dictionary.&amp;nbsp; It follows &lt;A href="https://community.esri.com/migrated-users/4811" target="_blank"&gt;Richard Fairhurst&lt;/A&gt;'s code for labels with few changes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step 3 (lines 69+) starts an insert cursor and combines the data from the source feature and related table.&amp;nbsp; I selected the geometry data, the link&amp;nbsp; to the related table, and any other fields of interest.&amp;nbsp; If a link is found, points are added to the new feature; if not found, some error code can run to handle the issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The point geometry is calculated using the x-y min and max of the polygon's extent.&amp;nbsp; The polygon is expected to be a simple rectangle or square. The number of expected points is the count of values in the dictionary (or sortedList).&amp;nbsp; A proportion of the distance from x-y min to x-y max is added to the previous point.&amp;nbsp; This results in a series of points being created in a lower-left to upper-right pattern.&amp;nbsp; The points may not fall precisely on an individual grave.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You may need to make modifications for handling the birth and death dates in this section.&amp;nbsp; In addition, modifications may be required if adding or dropping other fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The goal would be to create a new point feature that can be published on AGO.&amp;nbsp; It should have the desired attributes so that someone could search for a name, etc.&amp;nbsp; The name could be used for a label.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you do not wish to use individual points for each name, another option would be to use a single text field and concatenate the desired information into that field.&amp;nbsp; Some HTML line break codes &amp;lt;BR/&amp;gt; can be added to assist in the final formatting of a label.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 06:36:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110147#M8544</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2021-12-11T06:36:39Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110148#M8545</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Randy for going to so much trouble and adding such incredible detail to your code.&amp;nbsp; The directions you have supplied should be very helpful.&amp;nbsp; So many times I encounter code through my cloud travels that leave a little too much for me to try and decipher and in the end it becomes a lost cause.&lt;/P&gt;&lt;P&gt;I will attempt to implement and run it through some trials and report back.&lt;/P&gt;&lt;P&gt;Again, many thanks Randy and have a great weekend!&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Oct 2020 18:38:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110148#M8545</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-23T18:38:13Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110149#M8546</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Randy,&lt;/P&gt;&lt;P&gt;I received the following error message when I attempted to run the script..."Index error: tuple index out of range".&lt;/P&gt;&lt;P&gt;Here is the code with some changes that I made...commenting out...etc..&lt;/P&gt;&lt;P&gt;Can you please take a look and see where I might have gone wrong?&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;import arcpy # if not in python window&lt;BR /&gt;import os&lt;/P&gt;&lt;P&gt;# Prep work : set up some parameters&lt;BR /&gt;# feature with geometry - specifically polygons&lt;BR /&gt;fc = r"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\BSACemeteriesCopy"&lt;/P&gt;&lt;P&gt;# related table with data&lt;BR /&gt;relateFC = r"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\DBOPlotOccJoin"&lt;BR /&gt;relateFieldsList = ["UserField4", "Name"] # Born and Died are optional, others can be added&lt;/P&gt;&lt;P&gt;# new point feature we will create&lt;BR /&gt;outPath = r'R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb'&lt;BR /&gt;outName = 'AGO_cemetery'&lt;BR /&gt;outFields = ['SHAPE@X', 'SHAPE@Y', 'Cemetery', 'Plot', 'Name']&lt;/P&gt;&lt;P&gt;# full path to new feature&lt;BR /&gt;outFC = os.path.join(outPath, outName)&lt;/P&gt;&lt;P&gt;# Step 1 : create a new feature&lt;BR /&gt;# spatial reference for new feature&lt;BR /&gt;sr = arcpy.Describe(fc).SpatialReference # same spatial reference as source feature&lt;/P&gt;&lt;P&gt;# create the new feature&lt;BR /&gt;arcpy.CreateFeatureclass_management(out_path = outPath, out_name = outName, geometry_type = "POINT",&lt;BR /&gt; template = "#", has_m = "DISABLED", has_z = "DISABLED",&lt;BR /&gt; spatial_reference = sr)&lt;/P&gt;&lt;P&gt;# create fields (all text): Cemetery, Plot, Name, Born, Died&lt;BR /&gt;arcpy.AddField_management(in_table = outFC, field_name = 'Cemetery',&lt;BR /&gt; field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; field_length = 50, field_alias = "Cemetery", field_is_nullable = "NULLABLE",&lt;BR /&gt; field_is_required = "NON_REQUIRED", field_domain = "#")&lt;BR /&gt;arcpy.AddField_management(in_table = outFC, field_name = 'Plot',&lt;BR /&gt; field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; field_length = 50, field_alias = "Plot", field_is_nullable = "NULLABLE",&lt;BR /&gt; field_is_required = "NON_REQUIRED", field_domain = "#")&lt;BR /&gt;arcpy.AddField_management(in_table = outFC, field_name = 'Name',&lt;BR /&gt; field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; field_length = 50, field_alias = "Name", field_is_nullable = "NULLABLE",&lt;BR /&gt; field_is_required = "NON_REQUIRED", field_domain = "#")&lt;BR /&gt;#arcpy.AddField_management(in_table = outFC, field_name = 'BirthDate',&lt;BR /&gt; #field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; #field_length = 20, field_alias = "BirthDate", field_is_nullable = "NULLABLE",&lt;BR /&gt; #field_is_required = "NON_REQUIRED", field_domain = "#")&lt;BR /&gt;#arcpy.AddField_management(in_table = outFC, field_name = 'DeathDate',&lt;BR /&gt; #field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; #field_length = 20, field_alias = "DeathDate", field_is_nullable = "NULLABLE",&lt;BR /&gt; #field_is_required = "NON_REQUIRED", field_domain = "#")&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;# Step 2 : build the related dictionary&lt;BR /&gt;relateDict = {}&lt;/P&gt;&lt;P&gt;# read the related table's data into a dictionary&lt;BR /&gt;# the key will be the first field in the relateFieldsList&lt;BR /&gt;# the value will be a list of tuples starting with the second field in the relatedFields list and using index [0] &lt;BR /&gt;with arcpy.da.SearchCursor(relateFC, relateFieldsList) as relateRows:&lt;BR /&gt; for relateRow in relateRows:&lt;BR /&gt; relateKey = relateRow[0]&lt;BR /&gt; if not relateKey in relateDict:&lt;BR /&gt; relateDict[relateKey] = [relateRow[1:]]&lt;BR /&gt; else:&lt;BR /&gt; relateDict[relateKey].append(relateRow[1:])&lt;/P&gt;&lt;P&gt;del relateRows, relateRow # clean up&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;# Step 3 : populate the new feature&lt;BR /&gt;# ready an insert cursor and loop through source feature and dictionary&lt;BR /&gt;insertCursor = arcpy.da.InsertCursor(outFC, outFields)&lt;BR /&gt;with arcpy.da.SearchCursor(fc,['SHAPE@', 'Cemetery', 'GIS_ID']) as cursor:&lt;BR /&gt; for row in cursor:&lt;BR /&gt; labelKey = row[2] # the link&lt;BR /&gt; if labelKey in relateDict:&lt;BR /&gt; sortedList = sorted(relateDict[labelKey])&lt;BR /&gt; listCount = len(sortedList)&lt;BR /&gt; # calculate values for point geometry&lt;BR /&gt; xstep = (row[0].extent.XMax - row[0].extent.XMin)/listCount&lt;BR /&gt; ystep = (row[0].extent.YMax - row[0].extent.YMin)/listCount&lt;BR /&gt; xmin = row[0].extent.XMin + (xstep/2) # x coord for first point&lt;BR /&gt; ymin = row[0].extent.YMin + (ystep/2) # y coord for first point&lt;BR /&gt; # final data&lt;BR /&gt; for fieldValues in sortedList:&lt;BR /&gt; name = fieldValues[0]&lt;BR /&gt; # assuming the dates are type text/string and not type date&lt;BR /&gt; # otherwise some conversion will be required&lt;BR /&gt; born = fieldValues[1]&lt;BR /&gt; died = fieldValues[2]&lt;BR /&gt; # print(xmin, ymin, row[1], labelKey, name, born, died)&lt;BR /&gt; insertCursor.insertRow([xmin, ymin, row[1], labelKey, name, born, died])&lt;BR /&gt; xmin += xstep # add step to x coord&lt;BR /&gt; ymin += ystep # add step to y coord&lt;BR /&gt; else: # not in dictionary&lt;BR /&gt; pass # substitute with error code if necessary&lt;/P&gt;&lt;P&gt;del insertCursor&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Oct 2020 15:59:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110149#M8546</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-26T15:59:13Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110150#M8547</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You missed a few lines that still refer to birth and death dates.&amp;nbsp; In my code example, you should also comment out or remove the references in lines 88-92:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;                &lt;SPAN class="comment token"&gt;# born = fieldValues[1]&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;# died = fieldValues[2]&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;# print(xmin, ymin, row[1], labelKey, name) # if printing, remove: born, died&lt;/SPAN&gt;
                insertCursor&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;insertRow&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;xmin&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; ymin&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; labelKey&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; name&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;# remove: born, died‍‍‍‍‍‍‍‍&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have created a new feature, you will need to either delete it or comment out the code section that creates it.&amp;nbsp; Otherwise the code will error out saying the feature already exists.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It helps to use the syntax highlighter when sharing code.&amp;nbsp; The best help is found here: &lt;A _jive_internal="true" href="https://community.esri.com/blogs/dan_patterson/2016/08/14/script-formatting" target="_blank"&gt;Code Formatting... the basics++&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 06:36:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110150#M8547</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2021-12-11T06:36:42Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110151#M8548</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Randy,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for responding to my question.&lt;/P&gt;&lt;P&gt;I made the commenting out modifications you indicated and received a different error this time.&lt;/P&gt;&lt;P&gt;" &lt;STRONG&gt;no attribute 'extent'&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code in case you need to see it again...&lt;/P&gt;&lt;P&gt;Thanks again.&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;import arcpy # if not in python window&lt;BR /&gt;import os&lt;/P&gt;&lt;P&gt;# Prep work : set up some parameters&lt;BR /&gt;# feature with geometry - specifically polygons&lt;BR /&gt;fc = r"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\BSACemeteriesCopy"&lt;/P&gt;&lt;P&gt;# related table with data&lt;BR /&gt;relateFC = r"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\DBOPlotOccJoin"&lt;BR /&gt;relateFieldsList = ["UserField4", "Name"] # Born and Died are optional, others can be added&lt;/P&gt;&lt;P&gt;# new point feature we will create&lt;BR /&gt;outPath = r'R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb'&lt;BR /&gt;outName = 'AGO_cemetery'&lt;BR /&gt;outFields = ['SHAPE@X', 'SHAPE@Y', 'Cemetery', 'Plot', 'Name']&lt;/P&gt;&lt;P&gt;# full path to new feature&lt;BR /&gt;outFC = os.path.join(outPath, outName)&lt;/P&gt;&lt;P&gt;# Step 1 : create a new feature&lt;BR /&gt;# spatial reference for new feature&lt;BR /&gt;sr = arcpy.Describe(fc).SpatialReference # same spatial reference as source feature&lt;/P&gt;&lt;P&gt;# create the new feature&lt;BR /&gt;arcpy.CreateFeatureclass_management(out_path = outPath, out_name = outName, geometry_type = "POINT",&lt;BR /&gt; template = "#", has_m = "DISABLED", has_z = "DISABLED",&lt;BR /&gt; spatial_reference = sr)&lt;/P&gt;&lt;P&gt;# create fields (all text): Cemetery, Plot, Name, Born, Died&lt;BR /&gt;arcpy.AddField_management(in_table = outFC, field_name = 'Cemetery',&lt;BR /&gt; field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; field_length = 50, field_alias = "Cemetery", field_is_nullable = "NULLABLE",&lt;BR /&gt; field_is_required = "NON_REQUIRED", field_domain = "#")&lt;BR /&gt;arcpy.AddField_management(in_table = outFC, field_name = 'Plot',&lt;BR /&gt; field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; field_length = 50, field_alias = "Plot", field_is_nullable = "NULLABLE",&lt;BR /&gt; field_is_required = "NON_REQUIRED", field_domain = "#")&lt;BR /&gt;arcpy.AddField_management(in_table = outFC, field_name = 'Name',&lt;BR /&gt; field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; field_length = 50, field_alias = "Name", field_is_nullable = "NULLABLE",&lt;BR /&gt; field_is_required = "NON_REQUIRED", field_domain = "#")&lt;BR /&gt;#arcpy.AddField_management(in_table = outFC, field_name = 'BirthDate',&lt;BR /&gt; #field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; #field_length = 20, field_alias = "BirthDate", field_is_nullable = "NULLABLE",&lt;BR /&gt; #field_is_required = "NON_REQUIRED", field_domain = "#")&lt;BR /&gt;#arcpy.AddField_management(in_table = outFC, field_name = 'DeathDate',&lt;BR /&gt; #field_type = "STRING", field_precision = "#", field_scale = "#",&lt;BR /&gt; #field_length = 20, field_alias = "DeathDate", field_is_nullable = "NULLABLE",&lt;BR /&gt; #field_is_required = "NON_REQUIRED", field_domain = "#")&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;# Step 2 : build the related dictionary&lt;BR /&gt;relateDict = {}&lt;/P&gt;&lt;P&gt;# read the related table's data into a dictionary&lt;BR /&gt;# the key will be the first field in the relateFieldsList&lt;BR /&gt;# the value will be a list of tuples starting with the second field in the relatedFields list and using index [0] &lt;BR /&gt;with arcpy.da.SearchCursor(relateFC, relateFieldsList) as relateRows:&lt;BR /&gt; for relateRow in relateRows:&lt;BR /&gt; relateKey = relateRow[0]&lt;BR /&gt; if not relateKey in relateDict:&lt;BR /&gt; relateDict[relateKey] = [relateRow[1:]]&lt;BR /&gt; else:&lt;BR /&gt; relateDict[relateKey].append(relateRow[1:])&lt;/P&gt;&lt;P&gt;del relateRows, relateRow # clean up&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;# Step 3 : populate the new feature&lt;BR /&gt;# ready an insert cursor and loop through source feature and dictionary&lt;BR /&gt;insertCursor = arcpy.da.InsertCursor(outFC, outFields)&lt;BR /&gt;with arcpy.da.SearchCursor(fc,['SHAPE@', 'Cemetery', 'GIS_ID']) as cursor:&lt;BR /&gt; for row in cursor:&lt;BR /&gt; labelKey = row[2] # the link&lt;BR /&gt; if labelKey in relateDict:&lt;BR /&gt; sortedList = sorted(relateDict[labelKey])&lt;BR /&gt; listCount = len(sortedList)&lt;BR /&gt; # calculate values for point geometry&lt;BR /&gt; xstep = (row[0].extent.XMax - row[0].extent.XMin)/listCount&lt;BR /&gt; ystep = (row[0].extent.YMax - row[0].extent.YMin)/listCount&lt;BR /&gt; xmin = row[0].extent.XMin + (xstep/2) # x coord for first point&lt;BR /&gt; ymin = row[0].extent.YMin + (ystep/2) # y coord for first point&lt;BR /&gt; # final data&lt;BR /&gt; for fieldValues in sortedList:&lt;BR /&gt; name = fieldValues[0]&lt;BR /&gt; # assuming the dates are type text/string and not type date&lt;BR /&gt; # otherwise some conversion will be required&lt;BR /&gt; #born = fieldValues[1]&lt;BR /&gt; #died = fieldValues[2]&lt;BR /&gt; # print(xmin, ymin, row[1], labelKey, name) # if printing, remove: born, died&lt;BR /&gt; insertCursor.insertRow([xmin, ymin, row[1], labelKey, name])# remove: born, died&lt;BR /&gt; xmin += xstep # add step to x coord&lt;BR /&gt; ymin += ystep # add step to y coord&lt;BR /&gt; else: # not in dictionary&lt;BR /&gt; pass # substitute with error code if necessary&lt;/P&gt;&lt;P&gt;del insertCursor&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Oct 2020 18:55:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110151#M8548</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2020-10-26T18:55:24Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110152#M8549</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy &lt;SPAN class="comment token"&gt;# if not in python window&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; os

&lt;SPAN class="comment token"&gt;# Prep work : set up some parameters&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# feature with geometry - specifically polygons&lt;/SPAN&gt;
fc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; r&lt;SPAN class="string token"&gt;"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\BSACemeteriesCopy"&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# related table with data&lt;/SPAN&gt;
relateFC &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; r&lt;SPAN class="string token"&gt;"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\DBOPlotOccJoin"&lt;/SPAN&gt;
relateFieldsList &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"UserField4"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Name"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# Born and Died are optional, others can be added&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# new point feature we will create&lt;/SPAN&gt;
outPath &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; r&lt;SPAN class="string token"&gt;'R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb'&lt;/SPAN&gt;
outName &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'AGO_cemetery'&lt;/SPAN&gt;
outFields &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'SHAPE@X'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'SHAPE@Y'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Cemetery'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Plot'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Name'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# full path to new feature&lt;/SPAN&gt;
outFC &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; os&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;path&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;join&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;outPath&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; outName&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# Step 1 : create a new feature&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# spatial reference for new feature&lt;/SPAN&gt;
sr &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Describe&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fc&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SpatialReference &lt;SPAN class="comment token"&gt;# same spatial reference as source feature&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# create the new feature&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CreateFeatureclass_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;out_path &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outPath&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; out_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outName&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; geometry_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"POINT"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                                    template &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", has_m = "DISABLED", has_z = "DISABLED",&lt;/SPAN&gt;
                                    spatial_reference &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sr&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# create fields (all text): Cemetery, Plot, Name, Born, Died&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;AddField_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;in_table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Cemetery'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"STRING"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_precision &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", field_scale = "#",&lt;/SPAN&gt;
                          field_length &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;50&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_alias &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Cemetery"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_is_nullable &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NULLABLE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_is_required &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NON_REQUIRED"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_domain &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#")&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;AddField_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;in_table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Plot'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"STRING"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_precision &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", field_scale = "#",&lt;/SPAN&gt;
                          field_length &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;50&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_alias &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Plot"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_is_nullable &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NULLABLE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_is_required &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NON_REQUIRED"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_domain &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#")&lt;/SPAN&gt;
arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;AddField_management&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;in_table &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Name'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_type &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"STRING"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_precision &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#", field_scale = "#",&lt;/SPAN&gt;
                          field_length &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;50&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_alias &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Name"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_is_nullable &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NULLABLE"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
                          field_is_required &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"NON_REQUIRED"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; field_domain &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; "&lt;SPAN class="comment token"&gt;#")&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#arcpy.AddField_management(in_table = outFC, field_name = 'BirthDate',&lt;/SPAN&gt;
                          &lt;SPAN class="comment token"&gt;#field_type = "STRING", field_precision = "#", field_scale = "#",&lt;/SPAN&gt;
                          &lt;SPAN class="comment token"&gt;#field_length = 20, field_alias = "BirthDate", field_is_nullable = "NULLABLE",&lt;/SPAN&gt;
                          &lt;SPAN class="comment token"&gt;#field_is_required = "NON_REQUIRED", field_domain = "#")&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;#arcpy.AddField_management(in_table = outFC, field_name = 'DeathDate',&lt;/SPAN&gt;
                          &lt;SPAN class="comment token"&gt;#field_type = "STRING", field_precision = "#", field_scale = "#",&lt;/SPAN&gt;
                          &lt;SPAN class="comment token"&gt;#field_length = 20, field_alias = "DeathDate", field_is_nullable = "NULLABLE",&lt;/SPAN&gt;
                          &lt;SPAN class="comment token"&gt;#field_is_required = "NON_REQUIRED", field_domain = "#")&lt;/SPAN&gt;


&lt;SPAN class="comment token"&gt;# Step 2 : build the related dictionary&lt;/SPAN&gt;
relateDict &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="comment token"&gt;# read the related table's data into a dictionary&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# the key will be the first field in the relateFieldsList&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# the value will be a list of tuples starting with the second field in the relatedFields list and using index [0] &lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;with&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;da&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SearchCursor&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; relateFieldsList&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;as&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; relateRow &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        relateKey &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;not&lt;/SPAN&gt; relateKey &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateDict&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;relateKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;append&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateRow&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;del&lt;/SPAN&gt; relateRows&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; relateRow &lt;SPAN class="comment token"&gt;# clean up&lt;/SPAN&gt;


&lt;SPAN class="comment token"&gt;# Step 3 : populate the new feature&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;# ready an insert cursor and loop through source feature and dictionary&lt;/SPAN&gt;
insertCursor &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;da&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;InsertCursor&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;outFC&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; outFields&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;with&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;da&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;SearchCursor&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;fc&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'SHAPE@'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'Cemetery'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'GIS_ID'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;as&lt;/SPAN&gt; cursor&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; row &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; cursor&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        labelKey &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# the link&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; labelKey &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; relateDict&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            sortedList &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; sorted&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;relateDict&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;labelKey&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            listCount &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; len&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;sortedList&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
            &lt;SPAN class="comment token"&gt;# calculate values for point geometry&lt;/SPAN&gt;
            xstep &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;XMax &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;XMin&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;listCount
            ystep &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;YMax &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;YMin&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;listCount
            xmin &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;XMin &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;xstep&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# x coord for first point&lt;/SPAN&gt;
            ymin &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;extent&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;YMin &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ystep&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# y coord for first point&lt;/SPAN&gt;
            &lt;SPAN class="comment token"&gt;# final data&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; fieldValues &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; sortedList&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
                name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; fieldValues&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;# assuming the dates are type text/string and not type date&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;# otherwise some conversion will be required&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;#born = fieldValues[1]&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;#died = fieldValues[2]&lt;/SPAN&gt;
                &lt;SPAN class="comment token"&gt;# print(xmin, ymin, row[1], labelKey, name) # if printing, remove: born, died&lt;/SPAN&gt;
                insertCursor&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;insertRow&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;xmin&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; ymin&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; row&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; labelKey&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; name&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="comment token"&gt;# remove: born, died&lt;/SPAN&gt;
                xmin &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; xstep &lt;SPAN class="comment token"&gt;# add step to x coord&lt;/SPAN&gt;
                ymin &lt;SPAN class="operator token"&gt;+=&lt;/SPAN&gt; ystep &lt;SPAN class="comment token"&gt;# add step to y coord&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# not in dictionary&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;pass&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# substitute with error code if necessary &lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;del&lt;/SPAN&gt; insertCursor&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Apologies Randy...here is the code with the syntax highlighter applied.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jeff&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 06:36:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110152#M8549</guid>
      <dc:creator>JeffDavis7</dc:creator>
      <dc:date>2021-12-11T06:36:46Z</dc:date>
    </item>
    <item>
      <title>Re: Adding Labels Using Related Data</title>
      <link>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110153#M8550</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you confirm the feature type is a polygon and not a point?&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;# feature with geometry - specifically polygons&lt;/SPAN&gt;
fc &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; r&lt;SPAN class="string token"&gt;"R:\Jeff\City_Projects\Cemetery\CemeteryMgmt.gdb\BSACemeteriesCopy"&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 06:36:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/adding-labels-using-related-data/m-p/110153#M8550</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2021-12-11T06:36:50Z</dc:date>
    </item>
  </channel>
</rss>

