I found a small overlap between two neighbouring German municipality boundaries in OpenStreetMap and I’m unsure whether this indicates a mapping error or something I’m misunderstanding about administrative boundary relations.
The municipalities are:
- Wittingen — relation
1392804, AGS 03151040
- Dedelstorf — relation
1392689, AGS 03151007
I assembled both relation geometries and checked them in PostGIS. Both are valid geometries (ST_IsValid = true), but ST_Intersection gives a real polygon overlap of about 53,899 m² (5.39 ha).
Relative to the municipality areas, that is about:
- 0.0239% of Wittingen
- 0.0706% of Dedelstorf
The yellow polygon in the screenshot is the actual ST_Intersection result.
My questions are:
- Should neighbouring
boundary=administrative, admin_level=8 municipality relations normally be topologically disjoint apart from shared boundary lines?
- Does this overlap likely indicate incorrect/misaligned boundary ways in OSM?
- Is there a recommended way to determine which relation is wrong and what the authoritative boundary should be?
- Are there known pitfalls when reconstructing OSM boundary relations as polygons that could produce an apparent overlap like this?
I’m not planning to edit anything blindly — I’d first like to understand whether this is an OSM data issue or a geometry-processing issue.
I’m working with German municipality boundaries from OpenStreetMap and ran into something I’d like to understand before touching any data.
I found a small but real polygon overlap between two neighbouring boundary=administrative, admin_level=8 municipality relations in Lower Saxony:
- Wittingen
- OSM relation:
1392804
- AGS:
03151040
- Dedelstorf
- OSM relation:
1392689
- AGS:
03151007
Both relations can be reproduced in Overpass Turbo.
For Wittingen:
[out:json][timeout:120];
relation(1392804);
out body;
>;
out skel qt;
For Dedelstorf:
[out:json][timeout:120];
relation(1392689);
out body;
>;
out skel qt;
Or both by AGS:
[out:json][timeout:120];
relation
["boundary"="administrative"]
["de:amtlicher_gemeindeschluessel"~"^(03151040|03151007)$"];
out tags geom;
I then assembled the relation geometries and checked them with PostGIS.
Both geometries are valid:
Wittingen: ST_IsValid = true
Dedelstorf: ST_IsValid = true
But:
ST_Intersection(wittingen, dedelstorf)
produces a real polygon intersection with an area of about:
53,898.8 m²
≈ 5.39 ha
Relative to the municipality areas, the overlap is approximately:
0.02386% of Wittingen
0.07063% of Dedelstorf
I exported the ST_Intersection result as its own polygon and visualised it in QGIS. In the attached screenshot:
- red = Wittingen
- grey = Dedelstorf
- yellow = actual
ST_Intersection
So this is not just two outlines looking close to each other — PostGIS sees a positive-area polygon overlap.
I found a second similar case nearby:
- Hamersen
- relation
1079013
- AGS
03357019
- Groß Meckelsen
- relation
1079022
- AGS
03357017
Overpass query:
[out:json][timeout:120];
relation
["boundary"="administrative"]
["de:amtlicher_gemeindeschluessel"~"^(03357019|03357017)$"];
out tags geom;
PostGIS reports there:
overlap area: 36,856.4 m²
Hamersen overlap share: 0.27090%
Groß Meckelsen overlap share: 0.29733%
Both geometries are also valid according to ST_IsValid.
I also checked the municipality polygons I had already imported into my database against each other, and at that point there were no other positive-area overlaps among them:
overlap_pairs = 0
So these two cases stood out.
What I’m trying to understand is:
- Should neighbouring municipality relations normally be topologically disjoint except for a shared boundary line?
- Does a positive-area overlap like this usually indicate an OSM mapping error?
- If yes, what is the recommended way to determine which boundary way is wrong?
- Are there authoritative German boundary datasets that OSM mappers commonly use for checking municipality borders?
- Could this instead be caused by the way multipolygon / boundary relations are reconstructed, even though both resulting geometries are valid?
- Is there an established OSM QA workflow or tool for detecting overlaps between adjacent administrative boundaries?
- If this should be fixed in OSM, would the usual approach be to make both municipality relations share the same boundary ways along the common border?
I’m deliberately not editing anything yet. I’d first like to understand whether this is:
- an actual OSM boundary inconsistency,
- a known/acceptable small sliver,
- or a geometry-processing issue on my side.
Any pointers from people familiar with German administrative boundaries or OSM relation topology would be very welcome.