cdm/src/main/java/ucar/nc2/dataset/conv/UnidataObsConvention.java
public void augmentDataset( NetcdfDataset ds, CancelTask cancelTask) throws IOException {

    // latitude
    if (!hasAxisType( ds, AxisType.Lat)) { // already has _CoordinateAxisType

      if ( !addAxisType( ds, "latitude", AxisType.Lat)) { // directly named

        String vname = ds.findAttValueIgnoreCase(null, "latitude_coordinate", null);
        if (!addAxisType( ds, vname, AxisType.Lat)) { // attribute named

          Variable v = hasUnits(ds, "degrees_north,degrees_N,degreesN,degree_north,degree_N,degreeN");
          if (v != null)
            addAxisType( v, AxisType.Lat); // CF-1
        }
      }
    }

    // longitude
    if (!hasAxisType( ds, AxisType.Lon)) { // already has _CoordinateAxisType

      if ( !addAxisType( ds, "longitude", AxisType.Lon)) { // directly named

        String vname = ds.findAttValueIgnoreCase(null, "longitude_coordinate", null);
        if (!addAxisType( ds, vname, AxisType.Lon)) { // attribute named

          Variable v = hasUnits(ds, "degrees_east,degrees_E,degreesE,degree_east,degree_E,degreeE");
          if (v != null)
            addAxisType( v, AxisType.Lon); // CF-1
        }
      }
    }

      // altitude
      if (!hasAxisType(ds, AxisType.Height)) { // already has _CoordinateAxisType

        if (!addAxisType(ds, "altitude", AxisType.Height)) { // directly named
          if (!addAxisType(ds, "depth", AxisType.Height)) { // directly named

            String vname = ds.findAttValueIgnoreCase(null, "altitude_coordinate", null);
            if (!addAxisType(ds, vname, AxisType.Height)) { // attribute named

              for (int i = 0; i < ds.getVariables().size(); i++) {
                VariableEnhanced ve = (VariableEnhanced) ds.getVariables().get( i );
                String positive = ds.findAttValueIgnoreCase((Variable) ve, CF.POSITIVE, null);
                if (positive != null) {
                  addAxisType((Variable) ve, AxisType.Height); // CF-1
                  break;
                }
              }
            }
          }
        }
      }

     // time
    if (!hasAxisType( ds, AxisType.Time)) { // already has _CoordinateAxisType

      if ( !addAxisType( ds, "time", AxisType.Time)) { // directly named

        String vname = ds.findAttValueIgnoreCase(null, "time_coordinate", null);
        if (!addAxisType( ds, vname, AxisType.Time)) { // attribute named

          for (int i = 0; i < ds.getVariables().size(); i++) {
            VariableEnhanced ve = (VariableEnhanced) ds.getVariables().get(i);
            String unit = ve.getUnitsString();
            if (unit == null) continue;
            if (SimpleUnit.isDateUnit(unit)) {
              addAxisType( (Variable) ve, AxisType.Time); // CF-1
              break;
            }
          }
        }
      }
    }

  }
public void augmentDataset( NetcdfDataset ds, CancelTask cancelTask) throws IOException {

    // latitude
    if (!hasAxisType( ds, AxisType.Lat)) { // already has _CoordinateAxisType

      if ( !addAxisType( ds, "latitude", AxisType.Lat)) { // directly named

        String vname = ds.findAttValueIgnoreCase(null, "latitude_coordinate", null);
        if (!addAxisType( ds, vname, AxisType.Lat)) { // attribute named

          Variable v = hasUnits(ds, "degrees_north,degrees_N,degreesN,degree_north,degree_N,degreeN");
          if (v != null)
            addAxisType( v, AxisType.Lat); // CF-1
        }
      }
    }

    // longitude
    if (!hasAxisType( ds, AxisType.Lon)) { // already has _CoordinateAxisType

      if ( !addAxisType( ds, "longitude", AxisType.Lon)) { // directly named

        String vname = ds.findAttValueIgnoreCase(null, "longitude_coordinate", null);
        if (!addAxisType( ds, vname, AxisType.Lon)) { // attribute named

          Variable v = hasUnits(ds, "degrees_east,degrees_E,degreesE,degree_east,degree_E,degreeE");
          if (v != null)
            addAxisType( v, AxisType.Lon); // CF-1
        }
      }
    }

      // altitude
      if (!hasAxisType(ds, AxisType.Height)) { // already has _CoordinateAxisType

        if (!addAxisType(ds, "altitude", AxisType.Height)) { // directly named
          if (!addAxisType(ds, "depth", AxisType.Height)) { // directly named

            String vname = ds.findAttValueIgnoreCase(null, "altitude_coordinate", null);
            if (!addAxisType(ds, vname, AxisType.Height)) { // attribute named

              for (int i = 0; i < ds.getVariables().size(); i++) {
                VariableEnhanced ve = (VariableEnhanced) ds.getVariables().get( i );
                String positive = ds.findAttValueIgnoreCase((Variable) ve, CF.POSITIVE, null);
                if (positive != null) {
                  addAxisType((Variable) ve, AxisType.Height); // CF-1
                  break;
                }
              }
            }
          }
        }
      }

     // time
    if (!hasAxisType( ds, AxisType.Time)) { // already has _CoordinateAxisType

      if ( !addAxisType( ds, "time", AxisType.Time)) { // directly named

        String vname = ds.findAttValueIgnoreCase(null, "time_coordinate", null);
        if (!addAxisType( ds, vname, AxisType.Time)) { // attribute named

          for (int i = 0; i < ds.getVariables().size(); i++) {
            VariableEnhanced ve = (VariableEnhanced) ds.getVariables().get(i);
            String unit = ve.getUnitsString();
            if (unit == null) continue;
            if (SimpleUnit.isDateUnit(unit)) {
              addAxisType( (Variable) ve, AxisType.Time); // CF-1
              break;
            }
          }
        }
      }
    }

  }
