Ejemplo n.º 1
0
	def write(self):
		table = db.Recall_rec
		order_by = db.Recall_rec.id

		if table.select().count() > 0:
			with open(self.file_name, 'w') as file:
				file.write(self.get_meta_line())
				cols = [col(table.id),
						col(table.name, direction="left"),
						col(table.rec_typ),
						col("file", not_in_db=True, padding_override=utils.DEFAULT_STR_PAD, direction="left")]
				self.write_headers(file, cols)
				file.write("\n")

				for row in table.select().order_by(order_by):
					file_name = '{name}.rec'.format(name=row.name) if row.rec_typ != 4 else row.name
					file.write(utils.int_pad(row.id))
					file.write(utils.string_pad(row.name, direction="left"))
					file.write(utils.int_pad(row.rec_typ))
					file.write(utils.string_pad(file_name, direction="left"))
					file.write("\n")

					dir = os.path.dirname(self.file_name)
					if row.rec_typ != 4:
						self.write_data(row.data, os.path.join(dir, file_name))
Ejemplo n.º 2
0
    def write(self):
        table = db.Ls_unit_ele
        order_by = db.Ls_unit_ele.id

        if table.select().count() > 0:
            with open(self.file_name, 'w') as file:
                file.write(self.get_meta_line())
                file.write(utils.int_pad("id"))
                file.write(utils.string_pad("name", direction="left"))
                file.write(utils.code_pad("obj_typ"))
                file.write(utils.int_pad("obj_typ_no"))
                file.write(utils.num_pad("bsn_frac"))
                file.write(utils.num_pad("sub_frac"))
                file.write(utils.num_pad("reg_frac"))
                file.write("\n")

                i = 1
                for row in table.select().order_by(order_by):
                    file.write(utils.int_pad(i))
                    i += 1
                    file.write(utils.string_pad(row.name, direction="left"))
                    file.write(utils.code_pad(row.obj_typ))
                    file.write(utils.int_pad(row.obj_typ_no, default_pad=10))
                    file.write(
                        utils.exp_pad(row.bsn_frac, use_non_zero_min=True))
                    file.write(utils.num_pad(row.sub_frac))
                    file.write(utils.num_pad(row.reg_frac))
                    file.write("\n")
	def write(self):
		table = connect.Rout_unit_ele
		order_by = connect.Rout_unit_ele.id

		if table.select().count() > 0:
			with open(self.file_name, 'w') as file:
				file.write(self.get_meta_line())
				file.write(utils.int_pad("id"))
				file.write(utils.string_pad("name", direction="left"))
				file.write(utils.code_pad("obj_typ"))
				file.write(utils.int_pad("obj_id"))
				file.write(utils.num_pad("frac"))
				file.write(utils.string_pad("dlr"))
				file.write("\n")

				i = 1
				for row in table.select().order_by(order_by):
					file.write(utils.int_pad(i))
					i += 1
					file.write(utils.string_pad(row.name, direction="left"))
					file.write(utils.code_pad(row.obj_typ))
					file.write(utils.int_pad(row.obj_id))
					file.write(utils.exp_pad(row.frac))
					file.write(utils.key_name_pad(row.dlr, text_if_null="0"))
					file.write("\n")
	def write(self):
		table = connect.Rout_unit_con
		order_by = connect.Rout_unit_con.id
		count = table.select().count()

		if count > 0:
			element_table = connect.Rout_unit_ele
			first_elem = element_table.get()
			obj_table = table_mapper.obj_typs.get(first_elem.obj_typ, None)
			obj_ids = [o.id for o in obj_table.select(obj_table.id).order_by(obj_table.id)]
			
			with open(self.file_name, 'w') as file:
				file.write(self.get_meta_line())
				file.write(utils.int_pad("id"))
				file.write(utils.string_pad("name"))
				file.write(utils.int_pad("elem_tot"))
				file.write(utils.int_pad("elements"))
				file.write("\n")

				i = 1
				for row in table.select().order_by(order_by):
					file.write(utils.int_pad(i))
					i += 1
					file.write(utils.string_pad(row.name))

					self.write_ele_ids2(file, table, element_table, row.elements, obj_table, obj_ids)
					file.write("\n")
	def write(self):
		table = db.Rout_unit_rtu
		order_by = db.Rout_unit_rtu.id

		if table.select().count() > 0:
			with open(self.file_name, 'w') as file:
				file.write(self.get_meta_line())
				file.write(utils.int_pad("id"))
				file.write(utils.string_pad("name"))
				file.write(utils.string_pad("define"))
				file.write(utils.string_pad("dlr"))
				file.write(utils.string_pad("topo"))
				file.write(utils.string_pad("field"))
				file.write("\n")

				i = 1
				for row in table.select().order_by(order_by):
					file.write(utils.int_pad(i))
					i += 1
					file.write(utils.string_pad(row.name))
					file.write(utils.string_pad(row.name))
					file.write(utils.key_name_pad(row.dlr))
					file.write(utils.key_name_pad(row.topo))
					file.write(utils.key_name_pad(row.field))
					file.write("\n")
    def write(self):
        table = db.Reservoir_res
        order_by = db.Reservoir_res.id

        if table.select().count() > 0:
            with open(self.file_name, 'w') as file:
                file.write(self.get_meta_line())
                file.write(utils.int_pad("id"))
                file.write(utils.string_pad("name", direction="left"))
                file.write(utils.string_pad("init"))
                file.write(utils.string_pad("hyd"))
                file.write(utils.string_pad("rel"))
                file.write(utils.string_pad("sed"))
                file.write(utils.string_pad("nut"))
                file.write("\n")

                for row in table.select().order_by(order_by):
                    file.write(utils.int_pad(row.id))
                    file.write(utils.string_pad(row.name, direction="left"))
                    file.write(
                        utils.key_name_pad(row.init,
                                           default_pad=utils.DEFAULT_STR_PAD))
                    file.write(
                        utils.key_name_pad(row.hyd,
                                           default_pad=utils.DEFAULT_STR_PAD))
                    file.write(
                        utils.key_name_pad(row.rel,
                                           default_pad=utils.DEFAULT_STR_PAD))
                    file.write(
                        utils.key_name_pad(row.sed,
                                           default_pad=utils.DEFAULT_STR_PAD))
                    file.write(
                        utils.key_name_pad(row.nut,
                                           default_pad=utils.DEFAULT_STR_PAD))
                    file.write("\n")
