tilemaker
tilemaker copied to clipboard
self intersecting polygons reported when processing shapefile
I am using the land polygons from natural earth and get self intersections reported, however when I analyse the source geometry in QGIS it seems to be valid. I thought this could be coming from the simplification, but even if it is turned off it still reports the problem: layer config
"land": { "minzoom": 0, "maxzoom": 8, "source": "ne_data/ne_10m_land/ne_10m_land.shp"},
"landcp": { "minzoom": 0, "maxzoom": 8, "source": "ne_data/ne_10m_land/ne_10m_land.shp", "simplify_below": 8, "simplify_level": 0.0001, "simplify_ratio": 2 },
output:
Bounding box -180, -85.06, 180, 85.06
Reading .shp land
Shapefile entity #0 type 5 is invalid. Parts:98. Reason:Geometry has invalid self-intersections. A self-intersection point was found at (-159.369, -180); method: m; operations: i/x; segment IDs {source, multi, ring, segment}: {0, 0, -1, 7989}/{0, 0, -1, 8119}... failed to correct. Reason: Multi-polygon has intersecting interiors
Shapefile entity #6 type 5 is invalid. Parts:69. Reason:Geometry has invalid self-intersections. A self-intersection point was found at (165.088, -21.8912); method: i; operations: i/u; segment IDs {source, multi, ring, segment}: {0, 56, -1, 280}/{0, 56, -1, 282}... failed to correct. Reason: Geometry has invalid self-intersections. A self-intersection point was found at (165.088, -21.8912); method: i; operations: i/u; segment IDs {source, multi, ring, segment}: {0, 56, -1, 280}/{0, 56, -1, 282}
Reading .shp landcp
Shapefile entity #0 type 5 is invalid. Parts:98. Reason:Geometry has invalid self-intersections. A self-intersection point was found at (-159.369, -180); method: m; operations: i/x; segment IDs {source, multi, ring, segment}: {0, 0, -1, 7989}/{0, 0, -1, 8119}... failed to correct. Reason: Multi-polygon has intersecting interiors
Shapefile entity #6 type 5 is invalid. Parts:69. Reason:Geometry has invalid self-intersections. A self-intersection point was found at (165.088, -21.8912); method: i; operations: i/u; segment IDs {source, multi, ring, segment}: {0, 56, -1, 280}/{0, 56, -1, 282}... failed to correct. Reason: Geometry has invalid self-intersections. A self-intersection point was found at (165.088, -21.8912); method: i; operations: i/u; segment IDs {source, multi, ring, segment}: {0, 56, -1, 280}/{0, 56, -1, 282}
input file: https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/physical/ne_10m_land.zip
Could be reprojection artefacts, or a difference in validity tests between JTS/GEOS (as used by QGIS) and Boost.Geometry (as used by tilemaker). They're only warnings - you can safely ignore them, but if you find any land polygons disappearing as a result then do lodge an issue.
I just found land polygons disappearing here (zooming in):
zooming close:
Thanks. I'm not going to have a chance to look at this immediately but that's helpful.
for completeness, this is the config line for the land polygons:
"land": { "minzoom": 0, "maxzoom": 8, "source": "ne_data/ne_10m_land/ne_10m_land.shp", "simplify_below": 8, "simplify_level": 0.0001, "simplify_ratio": 2 },
as you can see I only created tiles to zoom 8, and did not simplify the z8 tiles, so what you see above is likely coming from reprojection as you suggested.
There have been a few changes recently that might fix this - I haven't tried it out with this dataset but you might want to have a look.