public void augmentDataset ( NetcdfDataset ds , CancelTask cancelTask ) throws IOException { // latitude
 if ( ! hasAxisType ( ds , AxisType . Lat ) ) { // already has _CoordinateAxisType
 if ( ! addAxisType ( ds , "latitude" , AxisType . Lat ) ) { // directly named
 String vname = ds . findAttValueIgnoreCase ( null , "latitude_coordinate" , null ) ; if ( ! addAxisType ( ds , vname , AxisType . Lat ) ) { // attribute named
 Variable v = hasUnits ( ds , "degrees_north,degrees_N,degreesN,degree_north,degree_N,degreeN" ) ; if ( v != null ) addAxisType ( v , AxisType . Lat ) ; // CF-1
 } } } // longitude
 if ( ! hasAxisType ( ds , AxisType . Lon ) ) { // already has _CoordinateAxisType
 if ( ! addAxisType ( ds , "longitude" , AxisType . Lon ) ) { // directly named
 String vname = ds . findAttValueIgnoreCase ( null , "longitude_coordinate" , null ) ; if ( ! addAxisType ( ds , vname , AxisType . Lon ) ) { // attribute named
 Variable v = hasUnits ( ds , "degrees_east,degrees_E,degreesE,degree_east,degree_E,degreeE" ) ; if ( v != null ) addAxisType ( v , AxisType . Lon ) ; // CF-1
 } } } // altitude
 if ( ! hasAxisType ( ds , AxisType . Height ) ) { // already has _CoordinateAxisType
 if ( ! addAxisType ( ds , "altitude" , AxisType . Height ) ) { // directly named
 if ( ! addAxisType ( ds , "depth" , AxisType . Height ) ) { // directly named
 String vname = ds . findAttValueIgnoreCase ( null , "altitude_coordinate" , null ) ; if ( ! addAxisType ( ds , vname , AxisType . Height ) ) { // attribute named
 for ( int i = 0 ; i < ds . getVariables ( ) . size ( ) ; i ++ ) { VariableEnhanced ve = ( VariableEnhanced ) ds . getVariables ( ) . get ( i ) ; String positive = ds . findAttValueIgnoreCase ( ( Variable ) ve , CF . POSITIVE , null ) ; if ( positive != null ) { addAxisType ( ( Variable ) ve , AxisType . Height ) ; // CF-1
 break ; } } } } } } // time
 if ( ! hasAxisType ( ds , AxisType . Time ) ) { // already has _CoordinateAxisType
 if ( ! addAxisType ( ds , "time" , AxisType . Time ) ) { // directly named
 String vname = ds . findAttValueIgnoreCase ( null , "time_coordinate" , null ) ; if ( ! addAxisType ( ds , vname , AxisType . Time ) ) { // attribute named
 for ( int i = 0 ; i < ds . getVariables ( ) . size ( ) ; i ++ ) { VariableEnhanced ve = ( VariableEnhanced ) ds . getVariables ( ) . get ( i ) ; String unit = ve . getUnitsString ( ) ; if ( unit == null ) continue ; if ( SimpleUnit . isDateUnit ( unit ) ) { addAxisType ( ( Variable ) ve , AxisType . Time ) ; // CF-1
 break ; } } } } } }
create a NetcdfDataset out of this NetcdfFile, adding coordinates etc.
create a NetcdfDataset out of this NetcdfFile adding coordinates etc .