Skip to content

Commit df0e10e

Browse files
authored
Merge pull request #120 from developmentseed/bug/118-skip-bad-geometries
Skip invalid or empty geometries, close #118
2 parents 5cbf1ff + 3562886 commit df0e10e

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

label_maker/label.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import mapbox_vector_tile
1111
import pyproj
1212
from shapely.geometry import shape, mapping, Polygon
13+
from shapely.errors import TopologicalError
1314
from rasterio.features import rasterize
1415
from geojson import Feature, FeatureCollection as fc
1516
from mercantile import tiles, feature, Tile
@@ -223,10 +224,15 @@ def _mapper(x, y, z, data, args):
223224
if ff(feat):
224225
feat['geometry']['coordinates'] = _convert_coordinates(feat['geometry']['coordinates'])
225226
geo = shape(feat['geometry'])
226-
geo = geo.intersection(clip_mask)
227+
try:
228+
geo = geo.intersection(clip_mask)
229+
except TopologicalError as e:
230+
print(e, 'skipping')
231+
break
227232
if cl.get('buffer'):
228233
geo = geo.buffer(cl.get('buffer'), 4)
229-
geos.append((mapping(geo), i + 1))
234+
if not geo.is_empty:
235+
geos.append((mapping(geo), i + 1))
230236
result = rasterize(geos, out_shape=(256, 256))
231237
return ('{!s}-{!s}-{!s}'.format(x, y, z), result)
232238
return ('{!s}-{!s}-{!s}'.format(x, y, z), np.array())

test/integration/test_segmentation_labels.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_cli(self):
2727
# our labels should look like this
2828
expected_sums = {
2929
'62092-50162-17': 0,
30-
'62092-50163-17': 0,
30+
'62092-50163-17': 2526,
3131
'62092-50164-17': 13500,
3232
'62093-50162-17': 36822,
3333
'62093-50164-17': 2400,

test/integration/test_segmentation_labels_sparse.py

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def test_cli(self):
2626

2727
# our labels should look like this
2828
expected_sums = {
29+
'62092-50163-17': 2526,
2930
'62092-50164-17': 13500,
3031
'62093-50162-17': 36822,
3132
'62093-50164-17': 2400,

0 commit comments

Comments
 (0)