In your case, `a.touches(A)` returns `False` because documentation says: > `touches` returns `True` if the objects have at least one point in common and > **their interiors do not intersect** with any part of the other. [![enter image description here][1]][1] Also `A.contains(a)` returns `False` because a lot of points of `a` lie in the extrior of `A`. Documentation says: > `contains` returns True **if no points of other lie in the exterior** of the object and at least one point of the interior of other lies in the interior of object. [1]: https://i.sstatic.net/0XqXZ.png