AnsweredAssumed Answered

consolidate two fields strings into one field

Question asked by CCweedcontrol on Dec 23, 2015
Latest reply on Dec 24, 2015 by Dan_Patterson

I have the following code, the code runs without errors but the problem i am have is that i need to populate the "StreetName" field with two other fields, "SiteStreet" & "StreetType". So the "StreetName" Field would update with "Galloway Rd". Currently only the "SiteStreet" populates the "StreetName", the "StreetType" doesn't get added to the "StreetName" Field. I thought i had this working previously but i am having a hard time figuring out why it won't populate. Any ideas on what's going on?


I have checked that the StreetType_1 field exists in the spatial join with the following


field = 'StreetType'
    values = [row[0] for row in arcpy.da.SearchCursor(sjpoints, (field))]
    uniqueValues = set(values)


the print out reads.



# Import arcpy module
import arcpy
from arcpy import env

# Allow overwrite 
arcpy.env.overwriteOutput = True

# Script user input parameters
polygonLayer = "DSD.DBO.TaxParcels1" #Taxparcels
pointLayer = "TESTCCAP.DBO.CCAP1" #Point Layer
arcpy.env.workspace = r"Database Servers\DSD15_SQLEXPRESS.gds\TESTCCAP (VERSION:dbo.DEFAULT)" #arcpy.env.workspace = r"Database Servers\DSD15_SQLEXPRESS.gds\TEST (VERSION:dbo.DEFAULT)"
poly = "ACCOUNT_1" 
Pnt =  "Account"
sjpoints = "In_memory\sjpoints" 

parcelsCount = int(arcpy.GetCount_management(pointLayer).getOutput(0))     
dsc = arcpy.Describe(pointLayer) 

selection_set = dsc.FIDSet         
if len(selection_set) == 0:       
    print "There are no features selected"  
elif parcelsCount >= 1: 

    #Run the Spatial Join tool, using the defaults for the join operation and join type
    arcpy.SpatialJoin_analysis(pointLayer, polygonLayer, sjpoints)

    # define the field list from the spatial join
    sourceFieldsList = ['TARGET_FID', poly,'SiteAddress','SiteNum_1', 'SiteStreet_1','SiteNumSfx_1','Predir_1','SiteStreet_1', 'Postdir_1', 'SiteCity_1', 'SiteZIP_1', 'OwnerName_1','StreetType_1']    #,'StreetType_1'

    # define the field list to the original points
    updateFieldsList = ['OID@', Pnt,'SiteAddres', 'SiteNum', 'StreetName', 'SiteNumSfx','Predir','SiteStreet', 'Postdir', 'SiteCity', 'SiteZip', 'OwnerName','StreetType'] #, 'StreetType'

    field = 'StreetType'
    values = [row[0] for row in arcpy.da.SearchCursor(sjpoints, (field))]
    uniqueValues = set(values)
    # Start an edit session. Must provide the workspace.    
    edit = arcpy.da.Editor(arcpy.env.workspace)    
    # Edit session is started without an undo/redo stack for versioned data    
    #  (for second argument, use False for unversioned data)    
    # Start an edit operation    
    manualFields =  ['FacltyType','GIS_STEW', 'StructType', 'Verified', 'Status', 'StructCat', 'APA_CODE','StreetName'] #,'StreetName'
    with arcpy.da.UpdateCursor(pointLayer, manualFields) as rows:       
        for row in rows:       
            row[0] = ("Single Family Home")
            row[1] = ("Canyon")
            row[2] = ("Primary, Private")           
            row[3] = ("Yes, GRM, TA")           
            row[4] = ("Active")           
            row[5] = ("Residential")           
            row[6] = ("1110")
            row[7] = (sourceFieldsList[4] + " " + sourceFieldsList[12])
        del row       
        del rows 
    # populate the dictionary from the polygon
    valueDict = {r[0]:(r[1:]) for r in arcpy.da.SearchCursor(sjpoints, sourceFieldsList)}    

    with arcpy.da.UpdateCursor(pointLayer, updateFieldsList) as updateRows:    
        for updateRow in updateRows:    
            keyValue = updateRow[0]
            if keyValue in valueDict:
                for n in range (1,len(sourceFieldsList)):      
                    updateRow[n] = valueDict[keyValue][n-1]
        del updateRows
        del updateRow

    #Update feature attributes to proper case
    fields1 = ['StreetName', 'SiteStreet','SiteAddres','OwnerName','StreetType']
    with arcpy.da.UpdateCursor(pointLayer, fields1) as cursor:
        for row in cursor:
            row[0] = row[0].title()
            row[1] = row[1].title()
            row[2] = row[2].title()
            row[3] = row[3].title()
            row[4] = row[4].title()
    # Stop the edit operation.    
    # Stop the edit session and save the changes