diff --git a/quackosm/pbf_file_reader.py b/quackosm/pbf_file_reader.py index 43fbb86..5cd68cf 100644 --- a/quackosm/pbf_file_reader.py +++ b/quackosm/pbf_file_reader.py @@ -630,9 +630,10 @@ def _get_oriented_geometry_filter( double_iteration = itertools.chain(perimeter[:-1], perimeter) for point in double_iteration: if point == smallest_point: - new_coords.append(point) + new_coords.append((round(point[0], 7), round(point[1], 7))) while len(new_coords) < len(perimeter): - new_coords.append(next(double_iteration)) + next_point = next(double_iteration) + new_coords.append((round(next_point[0], 7), round(next_point[1], 7))) break return LinearRing(new_coords) if isinstance(geometry, Polygon): diff --git a/tests/base/test_pbf_file_reader.py b/tests/base/test_pbf_file_reader.py index 3aa388a..cea2768 100644 --- a/tests/base/test_pbf_file_reader.py +++ b/tests/base/test_pbf_file_reader.py @@ -246,7 +246,12 @@ def test_pbf_reader_proper_tags_reading( ) def test_geometry_orienting(geometry: BaseGeometry): """Test if geometry orienting works properly.""" - assert geometry.equals(PbfFileReader(geometry_filter=geometry)._get_oriented_geometry_filter()) + oriented_geometry = cast( + BaseGeometry, PbfFileReader(geometry_filter=geometry)._get_oriented_geometry_filter() + ) + intersection_area = geometry.intersection(oriented_geometry).area + iou = intersection_area / (geometry.area + oriented_geometry.area - intersection_area) + ut.assertAlmostEqual(iou, 1, delta=1e-4) # Copyright (C) 2011 by Hong Minhee ,