docstr: Flatten any rhs into only its points xy array. This is necessary
  because the basic predicate for contains, point-in-polygon,
  only accepts points.
  
  Parameters
  ----------
  lhs : GeoSeries
      The left-hand GeoSeries.
  rhs : GeoSeries
      The right-hand GeoSeries.
  
  Returns
  -------
  result : PreprocessorResult
      A PreprocessorResult object containing the original lhs and rhs,
      the rhs with only its points, and the indices of the points in
      the original rhs.
docstr_tok: ["Flatten","any","rhs","into","only","its","points","xy","array",".","This","is","necessary","because","the","basic","predicate","for","contains",",","point-in-polygon",",","only","accepts","points",".","Parameters","--","--","--","--","--","lhs",":","GeoSeries","The","left-hand","GeoSeries",".","rhs",":","GeoSeries","The","right-hand","GeoSeries",".","Returns","--","--","--","-","result",":","PreprocessorResult","A","PreprocessorResult","object","containing","the","original","lhs","and","rhs",",","the","rhs","with","only","its","points",",","and","the","indices","of","the","points","in","the","original","rhs","."]
code: def _preprocess_multipoint_rhs(self, lhs, rhs):
      """Flatten any rhs into only its points xy array. This is necessary
      because the basic predicate for contains, point-in-polygon,
      only accepts points.
  
      Parameters
      ----------
      lhs : GeoSeries
          The left-hand GeoSeries.
      rhs : GeoSeries
          The right-hand GeoSeries.
  
      Returns
      -------
      result : PreprocessorResult
          A PreprocessorResult object containing the original lhs and rhs,
          the rhs with only its points, and the indices of the points in
          the original rhs.
      """
      # RHS conditioning:
      point_indices = None
      # point in polygon
      if contains_only_linestrings(rhs):
          # condition for linestrings
          geom = rhs.lines
      elif contains_only_polygons(rhs):
          # polygon in polygon
          geom = rhs.polygons
      elif contains_only_multipoints(rhs):
          # mpoint in polygon
          geom = rhs.multipoints
      else:
          # no conditioning is required
          geom = rhs.points
      xy_points = geom.xy
  
      # Arrange into shape for calling point-in-polygon
      point_indices = geom.point_indices()
      from cuspatial.core.geoseries import GeoSeries
  
      final_rhs = GeoSeries(
          GeoColumn._from_points_xy(xy_points._column)
      )
      preprocess_result = PreprocessorResult(
          lhs, rhs, final_rhs, point_indices
      )
      return preprocess_result
  
file_path: cuspatial/python/cuspatial/cuspatial/core/binpreds/contains_geometry_processor.py
imports: import cupy
  import cudf
  from cudf.core.dataframe import DataFrame
  from cudf.core.series import Series
  from cuspatial.core._column.geocolumn import GeoColumn
  from cuspatial.core.binpreds.binpred_interface import BinPred, PreprocessorResult
  from cuspatial.utils.binpred_utils import _count_results_in_multipoint_geometries, _false_series, _true_series
  from cuspatial.utils.column_utils import contains_only_linestrings, contains_only_multipoints, contains_only_polygons
label_desc: Use image node_id 1 for calling the ContainsGeometryProcessor obj's underlying member method code with example usage: obj._preprocess_multipoint_rhs(lhs, rhs) and returns: preprocess_result