In your case, a.touches(A)
returns False
because documentation says:
touches
returnsTrue
if the objects have at least one point in common and their interiors do not intersect with any part of the other.
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.
a.difference(A)
returns empty geometry because all interior of a
is in A
. But A.difference(a)
gives: