Selecting features based on similar names

2494
2
02-24-2016 11:45 AM
MyrethaMcInnis
New Contributor

I am building a script to integrate into a model that iterates through data. I've been able to get two submodels to iterate through the original data and create large numbers of features in file geodatabase. One submodel creates point features the other creates polygons. I would like to select features (one point and one polygon) based on similar names from the file geodatabase. The point features are civic addresses that fall within a catchment area of each facility. The polygon is the 25 min drive time (service area) from each facility. The point ID of the facility has been integrated into the names of the points and the polygons.

I was hoping to select the features from the geodatabase based on the actual name of the feature class which contains the point ID as seen in the screen shot below. Ex: SA207900045_01 polygon the point ID is 207900045. The corresponding point file is nscafPL207900045_01. The point and polygon features do not contain the point ID information. I was hoping something could be done with 'list features' in python then 'select where' the names are the same but I'm having no luck finding this function. I want to be able to loop this selection. So I would select the point and polygon that have similar names then feed them into a tool in model builder then loop back and find another pair of point and polygon features and feed them into the tool.

Is there anyway to do this in python or model builder? I'm new to both. Below is an image of some sample data.

I'm using ArcGIS for desktop 10.2.2

PD_PL_Test.png

0 Kudos
2 Replies
AbhishekRathi1
Occasional Contributor

Dear Myretha,

Kindly use query to solve your problem.

For that some of these link will be helpful

ArcGIS Desktop

http://www.junipergis.com/files/5412/6870/0223/QueryBuilder.pdf

or

try this

An arcpy/python way to find like named layers in a map document would be to use the string .find() method, see example below:

mxd = arcpy.mapping.MapDocument("CURRENT") commonNames = ['207900045', 'xyz', '1234'] for nameX in commonNames: foundLayersList = [] for lyr in arcpy.mapping.ListLayers(mxd): found = lyr.name.find(nameX) if found >-1: foundLayersList.append(lyr) # next do something with two found layers in the foundLayers list....

Alternatively, you could do this in one line combining the if condition and in method:

# same code as noted above before ListLayers statement for lyr in arcpy.mapping.ListLayers(mxd): if commonName in (lyr.name): foundLayersList.append(lyr) # ....

Or, you could do this in one line using list comprehension:

# same code as noted above before for nameX statement for nameX in commonNames: foundLayersList = [lyr.name for lyr in arcpy.mapping.ListLayers(mxd) if commonName in (lyr.name)] # next do something with two found layers in the foundLayers list....
MyrethaMcInnis
New Contributor

Hi Abhishek Rathi ,

Thanks for your reply. Query builder wont work on feature names, as I mentioned the features have no attributes in common... in fact, the polygon only has basic attributes such as shape. They only way the polygon and point file are linked is by the string in their names.

I'm not sure I understand the examples you give and I would like to select the features from the file geodatabase, not the map doc.

Specifically, commonNames = ['207900045, 'xyz', '1234']. what is 'xyz' and '1234' referencing? and is there a way for it to automatically select the next feature name while ignoring the beginning of it's name?

0 Kudos