code: def range(cls, dataset, dim):
      dim = dataset.get_dimension(dim)
      geom_dims = cls.geom_dims(dataset)
      if dim in geom_dims:
          col = cls.geo_column(dataset.data)
          idx = geom_dims.index(dim)
          bounds = dataset.data[col].bounds
          if idx == 0:
              return bounds.minx.min(), bounds.maxx.max()
          else:
              return bounds.miny.min(), bounds.maxy.max()
      else:
          vals = dataset.data[dim.name]
          return vals.min(), vals.max()
  
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 15 for calling the GeoPandasInterface obj's underlying member method code with example usage: obj.range(cls, dataset, dim) and returns: vals,  vals, bounds,  bounds, bounds,  bounds