Esempio n. 1
0
 def grid_layering(cfg, n_subbasins):
     """Invoke grid layering program."""
     layering_dir = cfg.dirs.layerinfo
     UtilClass.rmmkdir(layering_dir)
     if not cfg.cluster:
         n_subbasins = 0
     str_cmd = '"%s/grid_layering" %s %d %s %s %s %d' % (
         cfg.seims_bin, cfg.hostname, cfg.port, layering_dir,
         cfg.spatial_db, DBTableNames.gridfs_spatial, n_subbasins)
     # print (str_cmd)
     UtilClass.run_command(str_cmd)
Esempio n. 2
0
 def spatial_rasters(cfg, subbasin_num):
     """Import spatial raster data."""
     UtilClass.mkdir(cfg.dirs.import2db)
     if not cfg.cluster:  # changed by LJ, SubbasinID is 0 means the whole basin!
         subbasin_num = 0
         start_id = 0
         subbasin_file = cfg.spatials.mask
     else:
         start_id = 1
         subbasin_file = cfg.spatials.subbsn
     for i in range(start_id, subbasin_num + 1):
         subdir = cfg.dirs.import2db + SEP + str(i)
         UtilClass.rmmkdir(subdir)
     str_cmd = '"%s/import_raster" %s %s %s %s %s %d %s' % (
         cfg.seims_bin, subbasin_file, cfg.dirs.geodata2db, cfg.spatial_db,
         DBTableNames.gridfs_spatial, cfg.hostname, cfg.port,
         cfg.dirs.import2db)
     # print (str_cmd)
     UtilClass.run_command(str_cmd)
Esempio n. 3
0
    def export_landuse_lookup_files_from_mongodb(cfg, maindb):
        """export landuse lookup tables to txt file from MongoDB."""
        lookup_dir = cfg.dirs.lookup
        property_namelist = ModelParamDataUtils.landuse_fields
        property_map = {}
        property_namelist.append('USLE_P')
        query_result = maindb['LANDUSELOOKUP'].find()
        if query_result is None:
            raise RuntimeError(
                "LanduseLoop Collection is not existed or empty!")
        count = 0
        for row in query_result:
            # print row
            value_map = dict()
            for i, p_name in enumerate(property_namelist):
                if StringClass.string_match(p_name, "USLE_P"):
                    # Currently, USLE_P is set as 1 for all landuse.
                    value_map[p_name] = 1
                else:
                    if StringClass.string_match(p_name, "Manning"):
                        value_map[p_name] = row.get(p_name) * 10
                    else:
                        value_map[p_name] = row.get(p_name)
            count += 1
            property_map[count] = value_map

        n = len(property_map)
        UtilClass.rmmkdir(lookup_dir)
        for propertyName in property_namelist:
            f = open("%s/%s.txt" % (
                lookup_dir,
                propertyName,
            ), 'w')
            f.write("%d\n" % n)
            for prop_id in property_map:
                s = "%d %f\n" % (prop_id, property_map[prop_id][propertyName])
                f.write(s)
            f.close()