code: def split(cls, dataset, start, end, datatype, **kwargs):
      from spatialpandas import GeoDataFrame, GeoSeries
  
      from ...element import Polygons
  
      objs = []
      if not len(dataset.data):
          return []
      xdim, ydim = cls.geom_dims(dataset)
      value_dims = [
          dim
          for dim in dataset.kdims + dataset.vdims
          if dim not in (xdim, ydim)
      ]
      row = dataset.data.iloc[0]
      col = cls.geo_column(dataset.data)
      geom_type = cls.geom_type(dataset)
      if datatype is not None:
          arr = geom_to_array(row[col], geom_type=geom_type)
          d = {(xdim.name, ydim.name): arr}
          d.update({dim.name: row[dim.name] for dim in value_dims})
          ds = dataset.clone(d, datatype=["dictionary"])
  
      holes = cls.holes(dataset) if cls.has_holes(dataset) else None
      for i, row in dataset.data.iterrows():
          if datatype is None:
              gdf = GeoDataFrame(
                  {
                      c: GeoSeries([row[c]])
                      if c == "geometry"
                      else [row[c]]
                      for c in dataset.data.columns
                  }
              )
              objs.append(dataset.clone(gdf))
              continue
  
          geom = row[col]
          gt = geom_type or get_geom_type(dataset.data, col)
          arr = geom_to_array(geom, geom_type=gt)
          d = {xdim.name: arr[:, 0], ydim.name: arr[:, 1]}
          d.update({dim.name: row[dim.name] for dim in value_dims})
          if datatype in ("dictionary", "columns"):
              if holes is not None:
                  d[Polygons._hole_key] = holes[i]
              d["geom_type"] = gt
              objs.append(d)
              continue
  
          ds.data = d
          if datatype == "array":
              obj = ds.array(**kwargs)
          elif datatype == "dataframe":
              obj = ds.dframe(**kwargs)
          else:
              raise ValueError(f"{datatype} datatype not support")
          objs.append(obj)
      return objs
  
imports: import sys
  from collections import defaultdict
  import numpy
  import pandas
  from ..dimension import dimension_name
  from ..util import isscalar, unique_array, unique_iterator
  from .interface import DataError, Interface
  from .multipath import MultiInterface, ensure_ring
  from .pandas import PandasInterface
label_desc: Use image node_id 31 for calling the SpatialPandasInterface obj's underlying member method code with example usage: obj.split(cls, dataset, start, end, datatype) and returns: objs, list