     (* total-dimensionality
        (util/data-type->bytes data-type))))
 
-(defn estimate-binary-size
+(defn estimate-dods-size
   [granule-count variables]
   (let [compression 1
-        metadata 0
+        metadata 0 ; included here for symmetry
+        measurements (reduce + (map get-measurement variables))]
+    (+ (* granule-count compression measurements) metadata)))
+
+(defn estimate-netcdf3-size
+  [granule-count variables metadata]
+  (let [compression 1
         measurements (reduce + (map get-measurement variables))]
     (+ (* granule-count compression measurements) metadata)))
 
 (defn- -estimate-size
-  [fmt granule-count vars]
+  [fmt granule-count vars granule-metadata-size]
   (case (keyword (string/lower-case fmt))
-    :nc (estimate-binary-size granule-count vars)
+    :dods (estimate-dods-size granule-count vars)
+    :nc (estimate-netcdf3-size granule-count vars granule-metadata-size)
     (do
       (log/errorf "Cannot estimate size for %s (not implemented)." fmt)
       {:errors ["not-implemented"]})))

;;;   Support & Utility Functions   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn get-measurement
  [variable]
  (let [dims (get-in variable [:umm :Dimensions])

    [cmr.exchange.common.results.warnings :as warnings]
    [cmr.exchange.common.util :as util]
    [cmr.exchange.query.core :as query]
    [cmr.metadata.proxy.concepts.core :as concept]
    [cmr.metadata.proxy.concepts.granule :as granule]
    [cmr.metadata.proxy.concepts.variable :as variable]
    [cmr.metadata.proxy.results.errors :as metadata-errors]
