Learning Objectives

After completing this unit, you’ll be able to:

Resources

Introduction

A typical scenario that one may encounter when working with a geodatabase is to receive a set of data that contains changes to the features and attributes of feature classes in an existing geodatabase. The following example will show how to use geodatabase functionality to update existing geodatabase features with an edited Mapinfo TAB dataset.

Requirements

This unit’s exercise uses the Esri Geodatabase (File Geodb) reader/writer, which requires a licensed version of ArcGIS. For more information on required ArcGIS license levels, please see Required ArcGIS License Types for FME Geodatabase Formats.

Video


Exercise

1. Read Source Data

Open FME Workbench (2021.1 or later) and create a new workspace. Add an Esri Geodatabase (File Geodb) reader to the canvas and browse to the GeodatabaseUpdates_Source.gdb dataset from the Resources download. Then click OK to add the reader. Since there is only one feature type (feature class) in this dataset, it will automatically be selected.
Add reader
We will read the ParkUpdates.tab Mapinfo TAB file, which contains the updates for the geodatabase. Add a MapInfo TAB (MITAB) reader to the canvas and browse to the ParksUpdates.tab dataset from the Resources download. Click OK to add the reader.
Add another reader

2. Inspect Source Data

Run the workspace and inspect DowntownParks. It should look something like this:

Inspect source data in Visual Preview

3. Perform Change Detection

We have two datasets, our original data and our updated data, so we can perform change detection to find the differences between the two datasets. Add a ChangeDetector to the canvas. Connect the original DowntownParks reader feature type to the Original input port on the ChangeDetector, and then connect the ParksUpdates to the Revised input port.
Connect a ChangeDetector

In the ChangeDetector parameters, set the Update Detection Key to parkid; this setting means the ChangeDetector will only compare the original and updated versions of the same park, rather than compare all parks to all other parks. Next, click on the ellipsis next to Selected Attributes and select the following:

Then uncheck Check Geometry and click OK.
ChangeDetector parameters

4. Update Original Feature Class
Add an Esri Geodatabase (File Geodb) writer to the workspace, browse to a location to save the dataset. Set the Feature Class or Table Definition to Copy from Reader and then open the Parameters.
Add writer
Because we are using the original source geodatabase as a template, enable Overwrite Existing Geodatabase and select GeodatabaseUpdates_Source.gdb for Template File Geodatabase. When using a geodatabase as a template, both the schema and data within the geodatabase will be copied. FME will overwrite the existing geodatabase if it exists; however, it does not overwrite the template. Click OK twice to add the writer.

Note

The template and the output geodatabase should be two different files.

Writer parameters

Once the writer feature type appears on the canvas, connect the Updated, Inserted, and Deleted Output ports from the ChangeDetector to the DowntownParks writer feature type.

connect the Updated, Inserted, and Deleted Output ports from the ChangeDetector to the DowntownParks writer feature type

There is one more step before we can write out the changed data. We need to modify the writer feature type parameters to update the geodatabase. Open the writer feature type parameters, change the Feature Operation to fme_db_operation, then change the Update Spatial Columns to No. 

Note

The ChangeDetector automatically creates the fme_db_operation attribute, which stores the database operation required to apply the detected changes (e.g., UPDATE, INSERT. DELETE).

Next, click the ellipsis next to Match Columns, select parkid, and click OK twice to confirm.

Writer feature type parameters

5. Save and Run the Workspace

Now, save the workspace and then run it. View your output in FME Visual Preview or Esri ArcCatalog to confirm that FME applied the changes.

You should see 14 updated records and one deleted record.

Run the workspace

Inspect output in Visual Preview