Ejemplo n.º 7
0
    def write(self):
        table = connect.Aquifer_con
        order_by = table.id

        if table.select().count() > 0:
            with open(self.file_name, 'w') as file:
                file.write(self.get_meta_line())
                file.write(utils.int_pad("id"))
                file.write(utils.string_pad("name", direction="left"))
                file.write(utils.code_pad("obj_typ"))
                file.write(utils.int_pad("obj_typ_no", default_pad=10))
                file.write(utils.num_pad("bsn_frac"))
                file.write(utils.num_pad("sub_frac"))
                file.write(utils.num_pad("reg_frac"))
                file.write("\n")

                tot_area = connect.Rout_unit_con.select(
                    fn.Sum(connect.Rout_unit_con.area)).scalar()

                i = 1
                for row in table.select().order_by(order_by):
                    file.write(utils.int_pad(i))
                    file.write(utils.string_pad(row.name, direction="left"))
                    file.write(utils.code_pad("aqu"))
                    file.write(utils.int_pad(i, default_pad=10))
                    file.write(
                        utils.num_pad(row.area / tot_area,
                                      use_non_zero_min=True))
                    file.write(utils.num_pad(0))
                    file.write(utils.num_pad(0))
                    file.write("\n")
                    i += 1
Ejemplo n.º 8
0
    def write(self):
        table = db.Hru_data_hru
        order_by = db.Hru_data_hru.id

        if table.select().count() > 0:
            with open(self.file_name, 'w') as file:
                file.write(self.get_meta_line())
                file.write(utils.int_pad("id"))
                file.write(utils.string_pad("name", direction="left"))
                file.write(utils.string_pad("topo"))
                file.write(utils.string_pad("hydro"))
                file.write(utils.string_pad("soil"))
                file.write(utils.string_pad("lu_mgt"))
                file.write(utils.string_pad("soil_plant_init"))
                file.write(utils.string_pad("surf_stor"))
                file.write(utils.string_pad("snow"))
                file.write(utils.string_pad("field"))
                file.write("\n")

                for row in table.select().order_by(order_by):
                    file.write(utils.int_pad(row.id))
                    file.write(utils.string_pad(row.name, direction="left"))
                    file.write(utils.key_name_pad(row.topo))
                    file.write(utils.key_name_pad(row.hydro))
                    file.write(utils.key_name_pad(row.soil))
                    file.write(utils.key_name_pad(row.lu_mgt))
                    file.write(utils.key_name_pad(row.soil_plant_init))
                    file.write(utils.key_name_pad(row.surf_stor))
                    file.write(utils.key_name_pad(row.snow))
                    file.write(utils.string_pad(row.field))
                    file.write("\n")
