Либо я что-то упускаю - я не вижу этого в документации - или это не встроено в Shapely: как определить, является ли LineString сложным, то есть самопересекающимся?
Это базовый класс class shapely.geometry.base.BaseGeometry имеет опцию is_simple, которая говорит:
class shapely.geometry.base.BaseGeometry
is_simple
Истина, если геометрия проста, что означает, что любые самопересечения находятся только в граничных точках, иначе False
http://toblerity.org/shapely/shapely.geometry.html#shapely.geometry.base.BaseGeometry
line = LineString([(0, 0), (1, 1)]) line.is_simple