class_docstr: Parameters
  ----------
  data : A tuple of four cudf.Series of list dtype
  meta : A GeoMeta object (optional)
  
  Notes
  -----
  The GeoColumn class subclasses `NumericalColumn`. Combined with
  `_copy_type_metadata`, this assures support for sort, groupby,
  and potential other `cudf` algorithms.
class_docstr_tok: ["Parameters","--","--","--","--","--","data",":","A","tuple","of","four","cudf.Series","of","list","dtype","meta",":","A","GeoMeta","object","(","optional",")","Notes","--","--","-","The","GeoColumn","class","subclasses","`","NumericalColumn","`",".","Combined","with","`","_copy_type_metadata","`",",","this","assures","support","for","sort",",","groupby",",","and","potential","other","`","cudf","`","algorithms","."]
docstr: Create a GeoColumn of multipolygons from a cudf Series with
  interleaved xy coordinates.
docstr_tok: ["Create","a","GeoColumn","of","multipolygons","from","a","cudf","Series","with","interleaved","xy","coordinates","."]
code: def _from_polygons_xy(
      cls,
      polygons_xy: ColumnBase,
      ring_offsets: ColumnBase,
      part_offsets: ColumnBase,
      geometry_offsets: ColumnBase,
  ):
      """
      Create a GeoColumn of multipolygons from a cudf Series with
      interleaved xy coordinates.
      """
      if not polygons_xy.dtype.kind == "f":
          raise ValueError(
              "Coordinates must be floating point numbers."
          )
  
      rings_col = build_list_column(
          indices=ring_offsets,
          elements=_xy_as_variable_sized_list(polygons_xy),
          size=len(ring_offsets) - 1,
      )
      parts_col = build_list_column(
          indices=part_offsets,
          elements=rings_col,
          size=len(part_offsets) - 1,
      )
      polygons_col = build_list_column(
          indices=geometry_offsets,
          elements=parts_col,
          size=len(geometry_offsets) - 1,
      )
      num_polygons = len(polygons_col)
  
      meta = GeoMeta(
          {
              "input_types": as_column(
                  cp.full(
                      num_polygons,
                      Feature_Enum.POLYGON.value,
                      dtype=cp.int8,
                  )
              ),
              "union_offsets": as_column(
                  cp.arange(num_polygons, dtype=cp.int32)
              ),
          }
      )
  
      coord_dtype = polygons_xy.dtype
  
      return cls(
          (
              cudf.Series(
                  empty_geometry_column(Feature_Enum.POINT, coord_dtype)
              ),
              cudf.Series(
                  empty_geometry_column(
                      Feature_Enum.MULTIPOINT, coord_dtype
                  )
              ),
              cudf.Series(
                  empty_geometry_column(
                      Feature_Enum.LINESTRING, coord_dtype
                  )
              ),
              cudf.Series(polygons_col),
          ),
          meta,
      )
  
imports: from enum import Enum
  from functools import cached_property
  from typing import Tuple, TypeVar
  import cupy
  import pyarrow
  import cudf
  from cudf.core.column import ColumnBase, as_column, build_list_column
  from cuspatial.core._column.geometa import Feature_Enum, GeoMeta
  from cuspatial.utils.column_utils import empty_geometry_column
label_desc: Use image node_id 11 for calling the GeoColumn obj's underlying member method code with example usage: obj._from_polygons_xy(cls, polygons_xy, ring_offsets, part_offsets, geometry_offsets) and returns: cls