Ejemplo n.º 9
0
    def write(self):
        table = db.Ls_unit_def
        order_by = db.Ls_unit_def.id
        count = table.select().count()

        if count > 0:
            with open(self.file_name, 'w') as file:
                file.write(self.get_meta_line())
                file.write(str(count))
                file.write("\n")
                file.write(utils.int_pad("id"))
                file.write(utils.string_pad("name"))
                file.write(utils.num_pad("area"))
                file.write(utils.int_pad("elem_tot"))
                file.write(utils.int_pad("elements"))
                file.write("\n")

                i = 1
                for row in table.select().order_by(order_by):
                    file.write(utils.int_pad(i))
                    i += 1
                    file.write(utils.string_pad(row.name))
                    file.write(utils.num_pad(row.area))

                    self.write_ele_ids(file,
                                       table,
                                       db.Ls_unit_ele,
                                       row.elements,
                                       use_obj_id=False)
                    file.write("\n")
Ejemplo n.º 10
0
	def write_data(self, data, file_name):
		table = db.Recall_dat
		with open(file_name, 'w') as file:
			file.write(self.get_meta_line())
			file.write(str(len(data)))
			file.write("\n")

			cols = [
				col(table.yr),
				col(table.t_step),
				col(table.flo),
				col(table.sed),
				col(table.ptl_n),
				col(table.ptl_p),
				col(table.no3_n),
				col(table.sol_p),
				col(table.chla),
				col(table.nh3_n),
				col(table.no2_n),
				col(table.cbn_bod),
				col(table.oxy),
				col(table.sand),
				col(table.silt),
				col(table.clay),
				col(table.sm_agg),
				col(table.lg_agg),
				col(table.gravel),
				col(table.tmp)
			]

			self.write_headers(file, cols)
			file.write("\n")
			
			for row in data.order_by(db.Recall_dat.yr, db.Recall_dat.t_step):
				file.write(utils.int_pad(row.yr))
				file.write(utils.int_pad(row.t_step))
				file.write(utils.num_pad(row.flo))
				file.write(utils.num_pad(row.sed))
				file.write(utils.num_pad(row.ptl_n))
				file.write(utils.num_pad(row.ptl_p))
				file.write(utils.num_pad(row.no3_n))
				file.write(utils.num_pad(row.sol_p))
				file.write(utils.num_pad(row.chla))
				file.write(utils.num_pad(row.nh3_n))
				file.write(utils.num_pad(row.no2_n))
				file.write(utils.num_pad(row.cbn_bod))
				file.write(utils.num_pad(row.oxy))
				file.write(utils.num_pad(row.sand))
				file.write(utils.num_pad(row.silt))
				file.write(utils.num_pad(row.clay))
				file.write(utils.num_pad(row.sm_agg))
				file.write(utils.num_pad(row.lg_agg))
				file.write(utils.num_pad(row.gravel))
				file.write(utils.num_pad(row.tmp))
				file.write("\n")
Ejemplo n.º 11
0
def write_row(file, con, index, con_to_index, con_outs):
    file.write(utils.int_pad(index))
    file.write(utils.string_pad(con.name, direction="left"))
    file.write(utils.int_pad(con.gis_id))
    file.write(utils.num_pad(con.area, use_non_zero_min=True))
    file.write(utils.num_pad(con.lat))
    file.write(utils.num_pad(con.lon))
    file.write(utils.num_pad(con.elev))
    file.write(utils.int_pad(con_to_index))
    file.write(utils.string_pad("null" if con.wst is None else con.wst.name))
    file.write(utils.int_pad(con.cst_id))
    file.write(utils.int_pad(con.ovfl))
    file.write(utils.int_pad(con.rule))
    file.write(utils.int_pad(con_outs.count()))

    for out in con_outs:
        obj_id = out.obj_id

        elem_table = table_mapper.obj_typs.get(out.obj_typ, None)
        if elem_table is not None:
            obj_id = elem_table.select().where(
                elem_table.id <= out.obj_id).count()

        file.write(utils.code_pad(out.obj_typ))
        file.write(utils.int_pad(obj_id))
        file.write(utils.code_pad(out.hyd_typ))
        file.write(utils.num_pad(out.frac))

    file.write("\n")
