I would like to find a way to stack multiple selected points in ArcGIS, either using the field calculator or python script. For example, I want to snap all points representing houses on a street into one point. Is there a way to reference one of the existing coordinate sets to use as the values for all selected points?


Using the Field Calculator:

  1. Select features.
  2. Select field Shape, parser Python
  3. Type arcpy.Point(EEEEE.eee, NNNNN.nnn) in the field calculator

where E-numbers to represent X, N - north

  • Thanks @FelixIP. This is what I was after. Is there a way to reference the coordinates of one of the selected points (doesn't matter which one) to quickly stack points without having to type X and north out each time? – S. Collins Dec 17 '15 at 2:30
  • Can be done using some fancy field calculations similar to gis.stackexchange.com/questions/126652/… – FelixIP Dec 17 '15 at 2:58

So many ways.

  1. Turn each street into a point at its center point and create an x, y field in the attribute table.
  2. Attribute join the addresses to the street point based on the street name.
  3. The points now have the street point x,y. Just add them to arcmap based on x,y.
  • 1
    I would do a Generate Near table then join the near table to the street centres and reject any where the street name do not match, assuming of course the addresses are aware of what street they're on then progress from there. Your idea is a little more succinct and direct so is bound to be faster. Can we get some idea of what attributes the street lines and address points have? – Michael Stimson Dec 16 '15 at 0:51
  • 1
    Yeah I thought about NEAR or spatial but I used to build address databases and in many rural areas the property may actually be closer to another street that the street you are on. Happens in the city as well at intersections. You cover this with the rejection but my experience tells me a very high proportion of homes are nearer to another street than "their" street. – If you do not know- just GIS Dec 16 '15 at 0:58
  • That's the biggest drawback and the reason why 'spatial join' wouldn't work. Your method with AddXY, join etc.. is one I've used before but you really need the name of the street on both to confirm you've got the right one - just in case... and be prepared to resolve a minor percentage manually. For some reason it's never worked cleanly for me, most often because the attribution isn't 100%. – Michael Stimson Dec 16 '15 at 1:40
  • 1
    Yep, the question is really (i) is the property more likely to be closer to its street than the attribute combination is to match then do NEAR. (2) is the attribute more likely to be match then the property is to be closest to its named street than do attribute. My experience running a 33 county address databases tell me (2), by quite some distance actually. Mostly due to the vagaries of addressing. A compromise approach may be best then with some fuzzy logic like the "like" command in SQL maybe combined with NEAR. NEAR and LIKE. – If you do not know- just GIS Dec 16 '15 at 1:46
  1. Turn the streets to points.
  2. Use spatial join . Make the > Target the points converted from the street, > the join layer the houses, use one to many join, Make sure you use the CLOSEST matching criteria. you now will have stacked points at the center of the road with the attributes of all the houses that are close to it.
  • 1: m and closest? – FelixIP Dec 16 '15 at 4:03
  • otherwise OP will have to specify a distance, assuming the houses do not touch the roads (in order to use INTERSECT without any distance). Come to think of it, the closest, might bring the unwanted feature of duplicated houses on many line centers, duplicates can then be removed. But I have to check if CLOSEST duplicates join features in the first place. Your concern is valid. – yanes Dec 16 '15 at 4:36
  • Also, if using 1 :1, OP will lose information from the house info, UNLESS the interest is to simply know the number of houses associated with each in that road, you can use, 1:1 join and make sure you turn the attribute collating criteria into "COUNT" you will find these by right-clicking on the attribute you are about to join, in the spatial join window. – yanes Dec 16 '15 at 4:38

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.