code: def select(cls, dataset, selection_mask=None, **selection):
      if cls.geom_dims(dataset):
          df = cls.shape_mask(dataset, selection)
      else:
          df = dataset.data
      if not selection:
          return df
      elif selection_mask is None:
          selection_mask = cls.select_mask(dataset, selection)
      indexed = cls.indexed(dataset, selection)
      df = df.iloc[selection_mask]
      if indexed and len(df) == 1 and len(dataset.vdims) == 1:
          return df[dataset.vdims[0].name].iloc[0]
      return df
  
imports: import sys
  import warnings
  from collections import defaultdict
  import numpy
  import pandas
  from holoviews.core.util import isscalar, unique_iterator, unique_array
  from holoviews.core.data import Dataset, Interface, MultiInterface, PandasAPI
  from holoviews.core.data.interface import DataError
  from holoviews.core.data import PandasInterface
  from holoviews.core.data.spatialpandas import get_value_array
  from holoviews.core.dimension import dimension_name
  from holoviews.element import Path
  from ..util import asarray, geom_to_array, geom_types, geom_length
  from .geom_dict import geom_from_dict
label_desc: Use image node_id 9 for calling the GeoPandasInterface obj's underlying member method code with example usage: obj.select(cls, dataset, selection_mask) and returns: df, df, df