Ejemplo n.º 12
0
    def write_ele_ids2(self,
                       file,
                       table,
                       element_table,
                       elements,
                       elem_table,
                       element_ids,
                       use_obj_id=True):
        """
		SWAT+ requires line numbers rather than designated ID numbers.
		The following writes the number of the element based on what line it will be in the ls_unit.ele file.
		The format of the element list uses a "-" to denote "through"
		"""
        last_id = 0
        last_appended_id = 0
        just_wrote = False
        ele_to_write = []
        for ele in elements.order_by(element_table.id):
            #elem_table = table_mapper.obj_typs.get(ele.obj_typ, None)
            if elem_table is not None:
                if use_obj_id:
                    obj_id_col = ele.obj_id
                else:
                    obj_id_col = ele.obj_typ_no

                #obj_id = elem_table.select().where(elem_table.id <= obj_id_col).count()
                obj_id = element_ids.index(obj_id_col) + 1
                if last_id == 0:
                    ele_to_write.append(utils.int_pad(obj_id))
                    just_wrote = True
                    last_appended_id = obj_id
                elif obj_id > (last_id + 1):
                    if last_appended_id != last_id:
                        ele_to_write.append(utils.int_pad(last_id * -1))
                    ele_to_write.append(utils.int_pad(obj_id))
                    last_appended_id = obj_id
                    just_wrote = True
                else:
                    just_wrote = False
                last_id = obj_id

        if not just_wrote and len(elements) > 0:
            ele_to_write.append(utils.int_pad(last_id * -1))

        file.write(utils.int_pad(len(ele_to_write)))
        for w in ele_to_write:
            file.write(w)
Ejemplo n.º 13
0
    def write(self):
        table = db.Plant_ini
        order_by = db.Plant_ini.id

        if table.select().count() > 0:
            with open(self.file_name, 'w') as file:
                file.write(self.get_meta_line())
                file.write(utils.string_pad("pcom_name", direction="left"))
                file.write(utils.int_pad("plt_cnt"))
                file.write(utils.int_pad("rot_yr_ini"))
                file.write(
                    utils.string_pad("plt_name",
                                     default_pad=utils.DEFAULT_KEY_PAD))
                file.write(utils.code_pad("lc_status"))
                file.write(utils.num_pad("lai_init"))
                file.write(utils.num_pad("bm_init"))
                file.write(utils.num_pad("phu_init"))
                file.write(utils.num_pad("plnt_pop"))
                file.write(utils.num_pad("yrs_init"))
                file.write(utils.num_pad("rsd_init"))
                file.write("\n")

                for row in table.select().order_by(order_by):
                    file.write(utils.string_pad(row.name, direction="left"))
                    file.write(utils.int_pad(row.plants.count()))
                    file.write(utils.int_pad(row.rot_yr_ini))
                    file.write("\n")

                    for plant in row.plants:
                        file.write(utils.string_pad("", text_if_null=""))
                        file.write(
                            utils.string_pad(
                                "",
                                text_if_null="",
                                default_pad=utils.DEFAULT_INT_PAD))
                        file.write(utils.key_name_pad(plant.plnt_name))
                        utils.write_bool_yn(file, plant.lc_status)
                        file.write(utils.num_pad(plant.lai_init))
                        file.write(utils.num_pad(plant.bm_init))
                        file.write(utils.num_pad(plant.phu_init))
                        file.write(utils.num_pad(plant.plnt_pop))
                        file.write(utils.num_pad(plant.yrs_init))
                        file.write(utils.num_pad(plant.rsd_init))
                        file.write("\n")
	def write_constit(self, file, values, label):
		items = [] if values is None else values.split(",")
		items.sort()
		file.write(utils.int_pad(len(items), default_pad=6, direction="right"))
		file.write("              ")
		file.write(utils.string_pad("!{}".format(label), direction="left"))
		file.write("\n")
		file.write("        ")
		for item in items:
			file.write(item)
			file.write(" ")
		file.write("\n")
