code: def _compute_predicate(self, lhs, rhs, preprocessor_result):
      # A linestring crosses another linestring iff
      # they intersect, and none of the points of the
      # intersection are in the boundary of the other
      pli = _basic_intersects_pli(rhs, lhs)
      intersections = _points_and_lines_to_multipoints(pli[1], pli[0])
      equals_lhs_count = _basic_equals_count(intersections, lhs)
      equals_rhs_count = _basic_equals_count(intersections, rhs)
      equals_lhs = equals_lhs_count != intersections.sizes
      equals_rhs = equals_rhs_count != intersections.sizes
      equals = equals_lhs & equals_rhs
      return equals
  
file_path: cuspatial/python/cuspatial/cuspatial/core/binpreds/feature_crosses.py
imports: from cuspatial.core.binpreds.basic_predicates import _basic_equals_count, _basic_intersects_count, _basic_intersects_pli
  from cuspatial.core.binpreds.binpred_interface import BinPred, ImpossiblePredicate
  from cuspatial.core.binpreds.feature_equals import EqualsPredicateBase
  from cuspatial.core.binpreds.feature_intersects import IntersectsPredicateBase
  from cuspatial.utils.binpred_utils import LineString, MultiPoint, Point, Polygon, _false_series, _points_and_lines_to_multipoints
label_desc: Use image node_id 1 for calling the LineStringLineStringCrosses obj's underlying member method code with example usage: obj._compute_predicate(lhs, rhs, preprocessor_result) and returns: equals