I have two point featureclasses that intersect each other. They are in the same projection and dataframe. The issue is, when I perform a Spatial Join the output point featureclass is empty. The file is created and the attribute table contains fields, but the points are not created where they intersect.

In reverse this operation works successfully (proving they do intersect), but I obviously end up with the wrong attributes in the output file. I have searched this issue, but have yet to come up with a plausible solution.

I suspect this may have something to do with the fields used to uniquely identify the points within each featureclass, but so far I have yet to find a problem. I even attempted to delete extraneous fields from each file, since I only really want to transfer one attribute field across the featureclasses.

Edit: This questions is related to my previous post.

Edit 2: As some have suggested I have incremented the search tolerance without change.

  • 2
    Does one pt featureclass consist of the "right" points and the other the "left"? What is the reverse operation that works but yields the wrong attributes?
    – user3461
    Jul 8 '11 at 12:10
  • There are no "right" or "left" points.
    – Radar
    Oct 16 '12 at 16:11
  • Do the two feature classes have the same spatial indexes and spatial tolerances? i.e. if you add x/y columns, do they have the exact same values? Oct 17 '12 at 13:26
  • The spatial tolerance does not appear to be an issue since the operation works in "reverse". See my comment below about incrementing the tolerance.
    – Radar
    Oct 17 '12 at 16:03
  • Do the two featureclasses have the same GeometryDef's? Have you compared what appears when you go into arccatalog, right click on the featureclass, choose properties..., then on the Fields tab look at the field properties of the shape field. Also compare what is on the Resolution,Tolerance and Domain tabs. Oct 17 '12 at 16:16

If you can join the result set to the original points, but not the reverse, then when you execute Points to Line use the left/right attribute field as your Line Field and the FID from the result set as your Sort Field. Just make sure that your FID from the result set maps to a new integer field in the output. If you can join the original points to the result set, use the left/right attribute from the original points as your Line Field and the FID of the resulting output as your Sort Field.


Maybe you should increase your search tolerance? Also, there are three tools that you can choose from to accomplish your goal, Near_analysis, GenerateNearTable_analysis and SpatialJoin_analysis. The "Near" tools can attach the Closest features FID or Objectid. You can then join the attributes of your choice.

  • I thought the search tolerance might be the issue, but I tried incrementing it up to a very large number and it did not solve the issue. The near analysis tools are a good suggestion and I considered taking a longer route, but I am hoping to solve the issue using the tool that was made for it if possible.
    – Radar
    Oct 17 '12 at 16:01
  • If the Near tools match your data correctly or a different join method works, then you know the problem is in the Spatial Join tool, as @dpierce suggested. A service pack may fix it.
    – klewis
    Oct 17 '12 at 16:20

Strange that you can do this one way but not the other. That would leave me a bit concerned as to whether the spatial join was correct for every point?

So this doesn't get confusing lets be specific about the datasets. You want to join data set "A"'s attributes to dataset "B" but you can only do it the other way round?

A quick solution would be to :

1) Copy the FID of dataset A to a new field e.g. "A_FID2" 2) Spatially join B to A. 3) Copy the A_FID2 value to a new field in dataset B. 4) Table Join A to B via the common FID2 value.

5) If there is not an equal number of points in each dataset sum the A_FID2 values in each table. If all points have been successfully joined the values will be equal.

NB: FIDs are cannot be relied on to be stable when a dataset is edited - hence the copying to FID2 to fix the number for use as a key.

Also, the process above will create allot of redundant data in the intermediate steps, so use an "in memory" workspace.

  • This solution addresses the question the best with positive results. Overall, I found I could do it this way, or with one of the other available toolsets. It appears that there is an issue with the spatial join tool and a workaround is needed.
    – Radar
    Oct 19 '12 at 16:13

Have you tried using a different spatial join method other than intersect? As seen in the post you linked, spatial join intersect can have inconsistent results, but works best when matching smaller polygons into larger ones, or points into polygons. I've noticed the same inconsistent behavior you're seeing when matching coincident points. Try using a different match option, such as Identical.

You'll need ArcGIS SP3 to have the additional match options.


In this case, you can simply make a normal join between the two Layers.

  1. Add XY coordinates to both Layers.
  2. Add a new txt Field (length 50, name JOINID) to both Layers.
  3. Calculate each new Field to be [X-coord] & "" & [Y-coord] - or maybe Round([X-coord],4) & "" & Round([Y-coord],4) to prevent to many Decimals.
  4. Now set up the Join between the two Layers using JOINID as Join Field.

This Method should work both Ways, when you join Point to Point. If you need a new Layer, simply export the Result to a new Feature Class.

Regards, Steen Kjeldsen Informi GIS Denmark

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.