Contents:
The
purpose:
The
purpose of this document is to discuss the processes of simplification
(generalization) and smoothing features in ArcGIS (ArcView license). While
the generalization and smoothing of polylines is comparatively simple process,
when applied to polygons there are certain complications connected to the
topological relationships between the adjacent polygons.
ET
GeoWizards functions available
ArcGIS
has standard Generalize and Smooth functions, but they are available only
for users with ArcEditor or ArcInfo licenses
ET
GeoWizards offers the following tools to ArcGIS users with any license :

Generalize
 Generalizes ( reduces the number of vertices required to represent a
polyline ) the features of a polyline dataset using the DouglasPoiker
algorithm

Densify
 Densifies ( adds vertices to polyline at a userspecified
tolerance ) the features of a polyline dataset.

Smooth
 Smoothes
the features of a polyline dataset using three different smoothing
algorithms
Note
that all the functions above are available only for polylines. In this
document we'll describe a procedure that will make use of these tools to
Generalize/Smooth polygons.
All
the links in this document are to the functions available via the
interface of ET GeoWizards. If the procedure is to be performed in the
Model Builder  refer to the corresponding tools available in the ET
GeoWizards ToolBox. If performed via a VBA script  refer to ET
GeoWizards Scripting
Definitions:

Generalization
 the process of removing some vertices from a polyline or polygon boundary without destroying its essential shape.

Smoothing
 the process of introducing new vertices in a polyline or polygon
boundary in order to achieve shapes with no sharp corners.
The
importance:
In
many cases the data that we receive is over sampled. Nowadays a big
part of the GIS data is captured via GPS devices that get locations
automatically every few seconds. In this fashion a straight line sometimes
is described by many vertices when actually only two vertices are needed.
This not only increases the size of the data, but makes certain
geoprocessing operations on the data to need extra computer memory
to complete. Note that the memory needed is dependant not only on the
number of features, but also on the complexity of these features,
measured in the total number of vertices.
Over sampled polygons 
Polygons represented
with the significant vertices only 


Smoothing/Generalizing
polygons. Why it is so difficult?
In
the Shapefiles and GeoDatabases (not in the coverages) each polygon has
its own outline. This means that the common boundary between two adjacent
polygons is represented by two coincident polylines. If we smooth/generalize
these adjacent polygons each of the outlines will be smoothed/generalized
separately and DIFFERENTLY. As a result we will get gaps and/or overlaps
on the boundary. With other words we will end up with destroyed topology.
Further in this document all the examples and explanations will be based
on the Smoothing, because the effect is more pronounced, but everything is
applicable for the generalization process as well.
Original
Polygons 
Polygons
Smoothed directly 


The
example above visualizes the gaps resulting from Smoothing the polygons
directly.
So,
how to smooth polygons?
Lets
think a bit in the good old Coverage way, where all the geometries were
stored as arcs and the polygons were build from these arcs (no duplicate
geometry on the boundary of two adjacent polygons). If something was
changed in the geometry of the Arcs it reflected in the polygons built
from them. If we smooth/generalize an Arc, the two polygons in which this
Arc participates will be smoothed/generalized EQUALLY.
Here
is the ArcGIS procedure that emulates this behavior. All the functions are
available in ET GeoWizards.

Convert
the polygons to polylines (this just creates a polyline shapefile from
the polygon boundaries). Polygon To Polyline function

Clean
the polylines (this will create all intersections and remove the
duplicate polylines on the boundaries between two adjacent polygons). Clean
Polyline function

Smooth
the polylines (there is no duplicate polylines, so no topological
problems will be introduced). Smooth Polyline function

Build
new polygons from smoothed polylines (this will give us smoothed
topologically correct polygons). Build Polygons function
1. Polygon
To Polyline 
2. Clean
Polylines 


3. Smooth
Polylines (BSpline method used) 
4. Build
Polygons 


How
to restrict the Smoothing and remove the unnecessary vertices after
smoothing? The degree of
smoothing can be controlled by the parameters used in the Smooth
function. In some cases however due to the lack of enough vertices the
parameters used can not restrict the smoothing too much. In such cases,
we can introduce new vertices to the cleaned polylines (Densify
function) before proceeding with smoothing. After smoothing we can
remove the unnecessary vertices before building the polygons.
Polygons
smoothed with the procedure above 
The degree
of smoothing to high 


Original
vertices 
Vertices
after Densify 


Smoothed
densified polylines 
Resulting
smoothed polygons 


The procedure gets just a bit more
complex

Convert
the polygons to polylines (this just creates a polyline shapefile from
the polygon boundaries). Polygon To Polyline function

Clean
the polylines (this will create all intersections and remove the
duplicate polylines on the boundaries between two adjacent polygons). Clean
Polyline function

Insert
new vertices  Densify Polylines function

Smooth
the polylines (there is no duplicate polylines, so no topological
problems will be introduced). Smooth Polyline function

Remove
the excess vertices  Generalize Polylines function

Build
new polygons from smoothed polylines (this will give us smoothed
topologically correct polygons). Build Polygons function
What
about the attributes?
A reasonable question. In the process of
converting the polygons to polylines and cleaning the polylines we've
lost the polygon attributes. We can rectify this by adding a three
simple steps to the procedure:
 Get the label points of the smoothed
polygons  Polygon To Point function with the Label Point
option
 Get the attributes of the original
polygons to the label points created above  The standard ArcGIS
Spatial Join function (Polygons to Points). If used in the Model
Builder  the Spatial
Join tool of ET GeoWizards
 Get the attributes from the label
points to the smoothed polygons  The standard ArcGIS Spatial Join
function (Points To Polygons). If used in the Model Builder  the Spatial
Join tool of ET GeoWizards
This
is getting too complex....
ET GeoWizards offers
three ways of achieving the above procedure
 Via the User Interface  just perform
the steps one by one using the Wizards available
 With a simple VBA script  many of the
functions of ET GeoWizards are available for use within VBA scripts
or custom applications written in any COM language. See an example
with working code here
 Create a Geoprocessing Model in the
Model Builder (ArcGIS 9.0 and above only) using the ET GeoWizards
geoprocessing tools made available in version 9.2. A model
performing the task is included in the download of ET GeoWizards
for ArcGIS 9.x
A
diagram of the process:
