Lose the Features, Keep the Annotation Properties

A previous post covered converting standard annotation to feature-linked annotation—to recap, it cannot be done directly. A recommended workflow when you have standard annotation that you wish were feature-linked is to create an empty feature-linked annotation class, then append the standard annotation features to it (using the Append Annotation Feature Classes tool).

Several readers have wondered, once you have feature-linked annotation in place, what happens when you need to replace the data linked to the annotation? No one wants to repeat the work of setting up annotation if they can avoid it. Can you change which feature class your feature-linked annotation is linked to?

The answer is no. Feature-linked annotation can be associated with only one feature class (the one specified when the feature-linked annotation was created). The feature-linked annotation and the feature class participate in a relationship class that you cannot alter.

Despite this, when you receive new data, there is a way to preserve the annotation.

Consider this scenario:

  • Every month, you receive updates to a geodatabase feature class in shapefile format. Each month, features have been deleted, there are new features to be added, and remaining features have changes. Replacing the data would be faster than editing the existing feature class. However, the feature class has linked annotation.

A reader shared a solution for this situation: delete the existing features from the feature class (thus creating an empty feature class), then append the new features to repopulate the feature class. This solution works and it’s a good one when you have data that changes a lot and doesn’t participate in table joins or relationships (besides feature-linked annotation). This method is not advisable in all situations. Before deleting features, check your workflows to make sure there are no unintended impacts.

Depending on how extensive the data changes are, you can replace all features or just a selected set. Below are the steps to do this using ArcGIS 10.

  • Of course, before deleting any data, it’s always wise to make a backup copy first. For example, you could create a file geodatabase in an archive workspace and copy the feature class and feature-linked annotation class to it before performing the steps below. To create or edit a feature class that has feature-linked annotation, you need an ArcEditor or ArcInfo license of ArcGIS.

Delete Existing Features

  1. In ArcMap, open a blank map document and add the feature class that needs to be updated and its feature-linked annotation to the Table of Contents. Start an edit session.
  2. Select the features you want to delete. You can build a query expression to select a subset or, to delete all features, right-click the feature class layer and click Selection > Select All.
  3. Click the Delete button, then save your edits. Stop the edit session.
  4. Open the attribute table for the feature-linked annotation and note that its features have been deleted as well.

Append Replacement Features

  1. Add the dataset that contains the new data to the map document.
    • The Append tool accepts map layers, shapefiles, and geodatabase feature classes (and other data types) as input. You can use its optional Schema Type and Field Map parameters to control how attributes are treated.
  2. In the Catalog window, expand Toolboxes > System Toolboxes > Data Management Tools > General (or just use the Search window to search for “append”).
  3. Double-click the Append tool to open its dialog box.
  4. For Input Dataset, click the drop-down arrow and choose the layer that stores the new data.
  5. For Target Dataset, choose the existing feature class, then click OK to run the tool.
  6. After the Append tool finishes running, open the attribute tables for the updated feature class and the annotation. Note that the features were added and new annotation features were created for them.
  7. Review the features and annotation on the map and reposition individual annotations as needed, based on the new feature locations and shapes.

So there you have it: an easy way to mass-update data and associated feature-linked annotation. Thanks to reader Pedonkus for sharing this solution.

If you regularly receive new data to replace current data that has feature-linked annotation, you can automate this process using a Python script. The ArcPy site package includes the UpdateCursor function (can use to delete existing features). The Append tool help topic includes example Python code.

SuzanneB

About SuzanneB

Suzanne is a Maryland native with a degree in English Literature who enjoys writing about Esri technology and other topics. She works with Esri Training Services in Redlands, California.
This entry was posted in ArcGIS Step by Step and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

4 Comments

  1. cathieharper says:

    Suzanne:I have a problem that I hope you have the answer to.  I am using ArcGIS Desktop 10.3.I have fifteen feature classes that have been grouped togethere into six group layers.  There are a total of 34 features in all of the feature classes.  This will be used in web mapping applications and also also within our SDE.I now want to to ‘name’ each feature and group the ‘names’ by the six group layer categories so depending on which of the six layer groups the users wants to map, they can also ‘name’ just the layer(s) chosen.  After looking at several options it appears that annotation and annotation feature classes will be the best technique based on my data and the attributes that exist in the data.  But alot of each feature ‘name’ is an attribute field plus more so I labelled each feature class accordiningly using the symbology that I wanted.  Once all the annotation is in place, I will edit any annotation as required.I have a file geodatabase where I am putting all my work, so I created an annotation feature class with the six subtypes that I want to ‘code’ the annotation as per the Help section.I then used the ‘Convert labels to annotation’ help directions.I discovered that each time I ‘appended’ a layer’s labels as annotation, it came in as a separate ‘default’ annotaton class, to the tune of 15 of them.I was able to figure out that if I used the Editor tools, I could ‘code’ each feature correctlyusing the ‘AnnotationClassID’ field and the ‘sub-type’ description in a pull down menu.I was also able to delete the extra fiftteen Default sub-classes.But when I went to add my annotation feature class in ArcMap, all of the Default annotation classes were still there.A bit more research through the help, discovered that there were ‘sub-types’ and ‘annotation classes’ tabs as part of the annotation feature classes and that they are different as per ‘Managing annotation feature class properties’ and while I had deleted the extra sub-types, I still would need to delete the extra annotation classes.  This document said that while the annoation classes are implemented as subtypes, they are managed through the annotation classes tab.  The annotation classes description says that I an add and remove annotation feature classes from the list.I went back to ArcCatalog and into the annotation feature class properties, ready to do this, but found that all the options under the annotation classes tab are greyed out and I can not do anything.  I removed the annotation feature class from ArcMap, still would not allow me to do it.  Closed ArcMap entirely, still would not allow me to do it.I don’t know where to go from here and I hope that you can help me figure out how to delete these extra Default annotation classes.As an aside, I only have 34 features so it was not that time comsuming to go in and ‘code’ them correctly, but if I had had several hundred, I would not have been a happy camper, if I had had to go back and code all of them.I am surprised that if ArcGIS gives you the option of creating annotation subtypes within your feature class, that when you go into convert labels to annotation that you would not have the option to ‘place’ that annotation within the appropriate subtype and not create a whole lot of Default annotaiton classes and subtypes that you then have to go back and remove.thanks in advance for your assistancecathie harper

    • SuzanneB SuzanneB says:

      To edit annotation, you must be in an ArcMap edit session. So add the annotation classes to ArcMap, display the Editor toolbar, then start an edit session.

  2. samschroder says:

    Is it possible to create feature linked annotation that are movable with dynamic leaders? this would be useful so you can manually move the labels and retain data link and the leader, ther may be a way to do this but when I convert to feature linked anno and move the label the leader stays put – so back to dumb old annotations for me – unless Im missing something??

    • samschroder says:

      ok I just found the annotation tool in the editor toolbar – a bit fiddly but seems to work fine the leaders can be extended