I have a ZIP3 boundary feature class that contains roughly 900 records.

I then have a table in a geodatabase that has 21000~ records and a ZIP3 field.

How would I go about making a feature class that has the ZIP3 boundaries for each of the 21000~ records from my table?

  • I don't think this is a spatial join rather a simple join – Farid Cheraghi Sep 14 '15 at 18:26
  • I need the boundaries 21000~ times vs 900 times – Maksim Sep 14 '15 at 18:28
  • Is your table a point feature class or just a table? – Farid Cheraghi Sep 14 '15 at 18:31
  • It is just a table. I have a feature class of 900 ZIP3 boundaries that I need to link to the ZIP3 in the table, and have those boundaries displayed 21000~ times – Maksim Sep 14 '15 at 18:32
  • That is my point. When you have a feature class and a table then the join is not spatial, it is just a Join – Farid Cheraghi Sep 14 '15 at 18:33

I think a query table will do what you are looking for.

Make sure the table and the feature class are in the same geodatabase.

Open the Make Query Table tool. Add the table FIRST. Then add the feature class. Click ok to create the Query Table. Then right click the resulting layer and export.

Note: I've used this before in 10.1 and it worked fine. Trying now in 10.2 and it's crashing ArcMap. A comment in the knowledge base thread suggests this may not work in 10.2

| improve this answer | |
  • 1
    Ye there is knowledge base in ESRI about making one-many join. Your solution here would be a Query Table. support.esri.com/en/knowledgebase/techarticles/detail/37544 – Farid Cheraghi Sep 14 '15 at 18:46
  • I had to do this a couple hundred times, so i created a model. I iterated over my tables, used the make table view tool, then table to table, and another model to join them to the ZIP3 feature class over and over – Maksim Sep 16 '15 at 12:14

I have a multi-step MANUAL process to achieve the feature-class creation you are looking for. First, realize that the resulting polygon layer will likely have the same geometry repeated for those rows in your source table where the ZIP3 attribute repeats. -- and realize that this is a less-than-ideal geometry storage method.

But if it has to be that way, here is one way (not the only way) to get there:

0) Make a copy of your source data, because during this process you will be deleting rows and you should have an original copy to refer to if needed.

1) Perform a frequency on your table using the ZIP3 column to find the maximum number of occurrences of any ZIP3 value. -- you will be performing this many sequential joins...

2) Add your table, the frequency table, and the ZIP3 polygon FC to an MXD; join the table and frequency result so that each row of your table also shows the frequency of that ZIP3.

3a) Using a query definition, Reselect the COUNT = 1 from your table+frequency result, then be sure to SORT the table on OBJECTID or Primary Key column.

3b) Join the ZIP3 polygons to the reduced table above, joining on ZIP3 column.

3c) Export the polygon result to a GDB with a featureclass name ending in _001

3d) remove the join between the polygons and your table

3e) SELECT and DELETE the rows of your table matching COUNT = 1 frequency criteria.

4) repeat steps 3a - e for COUNT = 2, COUNT = 3, COUNT = 4 and so on, with the following ABSOLUTELY CRITICAL exceptions: for COUNT = 2, you will need to export one time, then reselect only the first occurrence of the ZIPs and delete these rows in 3e, then re-join from polygons to your table, and export a second set of matching rows. for COUNT = 3, you will need to go through the process 3 times, selecting and deleting the first occurrence of the table entries in 3e and re-joining from polygons after each sub-set is removed. Continue this process until all the rows in your table are removed, then APPEND all the component featureclasses into a single result.

Why will this work? Each time a set is joined from the Polygons to the Table, only the first occurrence (by ObjectID) is joined to the polygon...by removing the join, selecting and deleting the exported rows, and re-joining/re-exporting, you can get the next set within the one-to-many join.

I told you it was a multi-step and MANUAL process, but it should get the repeating geometries into a single featureclass, together with the table attributes of interest to you.

| improve this answer | |
  • no coordinates in the table. the feature class is a boundary feature class, only contains shape_area and shape_length – Maksim Sep 14 '15 at 17:11
  • Maybe the table has addresses? -- there must be something geographic about the table records if you expect to find their Zips. Maybe you could post a comment (or revise the original question) to show the fields within the table (not the Zip boundaries, we expect that layer is polygons.) – JasonInVegas Sep 14 '15 at 19:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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