Available with Production Mapping license.
Summary
Many types of polygon features should have coincident boundaries with other features. Coincident boundaries may be important for features within a single polygon feature class, such as parcels, or between features in different feature classes, such as lakes and surrounding vegetation. A gap between the features exists when there is space between the boundaries of two or more features.
Illustration
Usage
If this tool is run in an edit session in ArcMap, you can stop the edit session without saving changes to restore features that have been modified.
The order of the entries in the Input Polygon Features list is important when the Fill Options parameter is set to FILL_BY_ORDER. For instance, if vegetation is first in the list, and lakes are the second input polygons when FILL_BY_ORDER is selected, the vegetation features will always be adjusted to fill the gap. If the order is reversed and lakes appear first in the list, the lake features will always be adjusted to fill the gap.
When multiple compare feature layers are provided and the Fill Options parameter is set to FILL_BY_LENGTH, the area of the gap is added to the feature class that shares the longest boundary with the gap. For instance, if the gap shares a longer boundary with feature layer A and a shorter boundary with feature layer B, the area of the gap will be added to the feature in feature class A.
This tool requires one or more input feature classes. If only one input feature class is specified, the tool will look for gaps between individual features in that feature class. When multiple feature classes are specified, the tool will look for gaps between all features in all the input feature classes. The tool will find gaps between two features in the same feature class as well as gaps between features in the different feature classes.
When looking for gaps between multiple feature classes, add all of the feature classes as input polygons. For example, if there should be no gaps between features in the lakes, grass, and forest feature classes, add them all in the Input Polygon Features parameter. If you just add lakes and forests, the tool may identify a gap between lakes and forests and fill the gap. However, the area that was identified as a gap may have had a grass feature which will result in the modified feature overlapping the grass. To prevent possible overlaps, add all feature classes into the Input Polygon Features parameter.
Unenclosed gaps exist when two polygon boundaries are within a specified distance to each other. The two polygon features do not have to touch each other at any point.
When the Fill Unenclosed Gaps option is checked, the unenclosed gaps will be filled first. After unenclosed gaps are filled, then enclosed gaps will be filled.
Enclosed gaps exist when there are gaps between two polygon boundaries.
This tool does not fill self-gaps. If a feature is a multipart feature or a feature with holes, the tool will not fill the holes or gaps between the parts.
Syntax
FillGaps(in_polygon_features, maximum_gap_area, fill_options, {fill_unenclosed_gaps}, {maximum_gap_distance})
Parameter | Explanation | Data Type |
in_polygon_features [in_polygon_features,...] | The polygon features analyzed for gaps. This tool searches for gaps between these features based on the spatial relationships between them. | Feature Layer |
maximum_gap_area | The maximum area that can be considered a gap. If the area in question is above this set threshold, it will not be filled. | Areal unit |
fill_options | Indicates how the tool fills enclosed and unenclosed gaps.
| String |
fill_unenclosed_gaps (Optional) | Indicates if the tool will fill unenclosed gaps.
| Boolean |
maximum_gap_distance (Optional) |
Maximum distance between features in which a gap can be filled. Used only when Fill Unenclosed Gaps is enabled. | Linear Unit |
Code sample
FillGaps example 1 (stand-alone script)
The following stand-alone sample script demonstrates how to use FillGaps for enclosed features.
# Name: FillGapsExample_1.py
# Description: Fills gaps between features
# Author: Esri
# Date: March 2015
# Import arcpy module
import arcpy
# Import toolbox
arcpy.ImportToolbox(r'C:\Program Files (x86)\ArcGIS\EsriProductionMapping\Desktop10.3\ArcToolbox\Toolboxes\Production Mapping Tools.tbx')
# Check out Production Mapping license
arcpy.CheckOutExtension("Foundation")
# Set environment
worksp = "C:\data\FillGaps.gdb"
# Define variables
inPoly1 = "C:\data\FillGaps.gdb\BuiltupA"
inPoly2 = "C:\data\FillGaps.gdb\LakeresA"
inPoly3 = "C:\data\FillGaps.gdb\PolbndA"
max_gap = "700000 SquareMeters"
fill_options = "FILL_BY_LENGTH"
fill_unenclosed_gaps = "FILL_ENCLOSED_ONLY"
# Create feature layer for input features
arcpy.MakeFeatureLayer_management(inPoly1,"inBuiltupLyr")
arcpy.MakeFeatureLayer_management(inPoly2,"inLakeResLyr")
arcpy.MakeFeatureLayer_management(inPoly3,"inPolbndLyr")
# Fill gaps between the different layers
arcpy.FillGaps_production("inBuiltupLyr;inLakeResLyr;inPolbndLyr",max_gap, fill_options, fill_unenclosed_gaps)
# Check in Production Mapping license
arcpy.CheckInExtension("Foundation")
FillGaps example 2 (stand-alone script)
The following stand-alone sample script demonstrates how to use FillGaps for unenclosed features.
# Name: FillGapsExample_2.py
# Description: Fills gaps between features
# Author: Esri
# Date: March 2015
# Import arcpy module
import arcpy
# Import toolbox
arcpy.ImportToolbox(r'C:\Program Files (x86)\ArcGIS\EsriProductionMapping\Desktop10.3\ArcToolbox\Toolboxes\Production Mapping Tools.tbx')
# Check out Production Mapping license
arcpy.CheckOutExtension("Foundation")
# Set environment
worksp = "C:\data\FillGaps.gdb"
# Define variables
inPoly1 = "C:\data\FillGaps.gdb\BuiltupA"
inPoly2 = "C:\data\FillGaps.gdb\LakeresA"
inPoly3 = "C:\data\FillGaps.gdb\PolbndA"
max_gap = "700000 SquareMeters"
fill_options = "FILL_BY_LENGTH"
fill_unenclosed_gaps = "FILL_ALL"
max_gap_distance = "20 Meters"
# Create feature layer for input features
arcpy.MakeFeatureLayer_management(inPoly1,"inBuiltupLyr")
arcpy.MakeFeatureLayer_management(inPoly2,"inLakeResLyr")
arcpy.MakeFeatureLayer_management(inPoly3,"inPolbndLyr")
# Fill gaps between the different layers
arcpy.FillGaps_production("inBuiltupLyr;inLakeResLyr;inPolbndLyr",max_gap, fill_options, fill_unenclosed_gaps, max_gap_distance)
# Check in Production Mapping license
arcpy.CheckInExtension("Foundation")
Environments
Licensing information
- ArcGIS Desktop Basic: No
- ArcGIS Desktop Standard: Requires Production Mapping
- ArcGIS Desktop Advanced: Requires Production Mapping