Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I need to create a model in the ArcGIS ModelBuilder. I am working with a feature class of zip-codes for a state. I have got to the point where the zip-codes that have duplicates are selected from the feature class. There is a field called "Spots" within this feature class that has numeric values from 0-10. Of the zip-codes that have duplicates, I want to delete the feature that has the smaller number in the "Spots" field. Furthurmore, if the spots field is the same for the duplicates, I'd like to keep only the bottom row. I hope this makes sense! Any help would be great!

share|improve this question

1 Answer 1

I've had very little luck with model builder on tasks simpler than this. I'd use arcpy, its a lot more powerful and user-friendly. For your task I'd try something like this...

import arcpy
shp = 'yourZipcodeShapefile'
rows = arcpy.SearchCursor(shp)
field = 'yourZipcodeField'
#Create iterable list of zipcodes
ziplist = []
for row in rows:
    val = row.GetValue(field)
    ziplist.append(val)
#remove duplicate zipcodes from iterator list
ziplist = list(set(ziplist))
#Start processing
for zip in ziplist:
    query = '"'+field+'"='+str(zip)
    arcpy.SelectLayerByAttribute(shp, field, query)
    rows = arcpy.UpdateCursor(shp,'Spots')
    #now here comes the tricky part, because I'm not exactly sure what you're looking for
    #So at this point we should have multiple duplicates of a zipcode selected, and we want to rid ourselves of unwanted duplicate features based on a query of values in the 'Spots' field
    for row in rows:
        if row[0]<row[1]:
            rows.deleteRow(row[0])
        elif row[0]>row[1]:
            rows.deleteRow(row[1])
        elif row[0]=row[1]:
            rows.deleteRow(row[0])

Someone else might have something to say about that last codeblock, but its a good start. Honestly though, I needlessly banged my head against the keyboard trying to use Model Builder until I realized python is way better. Python is a great skill to learn! Give it a try, you'll be surprised.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.