code: def _preprocess(self, lhs, rhs):
      intersects = _basic_intersects_count(rhs, lhs) > 0
      touches = rhs.touches(lhs)
      contains = rhs.contains(lhs)
      return ~touches & intersects & ~contains
  
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 LineStringPolygonCrosses obj's underlying member method code with example usage: obj._preprocess(lhs, rhs) and returns: unknown