I've inherited some scripts that (to my mind) "abuse" geocoding to position points based on a LocationID
field. As the name implies, this field is a unique ID that really doesn't need to be "fuzzy matched"; either it matches or it doesn't. Besides that, using the geocoding tools for this process is painfully slow; some 5 minutes or more to geocode less than 100k records.
I've tried using joins, with not much luck:
Joining the tables to the reference points with
AddJoin
: with"KEEP_ALL"
results in all the points, some with no data; with"KEEP_COMMON"
results in only matching points, but loses data where multiple rows have the sameLocationID
.Joining the points to the tables with
AddJoin
results in tables, not point features.Joining either way with
JoinField
is even slower than geocoding, and has the same issues as above.None of these methods produces a new feature class as geocoding does; that takes a
CopyFeatures
either before or after the join. (SpatialJoin
does, but it's out of the question since one input is a table....)
So, is there any faster way to do this using GP tools – if not, that might explain why it is the way it is – or should I look to a lower-level solution (arcpy.da
or the like)?
(To clarify, the output I'm looking for is a point feature class: each point has data from a row in the input table, but there may be multiple points in a given location.)