Ejemplo n.º 15
0
    def write(self):
        table = db.Ls_unit_def
        order_by = db.Ls_unit_def.id
        count = table.select().count()

        element_table = db.Ls_unit_ele
        first_elem = element_table.get()
        obj_table = table_mapper.obj_typs.get(first_elem.obj_typ, None)
        obj_ids = [
            o.id for o in obj_table.select(obj_table.id).order_by(obj_table.id)
        ]

        if count > 0:
            with open(self.file_name, 'w') as file:
                file.write(self.get_meta_line())
                file.write(str(count))
                file.write("\n")
                file.write(utils.int_pad("id"))
                file.write(utils.string_pad("name"))
                file.write(utils.num_pad("area"))
                file.write(utils.int_pad("elem_tot"))
                file.write(utils.int_pad("elements"))
                file.write("\n")

                i = 1
                for row in table.select().order_by(order_by):
                    file.write(utils.int_pad(i))
                    i += 1
                    file.write(utils.string_pad(row.name))
                    file.write(utils.num_pad(row.area))

                    self.write_ele_ids2(file,
                                        table,
                                        element_table,
                                        row.elements,
                                        obj_table,
                                        obj_ids,
                                        use_obj_id=False)
                    file.write("\n")
Ejemplo n.º 16
0
	def write(self):
		table = connect.Rout_unit_con
		order_by = connect.Rout_unit_con.id
		count = table.select().count()

		if count > 0:
			with open(self.file_name, 'w') as file:
				file.write(self.get_meta_line())
				file.write(utils.int_pad("id"))
				file.write(utils.string_pad("name"))
				file.write(utils.int_pad("elem_tot"))
				file.write(utils.int_pad("elements"))
				file.write("\n")

				i = 1
				for row in table.select().order_by(order_by):
					file.write(utils.int_pad(i))
					i += 1
					file.write(utils.string_pad(row.name))

					self.write_ele_ids(file, table, connect.Rout_unit_ele, row.elements)
					file.write("\n")
Ejemplo n.º 17
0
def write_header(file, elem_name, has_con_out):
    file.write(utils.int_pad("id"))
    file.write(utils.string_pad("name", direction="left"))
    file.write(utils.int_pad("gis_id"))
    file.write(utils.num_pad("area"))
    file.write(utils.num_pad("lat"))
    file.write(utils.num_pad("lon"))
    file.write(utils.num_pad("elev"))
    file.write(utils.int_pad(elem_name))
    file.write(utils.string_pad("wst"))
    file.write(utils.int_pad("cst"))
    file.write(utils.int_pad("ovfl"))
    file.write(utils.int_pad("rule"))
    file.write(utils.int_pad("out_tot"))

    if has_con_out:
        file.write(utils.code_pad("obj_typ"))
        file.write(utils.int_pad("obj_id"))
        file.write(utils.code_pad("hyd_typ"))
        file.write(utils.num_pad("frac"))

    file.write("\n")
