Given two arcpy.Polyline geometries.
If they only touch each other:
poly1.touches(poly2) == True
if poly2 touches and at the same time crosses poly1:
poly1.touches(poly2) == False
poly1.crosses(poly2) == True
Therefore, I offer to change the logic. If they touch - it's True, whatever other relations they have.
By definition, if two polylines cross, then they don't touch and vice versa. Here's how it works. The interior of a polyline is the set of points in the polyline that are not start or end points of a path. If the intersection of the interiors is empty, but the intersection of the polylines is not empty (they intersect only at start or end points of a path), then the polylines touch. Two polylines cross if they meet at points only, and at least one of the shared points is internal to both polylines.
See https://github.com/ArcGIS/arcgis-pro-sdk/wiki/ProConcepts-Geometry#predefined-relational-operations
For your case, you can use the Relation operator. See https://developers.arcgis.com/python/latest/api-reference/arcgis.geometry.html#relation
@AnnetteLocke , thank you for the answer. I got your point, and I appreciate the tip for using Relation operator in ArcGIS API for Python. Thought, could we do something with Arcpy? Like add a Relation method to Arcpy, or a parameter to the touch method to find true relation, even if interiors intersect? Please.
Eugene, thank you for the suggestion. The Relation method will be added to ArcPy in a future release.
You've got our attention! We think this is a good suggestion and have entered it in our backlog. We encourage the community to continue voting and sharing feedback which will help teams gauge user demand.
Status was mistakenly moved to "Open" state, placing issue back into "Under Consideration" state.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.