I've been given a "background" dataset which is designed to draw as the first layer in a complicated map. For some reason the data provider has previously erased this dataset with roads, parks, etc. The white parts of this image are the areas which have been cut from the dataset, which is comprised of many individual polygons.

enter image description here

The problem is that the datasets which draw above this layer have changed, leading to many small gaps visible when the datasets are overlaid.

enter image description here

What is the best approach to filling in all the gaps in the background polygon? The full dataset looks like the image below - I want the outer edges to remain, with the white gaps in the middle filled in:

enter image description here

I would normally try Buffer and Dissolve, but I don't have a dataset showing the outside edges of this shape, so I can't clip the resultant polygon back to the original shape. Typically, this dataset doesn't align with other "authoritative" coastline datasets.

I only have a Basic license so don't have access to fancy Topology tools. Am I stuck with manually digitising the outer boundary of this shape?

  • Does the background polygon(s) need to be a single shape or stay the multiple? If you had Advanced I'd say Aggregate Polygons, but since that's not an option... Is there a reason Union with the no gaps option wouldn't work? With Basic you're limited to two layers at a time, but if everything else and the background are the last two combined, that should create polys to fill the gaps and then you could dissolve it all to get a single shape. ET GeoTools/Wizards also have some gap cleaning/filling tools that might be of use.
    – Chris W
    Aug 29, 2014 at 21:12

2 Answers 2

  1. Create 1 big rectangular polygon = extent of 1st ( no roads )
  2. Union it with 1st layer, delete ones with FIDfirst!=-1
  3. Explode result to single part polygon = BLANKS
  4. Calculate centroids of 2nd layer to create point shapefile with attributes of the parent, e.g. 'lake','road'. = PNTS
  5. Spatial join PNTS with BLANKS, keeping unique BLANKS id of blank polygons=ATTRIBS.
  6. Join ATTRIBS table to BLANKS, using blanks id.

You might experiment with type of spatial join at 5 because centroid points might fall outside BLANKS. This will fill gaps. No easy solution for outer boundary, sorry


after you buffer and dissolve with a positive buffer value, as you say, you can buffer once again with a negative buffer value and you have your background polygon.


to avoid using a large buffer (that could remove some details that you want to keep), you can first union and dissolve with the "black" layer of the streets : only small holes will remain.

  • I think that may blow away some of the gaps that need to be preserved. It will also round corners. Aug 29, 2014 at 13:16
  • It may remove some gaps, but if you take half the size of the largest street this will not have too much effect. Maybe the two very large ones could be filled manually (this would need only a few click because precision does not matter in this case) o that you can safely apply he buffer iwthout removing gaps. The rounding is not a problem in this case, because it is used for background (sharp corner will be on top).
    – radouxju
    Aug 29, 2014 at 13:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.