code: def _qmed_from_descriptors_1999(self, as_rural=False):
          
          try:
              qmed_rural = 1.172 * self.catchment.descriptors.dtm_area ** self._area_exponent() \
                           * (self.catchment.descriptors.saar / 1000.0) ** 1.560 \
                           * self.catchment.descriptors.farl ** 2.642 \
                           * (self.catchment.descriptors.sprhost / 100.0) ** 1.211 * \
                           0.0198 ** self._residual_soil()
              if as_rural:
                  return qmed_rural
              else:
                  return qmed_rural * self.urban_adj_factor()
          except (TypeError, KeyError):
              raise InsufficientDataError("Catchment `descriptors` attribute must be set first.")
docs: Return QMED estimation based on FEH catchment descriptors, 1999 methodology.
  
          Methodology source: FEH, Vol. 3, p. 14
  
          :param as_rural: assume catchment is fully rural. Default: false.
          :type as_rural: bool
          :return: QMED in m³/s
          :rtype: float