Description
Geodatabase attachments are not automatically included in the output of geoprocessing tools. The instructions provided describe the steps to copy attachments from an input dataset to the output dataset.
Cause
Geodatabase attachments are stored as BLOBs in a table that is related to the feature class via a relationship class. This associated table and relationship class can be found in the same geodatabase as the feature class; they are named the same as the feature class, but with __ATTACH and __ATTACHREL suffixes. Geoprocessing operations do not copy datasets that are related to a feature class through a relationship class.
Workaround
Upgrade to ArcGIS for Desktop 10.5, or use ArcGIS Pro 1.3. A new environment, Maintain Attachments, has been implemented in some Conversion and Data Management tools in ArcGIS for Desktop 10.5 and ArcGIS Pro 1.3: Analysis and Data Management – Conversion tools
For other tools in which this environment is not implemented, or for older versions of ArcGIS for Desktop, the following workaround is suggested.
When a geoprocessing tool creates a new output from the feature class, as the Project tool does, the attachments associated with the input feature class are not carried over to the output feature class. The following steps can be done to 're-relate' the attachment table that stores the attachments with a new output feature class.
These steps are only valid if the geoprocessing operation being performed does not reorder ObjectIDs (the Project tool DOES NOT reorder ObjectIDs). This can be tested by running the tool, then checking the output dataset — if each of the records in the input dataset have a corresponding record in the output dataset, and the ObjectIDs match, then use the steps below.
- Run the desired geoprocessing tool, such as the Project tool.
- Right-click the output feature class and click create/enable Attachments.
This creates an empty __ATTACH table and a relationship class relating that table to the output feature class. - Use the Append tool to append the original feature class' __ATTACH table into the output feature class' __ATTACH table. The __ATTACH table is where the attachments are actually stored (in a BLOB field), so appending these records is a key step:
- Input Dataset = input__ATTACH
- Target Dataset = output__ATTACH