Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

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.

share|improve this question
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. –  Nick Ochoski 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? –  blord-castillo 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. –  Nick Ochoski 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. –  Kirk Kuykendall Oct 17 '12 at 16:16
show 1 more comment

5 Answers 5

up vote 1 down vote accepted
+100

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.

share|improve this answer
    
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. –  Nick Ochoski Oct 19 '12 at 16:13
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
    
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. –  Nick Ochoski 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
add comment

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.

share|improve this answer
add comment

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

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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