By Charlie Frye, Esri Chief Cartographer
There are quite a few tools in the ArcGIS toolbox that are designed to, and depending on your goal, work well for generalizing a single feature class. The downside to that is many feature classes of data can be required make a given map and all should be displayed at a level of detail that is appropriate for the map scale. Simplifying one feature class at a time will not account for intersections between two line feature classes, two polygon feature classes, or a line and a polygon feature class. What follows is a method that can be used to simplify the lines in two feature classes while preserving the location of any intersections. Essentially what you will do is to put all the features into one feature class, generalize that, and then split them out into the final feature classes.
If polygons are involved they need to be converted to lines in a fashion that will allow you to “reassemble” them (split them into the final feature class) after they have been simplified. The way to do that is:
- If you’ve got polygons with topology problems, fix them now; these errors will absolutely cause this method not to work. You can either create a topology or try using either the Eliminate tool or the Integrate tool. You may optionally wish to select only the features that are large enough to keep in the simplified result because if you intend to delete these features anyway, it makes more sense to do so now instead of later if for no other reason than to minimize processing time by eliminating extra features from the process.*
- Use the Polygon to Line tool to convert the outlines of your polygons to lines.
- Use the Feature to Point tool to convert your polygons to points. These points will serve the same function as LabelPoints do in the ArcInfo Coverage data model – they carry the attributes for your polygons and you will use them later (Step 5) to attach the attributes to the final simplified polygons.
Now you need to split the lines at the locations where they do intersect. The Simplify Line tool preserves the end nodes of line features, therefore, any intervening vertex can potentially be eliminated. That’s a problem because there may not even be a vertex at the location where a line or polygon outline intersects another line. The solution is to split the lines at the locations where they do intersect. The way to do that is:
- Use the Feature to Line tool. One of the less obvious uses of this tool is that you can use multiple line feature classes as input. The result is a single line feature class that contains features with the original nodes (line endpoints) and it will create nodes at any location where the lines intersect.
- To see how your original features were managed, open the attribute table of this resulting feature class. Note that the feature IDs (FIDs) of the original features are recorded in the attribute table. The field name is the name of he input feature class + “_FID”. Try Selecting by Attributes and you will see that value not equal to negative one (“<> -1”) selects the original input features. You will use a query like that to later reassemble the final features.
- Example of a table showing what the content of the FID fields. Notice that where one field = -1, the other has a valid FID that refers back to the original feature.
The next step is to simplify the lines that result from Step 4. Use the Simplify Line tool or any other tools you need to in order to perform the generalization. Once you have done that, the generalized features need to be assembled into feature classes based on the original input feature classes:
- To reassemble the polygons, use the Feature to Polygon tool with your simplified lines as the input features. Also, use the Label Features parameter with the point feature class that was the result of Step 3 (these were the points you created that have the attributes – in this step they are used to attach the attributes to the simplified polygon features.)**
- To reassemble the lines, you need to select them and then dissolve the selected features. To select the simplified lines, use the FID attribute that was mentioned in Step 5.
- Then use the Dissolve tool, which will produce the final version of your simplified lines; use the selected simplified lines as the input, and these parameters:
- The dissolve field is the FID field that you used to make the selection for Step 7.
- In the “Statistics Field(s)” section, you have to add each of the fields from the original data that you want in the simplified result; typically the Statistic Type will be FIRST.
- Leave the “Create multipart features” option checked. Because you’re using the original FID as the basis for this Dissolve you should get the same multi-part structure for the output features as was in the input data; though some small parts may have been eliminated.
- If two line feature classes were involved, then repeat Step 8, but use the other feature class FIDs as the basis for your selection.
These steps explain the simplest version of how to use this method. You can, in theory (I have not tried it yet) use as many line feature classes as you want, repeating Steps 7 & 8 as many times as you have line feature classes. You can also use multiple polygon feature classes — the trick is to use the instructions in Step 7 to create an intermediate line feature class that will be the input to the Feature to Polygon tool as described in Step 5.
*One issue with polygons is that interior parts, i.e., holes are not subject to removal at this stage (Step 1). I recommend replacing any holes with another polygon feature class, then removing the holes from the original, and finally processing the polygons representing the holes separately. You can simplify the holes separately, then use the Erase tool to add the holes back into the simplified polygons.
**Note: if you heavily simplified the lines of your polygons, there is a chance that feature has been sufficiently altered such that the point that carries the attributes is no longer inside the polygon. To check to see if this happened, symbolize the resultant polygons by one of the original attributes using “Unique Values” option under the Show -> Quantities dialog on the Symbology tab of the feature class’s properties. Leave the “” option checked then draw the feature class. If the symbol assigned to is displayed anywhere you know that the point fell outside the original polygon and you have to move it into the polygon. You can do this using the Editor for any of the points that are now outside their respective polygons.