Ejemplo n.º 18
0
    def write_data(self, data, file_name):
        table = db.Recall_dat
        with open(file_name, 'w') as file:
            time_sim = simulation.Time_sim.get()
            valid_data = []
            for row in data.order_by(db.Recall_dat.yr, db.Recall_dat.jday,
                                     db.Recall_dat.id):
                valid_row = row.yr >= time_sim.yrc_start and row.yr <= time_sim.yrc_end
                rec_typ = row.recall_rec.rec_typ
                if valid_row and rec_typ == 1:  #daily
                    valid_row = (time_sim.day_start == 0
                                 or row.jday >= time_sim.day_start) and (
                                     time_sim.day_end == 0
                                     or row.jday <= time_sim.day_end)
                if valid_row and rec_typ == 2:  #monthly
                    rec_jday = datetime.datetime(row.yr, row.mo,
                                                 1).timetuple().tm_yday
                    valid_row = (time_sim.day_start == 0
                                 or rec_jday >= time_sim.day_start) and (
                                     time_sim.day_end == 0
                                     or rec_jday <= time_sim.day_end)

                if valid_row:
                    valid_data.append(row)

            file.write(self.get_meta_line())
            file.write(str(len(valid_data)))
            file.write("\n")

            cols = [
                col(table.jday),
                col(table.mo),
                col(table.day_mo),
                col(table.yr),
                col(table.ob_typ),
                col(table.ob_name),
                col(table.flo),
                col(table.sed),
                col(table.orgn),
                col(table.sedp),
                col(table.no3),
                col(table.solp),
                col(table.chla),
                col(table.nh3),
                col(table.no2),
                col(table.cbod),
                col(table.dox),
                col(table.sand),
                col(table.silt),
                col(table.clay),
                col(table.sag),
                col(table.lag),
                col(table.gravel),
                col(table.tmp)
            ]

            self.write_headers(file, cols)
            file.write("\n")

            for row in valid_data:
                file.write(utils.int_pad(row.jday))
                file.write(utils.int_pad(row.mo))
                file.write(utils.int_pad(row.day_mo))
                file.write(utils.int_pad(row.yr))
                file.write(utils.string_pad(row.ob_typ))
                file.write(utils.string_pad(row.ob_name))
                file.write(utils.num_pad(row.flo))
                file.write(utils.num_pad(row.sed))
                file.write(utils.num_pad(row.orgn))
                file.write(utils.num_pad(row.sedp))
                file.write(utils.num_pad(row.no3))
                file.write(utils.num_pad(row.solp))
                file.write(utils.num_pad(row.chla))
                file.write(utils.num_pad(row.nh3))
                file.write(utils.num_pad(row.no2))
                file.write(utils.num_pad(row.cbod))
                file.write(utils.num_pad(row.dox))
                file.write(utils.num_pad(row.sand))
                file.write(utils.num_pad(row.silt))
                file.write(utils.num_pad(row.clay))
                file.write(utils.num_pad(row.sag))
                file.write(utils.num_pad(row.lag))
                file.write(utils.num_pad(row.gravel))
                file.write(utils.num_pad(row.tmp))
                file.write("\n")
	def write(self):
		table = db.Print_prt

		if table.select().count() > 0:
			row = table.select().first()

			with open(self.file_name, 'w') as file:
				self.write_meta_line(file)
				header_cols = [col(table.nyskip, direction="left", padding_override=10),
							   col(table.day_start, direction="left"),
							   col(table.yrc_start, direction="left"),
							   col(table.day_end, direction="left"),
							   col(table.yrc_end, direction="left"),
							   col(table.interval, direction="left")]
				self.write_headers(file, header_cols)
				file.write("\n")

				row_cols = [col(row.nyskip, direction="left", padding_override=10),
							col(row.day_start, direction="left"),
							col(row.yrc_start, direction="left"),
							col(row.day_end, direction="left"),
							col(row.yrc_end, direction="left"),
							col(row.interval, direction="left")]
				self.write_row(file, row_cols)
				file.write("\n")

				aa_int_cnt = len(row.aa_ints)
				file.write(utils.int_pad("aa_int_cnt", default_pad=10, direction="left"))
				file.write("\n")
				file.write(utils.int_pad(aa_int_cnt, default_pad=10, direction="left"))

				if aa_int_cnt > 0:
					for aa_int in row.aa_ints:
						file.write(utils.int_pad(aa_int, direction="left"))

				file.write("\n")

				header_cols = [col(table.csvout, direction="left"),
							   col(table.dbout, direction="left"),
							   col(table.cdfout, direction="left")]
				self.write_headers(file, header_cols)
				file.write("\n")

				utils.write_bool_yn(file, row.csvout, direction="left")
				utils.write_bool_yn(file, row.dbout, direction="left")
				utils.write_bool_yn(file, row.cdfout, direction="left")
				file.write("\n")

				header_cols = [col(table.soilout, direction="left"),
							   col(table.mgtout, direction="left"),
							   col(table.hydcon, direction="left"),
							   col(table.fdcout, direction="left")]
				self.write_headers(file, header_cols)
				file.write("\n")

				utils.write_bool_yn(file, row.soilout, direction="left")
				utils.write_bool_yn(file, row.mgtout, direction="left")
				utils.write_bool_yn(file, row.hydcon, direction="left")
				utils.write_bool_yn(file, row.fdcout, direction="left")
				file.write("\n")

				obj_table = db.Print_prt_object
				header_cols = [col("objects", not_in_db=True, direction="left"),
							   col(obj_table.daily),
							   col(obj_table.monthly),
							   col(obj_table.yearly),
							   col(obj_table.avann)]
				self.write_headers(file, header_cols)
				file.write("\n")

				for obj in row.objects.order_by(obj_table.id):
					utils.write_string(file, obj.name, direction="left")
					utils.write_bool_yn(file, obj.daily)
					utils.write_bool_yn(file, obj.monthly)
					utils.write_bool_yn(file, obj.yearly)
					utils.write_bool_yn(file, obj.avann)
					file.write("\n")
	def write(self):
		table = db.Object_cnt
		order_by = db.Object_cnt.id

		if table.select().count() > 0:
			with open(self.file_name, 'w') as file:
				self.write_meta_line(file)
				header_cols = [col(table.name, direction="left"),
							   col("ls_area", not_in_db=True, padding_override=utils.DEFAULT_NUM_PAD),
							   col("tot_area", not_in_db=True, padding_override=utils.DEFAULT_NUM_PAD),
							   col(table.obj),
							   col(table.hru),
							   col(table.lhru),
							   col(table.rtu),
							   col(table.mfl),
							   col(table.aqu),
							   col(table.cha),
							   col(table.res),
							   col(table.rec),
							   col(table.exco),
							   col(table.dlr),
							   col(table.can),
							   col(table.pmp),
							   col(table.out),
							   col(table.lcha),
							   col(table.aqu2d),
							   col(table.hrd),
							   col(table.wro)]
				self.write_headers(file, header_cols)
				file.write("\n")

				for row in table.select().order_by(order_by):
					ls_area = Ls_unit_def.select(fn.Sum(Ls_unit_def.area)).scalar()
					tot_area = Rout_unit_con.select(fn.Sum(Rout_unit_con.area)).scalar()

					file.write(utils.string_pad(row.name, direction="left"))
					file.write(utils.num_pad(ls_area))
					file.write(utils.num_pad(tot_area))

					hru = self.get_value_or_count(row.hru, Hru_con)
					lhru = self.get_value_or_count(row.lhru, Hru_lte_con)
					rtu = self.get_value_or_count(row.rtu, Rout_unit_con)
					mfl = self.get_value_or_count(row.mfl, Modflow_con)
					aqu = self.get_value_or_count(row.aqu, Aquifer_con)
					cha = self.get_value_or_count(row.cha, Channel_con)
					res = self.get_value_or_count(row.res, Reservoir_con)
					#rec = self.get_value_or_count(row.rec, Recall_con)
					#exco = self.get_value_or_count(row.exco, Exco_con)
					#exco = Recall_con.select().join(Recall_rec).join(Recall_dat).where((Recall_rec.rec_typ == 4) & (Recall_dat.flo != 0)).count()
					#rec = Recall_con.select().join(Recall_rec).join(Recall_dat).where(Recall_rec.rec_typ != 4).count()
					rec = Recall_rec.select().where(Recall_rec.rec_typ != 4).count()
					exco = Recall_dat.select().join(Recall_rec).where((Recall_rec.rec_typ == 4) & (Recall_dat.flo != 0)).count()
					dlr = self.get_value_or_count(row.dlr, Delratio_con)
					out = self.get_value_or_count(row.out, Outlet_con)
					lcha = self.get_value_or_count(row.lcha, Chandeg_con)
					aqu2d = self.get_value_or_count(row.aqu2d, Aquifer2d_con)

					obj_tot = hru + lhru + rtu + mfl + aqu + cha + res + rec + exco + dlr + out + lcha + aqu2d
					obj_tot += row.can + row.pmp + row.hrd + row.wro

					file.write(utils.int_pad(obj_tot))

					file.write(utils.int_pad(hru))
					file.write(utils.int_pad(lhru))
					file.write(utils.int_pad(rtu))
					file.write(utils.int_pad(mfl))
					file.write(utils.int_pad(aqu))
					file.write(utils.int_pad(cha))
					file.write(utils.int_pad(res))
					file.write(utils.int_pad(rec))
					file.write(utils.int_pad(exco))
					file.write(utils.int_pad(dlr))

					file.write(utils.int_pad(row.can))
					file.write(utils.int_pad(row.pmp))

					file.write(utils.int_pad(out))
					file.write(utils.int_pad(lcha))
					file.write(utils.int_pad(aqu2d))

					file.write(utils.int_pad(row.hrd))
					file.write(utils.int_pad(row.wro))

					file.write("\n")