I am using Pro 3.2.4. We have a feature class of signs (points) and a feature class of streets (lines). The streets feature class includes the name of each street. There is also a polygon feature class of intersections. For each intersection, I would like to get the names of the streets from the street feature class and add them to attribute fields in the signs feature class for all points that fall in the intersection. I can do a spatial join using the street lines and the intersection polygons but the resulting output includes multiple polygons and I am not sure what tool to use next. Maybe I am not using the spatial join correctly or not with the right feature classes. What is the best method to accomplish this task?
I'd just Select by Location (Intersect or Within a Distance or whichever spatial relationship suits best) to select the Points which are within the intersection.
You could also export the selection to a new layer if that makes it conceptually easier.
then run a Spatial Join between the Points and Lines. target = Points. One to One or One to Many depending on your requirements.
The problem is that in the output of the spatial join, there are multiple points for the same street sign. For example, a point is repeated four times. One time for each street segment in the intersection.
That doesn't really make sense. I'd ensure you have Join One to One as the option and are setting the point layer as the Target. Some pictures and examples if the issue would be beneficial.
Yes, that response last Friday did not make any sense. My apologies. It was late in the day and I was rushing through it. Today I did a selection location to get all of the sign points that are within one intersection polygon. I am only doing one now for testing purpose. I did a spatial join on the sign points and the streets with the target being the sign points. I did a one-to-many join. The output of the spatial join returns only one street. I need to be able to find the street and the cross street for each sign. Is there another geoprocessing task that needs to be run to include both streets?
If I understand correctly, you have sign Points which do not necessarily intersect a street or streets.
You have an intersection polygon which contains sign Points and Street Lines within that Polygon.
You want to Spatial Join the street Lines to the intersection polygon to get all street names that Intersect the Polygon.
You then want to Spatial Join the Polygon (with street names now attributed) to the sign Points. This then transfers street name attributes to the sign Points.
This can be achieved by using a lesser-known capability of Spatial Join, which is to join all matching features rather than the First/nearest etc. read here Spatial Join’s hidden trick on how to transfer att... - Esri Community incl. all links and ArcGIS Pro guidance.
As before, you'd Spatial Join Target>Polygons to Streets using the Join/concatenate Merge rule to get all streets per Polygon. you should then have the street name Field/column added to your Polygons, and attributes for each row would look like {Hawk St., Bison Av., Honey Badger Way} rather than just capturing the First as I guess was happening previously {Hawk St.}.
You'd then do another Spatial Join Target>Points to Polygons to transfer those Street values to the sign Points (no need for a merge rule, just a normal Spatial Join now - as the attributes are already there).
You may find you have duplicate street name values now - as Streets could have been made up of many segments which intersected the Polygon. You can clean this up with a Python field calculation (google or ChatGPT etc.) to remove duplicates. Or you could merge your Streets as the first step. I'd just clean up after with a Field Calculation to remove the duplicates (if any) however - as it's simpler and less can go wrong.
Or I may have misunderstood again.
You can run Generate Near Table and then do a pair of joins to skip the polygons and find the closest street to each sign. If you must use the intersection polygons, do a 1-M Spatial Join from the polygons to the streets, then use Summary Statistics with the "Concatenate" mode on the street names to smush them into a single intersection, then do a 1-1 spatial join from the signs to the enriched polygons.
I am finally circling back to this after almost a week. Would creating a near table be able to return the two closest streets? I need to get the street and the cross street for each sign. After the near table is created, I'm guessing that the streets feature class could be joined with it to get the street names. For some reason I am having trouble wrapping my hear around this process.
The tool has the option to return all results within an area. You'd have to do some more processing to remove duplicate street names, avoid extra intersecting streets etc. etc. but it's doable.