I have two point data sets that represent the same business locations, however, the points are slightly off for one of the two layers. As in one layers points are in the correct position over the building, while the other layers points are slightly off (in the parking lot, neighboring road, etc.).

I need to match the dataset that is slightly off to align perfectly with the dataset holding correct point locations.

  • Are the two layers in different projections? – crld Jun 21 '16 at 16:00
  • Is there a common field between the two layers that you can join on? If there isn't you would have to rely on a spatial join which might introduce errors. – Jacob F Jun 21 '16 at 16:03
  • the two layers use the same projection system however, the layer in question was geocoded using addresses as opposed to lat/long values, resulting in the slight offset. Another issue is none of the fields match up perfectly for an effective join. I did perform a spatial join, yet the layer needing correction spits out null values instead of matching up properly. – mattyb Jun 21 '16 at 16:17
  • @mattyb you say none of the fields match up perfectly; do some of the fields kind of match up? is it string formatting that makes them different? and, if so, can you provide an example? Also, do both contain address information? also, how many points are there in both datasets? – crld Jun 21 '16 at 16:19
  • @crld yes some of the fields match up to some extent (such as the business name and addresses) however, the string format is different and results in an ineffective join. I know there are some sql scripts that can fix this but I have zero experience with such languages. – mattyb Jun 21 '16 at 16:24

OK there are a couple of options for you. Obviously business name matching won't work, spatial joins will be unreliable, and address formatting isn't the same. One possible solution could be rubber sheeting (http://desktop.arcgis.com/en/arcmap/10.3/manage-data/editing-existing-features/about-spatial-adjustment-rubbersheeting.htm). Rubber sheeting is effectively georeferencing for vector datasets. This methodology kind of assumes that the relative locations of the points (in relation to one another) is the same; if this is not the case you might be able to get them close enough to one another to make a spatial join work.

An alternative would be to georeference the addresses for both datasets using the same service, as this would likely assign the same XY locations to each. If you were able to do this, you could write your XY locations to the attribute table and create an XY Event Layer from those values, or round the XY coordinates to 4 or 5 decimal places (if you're using a geographic coordinate system in decimal degrees, this would be accurate to within approximately 11 or 1.1 meter respectively) and perform a table join on the XY values (I'm assuming that's your goal).

I will update my answer later with an example of how you could accomplish the georeferencing.

  • Find the largest distance the 2nd point feature class is from the 1st - there are a few methods to do this (manually works). It should only be a few metres.
  • Execute a spatial join and specify the search radius as the distance you found in the last step. This should work depending on how far apart the 2 point features are, and how far apart the businesses are. If the points are farther apart than the businesses, the spatial join won't work.

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.