supermercado icon indicating copy to clipboard operation
supermercado copied to clipboard

_feature_extrema() in burntiles.py does not handle multigeometry types

Open iboates opened this issue 4 years ago • 3 comments

Hi,

I don't actually know much about this library but I had a problem when using robosat where multipolygons were causing a breakdown

I eventually tracked it down to this function in burntiles.py. A multipolygon causes it to crash out due to the case not being handled in the if/elif construct and there is no else statement.

Like I said I don't know much about this library so I don't know if it is possible to make this handle multigeometry types. If not then maybe it should throw a more descriptive error.

Cheers

iboates avatar Mar 27 '21 14:03 iboates

I encountered this same issue.

  File "/Users/philvarner/code/titiler/venv/lib/python3.8/site-packages/supermercado/burntiles.py", line 78, in burn
    bounds = find_extrema(polys)
  File "/Users/philvarner/code/titiler/venv/lib/python3.8/site-packages/supermercado/burntiles.py", line 44, in find_extrema
    *[_feature_extrema(f["geometry"]) for f in features]
  File "/Users/philvarner/code/titiler/venv/lib/python3.8/site-packages/supermercado/burntiles.py", line 44, in <listcomp>
    *[_feature_extrema(f["geometry"]) for f in features]
  File "/Users/philvarner/code/titiler/venv/lib/python3.8/site-packages/supermercado/burntiles.py", line 38, in _feature_extrema
    return min(x), min(y), max(x), max(y)
UnboundLocalError: local variable 'x' referenced before assignment

even if MultiPolygon can't be supported here, it would be nice to have an else that raises a clear exception, rather than this incidental one.

philvarner avatar May 27 '21 18:05 philvarner

Hi folks,

I tried to solve this problem with pull request #50 (supporting MultiPolygon), and it works for me.

You may try that commit too.

mob5566 avatar Mar 08 '22 04:03 mob5566