class_docstr: MultiInterface allows wrapping around a list of tabular datasets
  including dataframes, the columnar dictionary format or 2D tabular
  NumPy arrays. Using the split method the list of tabular data can
  be split into individual datasets.
  
  The interface makes the data appear a list of tabular datasets as
  a single dataset. The interface may be used to represent geometries
  so the behavior depends on the type of geometry being represented.
class_docstr_tok: ["MultiInterface","allows","wrapping","around","a","list","of","tabular","datasets","including","dataframes",",","the","columnar","dictionary","format","or","2D","tabular","NumPy","arrays",".","Using","the","split","method","the","list","of","tabular","data","can","be","split","into","individual","datasets",".","The","interface","makes","the","data","appear","a","list","of","tabular","datasets","as","a","single","dataset",".","The","interface","may","be","used","to","represent","geometries","so","the","behavior","depends","on","the","type","of","geometry","being","represented","."]
docstr: Splits a multi-interface Dataset into regular Datasets using
  regular tabular interfaces.
docstr_tok: ["Splits","a","multi-interface","Dataset","into","regular","Datasets","using","regular","tabular","interfaces","."]
code: def split(cls, dataset, start, end, datatype, **kwargs):
      """
      Splits a multi-interface Dataset into regular Datasets using
      regular tabular interfaces.
      """
      objs = []
      if datatype is None:
          for d in dataset.data[start:end]:
              objs.append(dataset.clone([d]))
          return objs
      elif not dataset.data:
          return objs
  
      geom_type = cls.geom_type(dataset)
      ds = dataset.clone([])
      for d in dataset.data[start:end]:
          ds.data = [d]
          if datatype == "array":
              obj = ds.array(**kwargs)
          elif datatype == "dataframe":
              obj = ds.dframe(**kwargs)
          elif datatype in ("columns", "dictionary"):
              if hasattr(ds.interface, "geom_type"):
                  gt = ds.interface.geom_type(ds)
              if gt is None:
                  gt = geom_type
              if isinstance(ds.data[0], dict):
                  obj = dict(ds.data[0])
                  xd, yd = ds.kdims
                  if (
                      geom_type in ("Polygon", "Ring")
                      or xd not in obj
                      or yd not in obj
                  ):
                      obj[xd.name] = ds.interface.values(ds, xd)
                      obj[yd.name] = ds.interface.values(ds, yd)
              else:
                  obj = ds.columns()
              if gt is not None:
                  obj["geom_type"] = gt
          else:
              raise ValueError(f"{datatype} datatype not support")
          objs.append(obj)
      return objs
  
imports: import numpy
  from ..None import util
  from ..element import Element
  from ..ndmapping import NdMapping, item_check, sorted_context
  from .dictionary import DictInterface
  from .interface import DataError, Interface
label_desc: Use image node_id 24 for calling the MultiInterface obj's underlying member method code with example usage: obj.split(cls, dataset, start, end, datatype) and returns: objs, objs, objs