Ваш LineString wkt, вероятно, содержит геометрию, которая не является допустимым многоугольником. Например:
>>> from shapely.geometry import Polygon
>>> from shapely.wkt import loads
>>> wkt = 'LINESTRING (0 0, 1 1, 0 0)'
>>> poly = Polygon(loads(wkt).coords)
Как вы можете видеть, LineString начинается и заканчивается в одной и той же вершине и имеет несколько ребер, но это не делает его многоугольником, так как у вас есть только 3 точки, то есть «Неверно» количество точек в LinearRing найдено 3 ":
IllegalArgumentException: Invalid number of points in LinearRing found 3 - must be 0 or >= 4
Shell is not a LinearRing
, но poly
по-прежнему является объектом типа Polygon
>>> type(poly)
<class 'shapely.geometry.polygon.Polygon'>
, поэтому вы можете проверить, является ли он допустимым многоугольником с помощью:
>>> poly.is_empty
True
Почему вы хотите проверить, является ли это действительный полигон таким образом? Потому что IllegalArgumentException
НЕ является действительным исключением, поскольку вы не можете поймать его с помощью try/except
. Я не знаю почему. Я надеюсь, что кто-то в комментариях знает.