docs: def get_cell_node_coord(self, var, coords=None, axis='x', nans=None):
          """
          Checks whether the bounds in the variable attribute are triangular
  
          Parameters
          ----------
          %(CFDecoder.get_cell_node_coord.parameters)s
  
          Returns
          -------
          %(CFDecoder.get_cell_node_coord.returns)s"""
          if coords is None:
              coords = self.ds.coords
  
          idims = self.get_coord_idims(coords)
  
          def get_coord(coord):
              coord = coords.get(coord, self.ds.coords.get(coord))
              return coord.isel(**{d: sl for d, sl in idims.items()
                                   if d in coord.dims})
  
          mesh = self.get_mesh(var, coords)
          if mesh is None:
              return
          nodes = self.get_nodes(mesh, coords)
          if not len(nodes):
              raise ValueError("Could not find the nodes variables for the %s "
                               "coordinate!" % axis)
          vert = nodes[0 if axis == 'x' else 1]
          if vert is None:
              raise ValueError("Could not find the nodes variables for the %s "
                               "coordinate!" % axis)
          loc = var.attrs.get('location', 'face')
          if loc == 'node':
              # we assume a triangular grid and use matplotlibs triangulation
              from matplotlib.tri import Triangulation
              xvert, yvert = nodes
              triangles = Triangulation(xvert, yvert)
              if axis == 'x':
                  bounds = triangles.x[triangles.triangles]
              else:
                  bounds = triangles.y[triangles.triangles]
          elif loc in ['edge', 'face']:
              connectivity = get_coord(
                  mesh.attrs.get('%s_node_connectivity' % loc, ''))
              if connectivity is None:
                  raise ValueError(
                      "Could not find the connectivity information!")
              connectivity = connectivity.values
              bounds = vert.values[
                  np.where(np.isnan(connectivity), connectivity[:, :1],
                           connectivity).astype(int)]
          else:
              raise ValueError(
                  "Could not interprete location attribute (%s) of mesh "
                  "variable %s!" % (loc, mesh.name))
          dim0 = '__face' if loc == 'node' else var.dims[-1]
          return xr.DataArray(
              bounds,
              coords={key: val for key, val in coords.items()
                      if (dim0, ) == val.dims},
              dims=(dim0, '__bnds', ),
              name=vert.name + '_bnds',  attrs=vert.attrs.copy())