Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ST_IsValid not catching Error: IllegalArgumentException: Points of LinearRing do not form a closed linestring #406

Open
StephanGeorg opened this issue Sep 20, 2024 · 0 comments

Comments

@StephanGeorg
Copy link

StephanGeorg commented Sep 20, 2024

I came across this issue when working with Overture Building data from OpenStreetMap.

D select st_geometrytype("geometry"), count(1) from it_buildings where source = 'OpenStreetMap' group by st_geometrytype("geometry");
┌───────────────────────────┬──────────┐
│ st_geometrytype(geometry) │ count(1) │
│       geometry_type       │  int64   │
├───────────────────────────┼──────────┤
│ POLYGON                   │ 15169443 │
│ MULTIPOLYGON              │     1122 │
└───────────────────────────┴──────────┘

when trying to calculate centroids of these polygons an error is thrown:

D select st_centroid("geometry") from it_buildings where source = 'OpenStreetMap' and st_geometrytype("geometry") = 'POLYGON';
Invalid Input Error: IllegalArgumentException: Points of LinearRing do not form a closed linestring

even st_isValid does not catch these errors:

D select st_isvalid("geometry") from it_buildings where source = 'OpenStreetMap' and st_geometrytype("geometry") = 'POLYGON';
Invalid Input Error: IllegalArgumentException: Points of LinearRing do not form a closed linestring

nor st_makevalid can fix these geometries

D select st_makevalid("geometry") from it_buildings where source = 'OpenStreetMap' and st_geometrytype("geometry") = 'POLYGON';
Invalid Input Error: IllegalArgumentException: Points of LinearRing do not form a closed linestring

I could provide some example data but I was able to only narrow down to where source = 'OpenStreetMap' and st_geometrytype("geometry") = 'POLYGON' which is still 15169443 rows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant