Business, facility or event addresses are coordinates that want to be found, but sometimes data with both geometry and well formed address attributes has not had the benefit of the high quality geocoding available in ArcGIS Online being applied to records where the geometry could do with some uplift.
This blog shows how to apply geocoding to untrusted geometries within a dataset that changes over time without incurring the cost of recurring geocoding of records previously geocoded. The information product to be maintained is a hosted feature layer in ArcGIS Online or your own ArcGIS Enterprise portal.
Here is the subject matter, around 600K business locations registered with the City of Los Angeles Office of Finance:
Businesses in downtown Los Angeles
You'll appreciate businesses may open, close, relocate or change name, and this dataset is refreshed monthly to track this. Businesses typically care they can be found, and what we see in the data is high quality address fields. If we want to maintain a useful spatial view of the data, such as in a hosted feature layer, we need to support this refresh cadence. In addition to records that change, we also need to uplift any records that didn't get correct geometry when first created.
Records like these:
Null Island and Equal Archipelago
The red dots are either on Null Island or a region I'm going to name Equal Archipelago, meaning points where latitude equals longitude. Together with records with genuinely null geometry (liberties were taken in naming Null Island!) we have an easily identifiable subset of business locations to fix, which we're confident we can do from address fields in the data.
Here is the subset of business locations we need to geocode:
Locations to geocode
Note the record count - 94086. As we'll be using ArcGIS Online to do the geocoding (requires credits), we need to be mindful of the credit cost for geocoding, and geocode target records only once unless they change address. This is where geocoding smarter comes in, geocode records with untrusted geometry or where address fields change, but only once, not each update, while still applying any changes to trusted geometry or non-address fields.
Let's get started.
The source data is in an open data portal for which there is a reader available via package download. In the blog attachment is a workspace CreateLosAngelesBusinesses.fmw (requires ArcGIS Pro 3.5+ plus ArcGIS Data Interoperability, or FME 2025+), the reader will install if you edit the workspace, as will the Geocoder package. The workspace creates an initial feature class. Here it is:
Create business location feature class
This though is where you cannot avoid the credit cost of an initial geocode, but notice we only geocode records with null geometry or on Null Island or along Equal Archipelago - these have untrusted geometry. Notable processing steps are querying the back end server to generate separate processing streams, creating point geometry from string values like '(34.2817, -118.5361)' and using batch forward geocoding for speed.
The output feature class is shared as a web layer, which is the information product we'll be maintaining.
This is where processing gets more interesting, and here it is, the workspace named RefreshLosAngelesBusinesses.fmw in the blog download:
Refresh Business Listings
The trick to not re-geocoding previously trodden ground is to merge known geometry onto untrusted records from the target feature layer, and to merge on the primary key and the address fields. This way if an address changes the feature will not merge and will be re-geocoded.
Here are the FeatureMerger properties used to pick up geometry from known locations:
Merge Geometry Only
Once any geocoding is complete then all incoming and existing feature are sent to a ChangeDetector, which generates an efficient minimal transaction to update the target feature service. For the geocoding, you'll note that I switched from batch to row based geocoding in the Geocoder transformer. Batch is faster but row based geocoding can deliver better quality.
Here is a month's worth of business location churn for Los Angeles (September 15th 2025), 596402 locations in total, of which 1688 business locations were updated, 4385 inserted and 1707 deleted. Of the 94086 incoming locations with untrusted location, only 1822 needed to be geocoded. A mere 9 addresses could not be found and need clerical review.
A month's business addresses update
Here are the ChangeDetector settings used to calculate the changeset transaction. If any attributes or geometry change for a primary key value, then a write record is generated with INSERT, UPDATE or DELETE transaction type.
ChangeDetector settings
The blog attachment contains the spatial ETL tool fmw source files to create an initial file geodatabase feature class of business locations and perform a refresh of the data on demand. There is also one for finding untrusted records to inspect before further processing.
Have fun geocoding smarter!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.