The MOVES Post-processing scripts consist of two Perl scripts. One is called “Moves2smkEF.pl” which extracts the emissions factor tables from the MOVES databases and converts them into a format that can be used as SMOKE inputs. The second script, called “gen_8digit_scc.pl”, produces a file mapping 8-digit SCCs to 10-digit SCCs used when importing activity data in Smkinven.
The MOVES post-processor script “Moves2smkEF.pl” extracts the emission factor tables from the MOVES databases (RPD, RPV, RPP, and RPH MOVES formatted Lookup tables) and converts them into a format that can be processed using Movesmrg.
Create a new field for 'countyID'
None of the MOVES lookup tables contain a countyID field solely dedicated to a state-county FIPS code, but SMOKE needs this information. For this reason, Moves2smkEF.pl creates a county field by extracting it from other fields that include county codes as part of their value. The RPD table has a linkID field that contains countyID in the leading five digits followed by more numbers to allow for future implementation of link modeling. The RPV table has a zoneID field that is countyID with a trailing zero. The RPP table has a TemperatureProfileID field, which also leads with countyID and is trailed by other numbers to indicate month and other identification. The RPH table has a linkID field the same as the RPD table. The postprocessing script parses countyID from linkID, zoneID and TemperatureProfileID and stores it as a separate field.
Map MOVES pollutantID to output pollutant/species name
The pollutant mapping file has columns for MOVES2014 Pollutant ID, MOVES2014 Pollutant Name, and SMOKE Pollutant/Model Species Name. Moves2smkEF.pl reads this list to determine which MOVES pollutants to output in the emission factor files and what name to use for each pollutant. Because MOVES2014 contains emission factors for both inventory pollutants and model species, the sample pollutant mapping file included with SMOKE uses the _INV suffix to distinguish inventory pollutants from model species.
Cross-tab pollutantID to reduce output table size
Each of the four MOVES lookup tables contains a pollutantID field, and associated emission rates for each are listed in the ratePerDistance, ratePerVehicle, or ratePerHour field (depending on lookup table). This table structure repeats the leftmost fields (e.g., MOVESRunID, yearID, monthID) for each pollutantID, which greatly increases the total number of rows. The cross-tabbing postprocessing step replaces the column for 'ratePerDistance' (or 'ratePerVehicle' or 'ratePerHour') with additional pollutant-specific columns containing values of emission rates. For example, new field headings would include 'CO_INV', 'NOX', 'BENZENE_INV', etc. Performing this cross-tab on the pollutant emission rates significantly reduces the size of the tables for use by SMOKE.
Aggregate emission factors by fuel type, source type, road type, and/or process type
To reduce the total number of sources to be processed in SMOKE, Moves2smkEF.pl supports user-specified aggregations of MOVES fuel types, source types, road types, and process types to SCCs.
Apply formulas to calculate additional inventory pollutants or model species
Formulas can be applied to augment the existing MOVES output pollutants. For example, speciated versions of criteria pollutants are not provided in the MOVES2014 output nor are speciated emission factors for brake and tire wear.
Create final emission rate lookup tables in SMOKE format
The four postprocessed tables named rateperdistance_smoke, ratepervehicle_smoke, rateperprofile_smoke, and rateperhour_smoke are exported from MySQL into ASCII files for their use in SMOKE.
Moves2smkEF.pl is run after Runspec_generator.pl, and before any SMOKE processing. The Moves2smkEF.pl is written in Perl, generates SMOKE-ready MOVES lookup tables (i.e., RPD, RPV, RPP, and RPH) by each representative county and fuel month for inputs to Movesmrg.
File Name | Format | Description | ||||
---|---|---|---|---|---|---|
|
MOVES format | Columns in the MOVES Emission Rate Lookup Table are described in Table 2.10, “MOVES Emission Rate Lookup Table (MOVES Format)”. | ||||
InputDBList :
|
ASCII | List of MySQL database names to process generated by Runspec_generator.pl | ||||
PollutantFormulasFile :
|
ASCII | List of formulas used to calculate additional emission factors | ||||
FuelTypeMappingFile :
|
ASCII | List of MOVES fuel type IDs and corresponding aggregated fuel type ID | ||||
SourceTypeMappingFile :
|
ASCII | List of MOVES source type IDs and corresponding aggregated source type ID | ||||
RoadTypeMappingFile :
|
ASCII | List of MOVES road type IDs and corresponding aggregated road type ID | ||||
ProcessTypeMappingFile :
|
ASCII | List of MOVES process type IDs and corresponding aggregated process type ID | ||||
PollutantMappingFile :
|
ASCII | List of MOVES pollutant IDs and corresponding pollutant name; only listed pollutants will be included in output emission factor tables |
moves2smkEF.pl [-r RPD|RPV|RPP|RPH] [--formulas PollutantFormulasFile] [--fuel_agg FuelTypeMappingFile] [--src_agg SourceTypeMappingFile] [--road_agg RoadTypeMappingFile] [--proc_agg ProcessTypeMappingFile] InputDBList PollutantMappingFile [OutputPath]
File Name | Format | Description |
---|---|---|
rateperdistance_smoke*.csv |
ASCII | RPD SMOKE formatted lookup table (fuel month specific). The format of MOVES lookup tables are described in Table 2.11, “MOVES Emission Rate Lookup Table (SMOKE Format)”. |
ratepervehicle_smoke*.csv |
ASCII | RPV SMOKE formatted lookup table (fuel month specific) |
rateperprofile_smoke*.csv |
ASCII | RPP SMOKE formatted lookup table (fuel month specific) |
rateperhour_smoke*.csv |
ASCII | RPH SMOKE formatted lookup table (fuel month specific) |
mcrlist.rateperdistance*.lst :
|
ASCII | list of MOVES-based rateperdistance lookup tables |
mcrlist.ratepervehicle*.lst :
|
ASCII | list of MOVES-based ratepervehicle lookup tables |
mcrlist.rateperprofile*.lst :
|
ASCII | list of MOVES-based rateperprofile lookup tables |
mcrlist.rateperhour*.lst :
|
ASCII | list of MOVES-based rateperhour lookup tables |
The gen_8digit_scc.pl script generates a file mapping 8-digits SCCs to aggregated SCCs produced by Moves2smkEF.pl.
The Perl script performs the following steps:
Connect to the first database listed in the InputDBList file
Query the specified database table (rateperdistance, ratepervehicle, rateperprofile, or rateperhour) and generate a list of all SCCs in the MOVES2014 output
Apply the fuel type, source type, road type, and process type mappings to generate a list of 10-digit aggregated SCCs
Output the list of 10-digit aggregated SCCs with corresponding 8-digit SCC (first 8 digits of 10-digit SCC)
File Name | Format | Description |
---|---|---|
FuelTypeMappingFile :
|
ASCII | List of MOVES fuel type IDs and corresponding aggregated fuel type ID |
SourceTypeMappingFile :
|
ASCII | List of MOVES source type IDs and corresponding aggregated source type ID |
RoadTypeMappingFile :
|
ASCII | List of MOVES road type IDs and corresponding aggregated road type ID |
ProcessTypeMappingFile :
|
ASCII | List of MOVES process type IDs and corresponding aggregated process type ID |
InputDBList :
|
ASCII | List of MySQL database names to process generated by Runspec_generator.pl; only the first database listed will be used |
gen_8digit_scc.pl -r RPD|RPV|RPP|RPH [--fuel_agg FuelTypeMappingFile] [--src_agg SourceTypeMappingFile] [--road_agg RoadTypeMappingFile] [--proc_agg ProcessTypeMappingFile] InputDBList