123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494 |
- function specifications = fao_total_specifications_2023(sourcename)
- % fao_specifications just creates a structure containing all informations
- % needed to parse the fao files...
- %
- % INPUT PARAMETERS: None
- %
- % RETURN PARAMETERS:
- % specifications: a structure with many constants needed to parse the
- % input xls files for the program read_bulkplus_sheet.
- % specifications contains two fields, 'keystruct', and 'mapstruct'.
- % - specifications.keystruct - is a structure of sheet fieldnames (e.g.
- % 'sheet_category'), where the value is a cellstr of the labels that
- % should be used to assign the value. The list is taken in the order it
- % is listed.
- % - specifications.mapstruct - is a structure that maps column headers (or other
- % inputs, such as $filename or $sheetname for the filename or sheetname,
- % respectively) to the values to be assigned to sheet fields.
- % mapstruct.names contains the list of headers names, where the index of
- % each header corresponds to the field 'var[index]'. mapstruct.varX
- % contains the field 'value', as well as fields for each sheet
- % fieldname (e.g. sheet_category) that gets mappings from this
- % parameter source. the field 'value' can have three types of values:
- % - a cellstr of possible values in the input file. In this case,
- % cellstrs of the same length are given for the sheet fieldnames, which
- % provide the values to map too.
- % - the string 'echo'. In this case, the value in the input file is fed
- % to a function, the name of which is given in the sheet fieldname
- % fields. if the function is an empty string, then the value in the
- % input file is simply fed directly.
- % - the string 'split'. In this case, the value in the input file for
- % this column is a year, such that before this year the data is to have
- % one designation, and after and including this year, it is to have a
- % different designation. (this is used for the IMF WEO data). The
- % designations are provided in the sheet fieldname field.
- %
- %
- % GLOBALS:
- % CONSTANTS: A structure containing string and numeric constants, which are
- % used in the PRIMAP functions. These are configurations like
- % scaling factors, but also fieldnames for the database and
- % mapping vectors etc.
- %
- % NOTES:
- %
- % (c) Written by Kathleen Markmann and the PRIMAP - PIK team, June 2012.
- % This file is shared under a "Attribution-NonCommercial-ShareAlike 3.0"
- % licence, which means that you must give credit to the author, are not
- % allowed to use it for commercial purposes and you may share your
- % derivatives of this work only under a similar licence. Other than that,
- % you are free to copy, display, use, modify the code. The details of this
- % licence are given at: http://creativecommons.org/licenses/by-nc-sa/3.0/
- %
- % version: 150602 JG - based on fao_specifications
- % version: 201001 JG - adpated for FAO 2020A
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- global CONSTANTS
- if isempty(CONSTANTS)
- error('Empty global variable! Please initialise with the drive_set_paths_and_globals... function!')
- end
- %please insert the download date?!
- date = 'Jan 2023'; % for FAO2019A
- %sourcename='FAO2018';
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%% sheet management %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % INPUT NAMES OF EXCEL SHEETS TO READ IN. IF NOT SPECIFIED, ALL SHEETS ARE
- % READ IN
- %specifications.sheetsToRead = {...
- %};
- % INPUT NAMES OF EXCEL SHEETS TO NOT READ IN. IF SHEET IS ENCOUNTERED THAT
- % IS NOT LISTED IN THE SHEETSTOREAD OR SHEETSTOIGNORE, A WARNING IS GIVEN
- %specifications.sheetsToIgnore = {...
- %};
- % data in csv-format?
- specifications.isCSV = true;
- specifications.CSVdelimiter = ',';
- specifications.CSVQuotesToRemove = '';
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%% READING SHEETS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % SPECIFY IF DATA IS EXTRA LONG AND NEEDS TO BE READ IN BLOCKS
- % IF BlockSize and dataBottomRightCorner IS NOT FIELD, DEFAULT IS TO READ IN ALL DATA AT ONCE
- specifications.blockSize = 10000;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % SPECIFY IF LABEL IS ONLY ONE COLUMN. DEFAULT IS FALSE. IF TRUE, THEN
- % COLUMN NAMES DO NOT NEED TO BE SPECIFIED. LABELS ASSUMED TO BE IN FIRST
- % COLUMN
- specifications.singleLabel = false;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % SPECIFY COLUMN INDEX WHERE ANNUAL DATA STARTS
- %%%% TEMP %%%%
- specifications.colStartOfYear = 9;
- %temporarily because index has been written in files by mistake
- %%%% TEMP %%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % SPECIFY ROW INDEX WHERE THE HEADER IS FOUND. IF NOT GIVEN, DEFAULT IS 1.
- % CAN BE MULTIPLE ROWS. IN THIS CASE, ALL ROWS LISTED ARE CONCATENATED WITH
- % NO SPACES BETWEEN EACH ROW.
- specifications.rowOfHeader = 1;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % SPECIFY ROW INDEX WHERE DATA STARTS. DEFAULT IS ROW AFTER HEADER
- specifications.rowOfData = 2;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % HEADER VALUE THAT INDICATES THE END OF DATA. DATA IS
- % ASSUMED TO END BEFORE THIS. IF NOT GIVEN, DEFAULT IS NaN
- %specifications.nonDataKeyword = '2014F';
- %each of these specification columns has to be defined in the following...
- %the way is the same for all of them: first you define the name for the
- %column than you define the mapping
- %always the bulk name and in the same order the according PRIMAPDB names
- %specifications.yearColIgnore = '\d*F';
- %specifications.yearColTransform = '\d*'; %this is used to match a string
- % which is then taken as the year
- % DEFINE KEYSTRUCT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % FOR EVERY SHEET KEY THAT IS TO BE DEFINED FROM THE INPUT FILE, PROVIDE
- % THE SHEET KEY NAME AS A FIELD, AND THEN LIST THE COLUMN HEADERS (OR
- % $filename or $sheetname FOR THE FILENAME OR EXCEL SHEETNAME,
- % RESPECTIVELY) IN THE SUBFIELD colName. IF SINGLE COLUMN MODE IS DEFINED,
- % THEN USE $label.
- specifications.keystruct.(CONSTANTS.nameOfSheetEntity).colName = {'Element'};
- specifications.keystruct.(CONSTANTS.nameOfCountryVector).colName = {'Area Code'};
- specifications.keystruct.(CONSTANTS.nameOfSheetCategory).colName = {'Item'};
- specifications.keystruct.(CONSTANTS.nameOfSheetType).colName = {'Element'};
- specifications.keystruct.(CONSTANTS.nameOfSheetUnit).colName = {'Unit', 'Element', 'Variable'}; % {'Unit'};
- %% TODO
- % we need an new FAO specification because the new emission data does not really fit into the old categories
- % we now have the following
- % * Emissions on agricultural land
- % = Farm-gate emissions + Fires in humid tropical forests + Net Forest conversion + Fires in organic soils
- % * Farm-gate emissions (1)
- % = Enteric Fermentation (1A) + Manure Management (1B) + Rice Cultivation (1C) + Synthetic Fertilizers (1D)
- % + Manure applied to Soils (1E) + Manure left on Pasture (1F) + Crop Residues (1G) + Burning - Crop residues (1J)
- % + Drained organic soils (1H, CO2 and N2O) + On-farm energy use (1K)
- % * FORESTLAND = Forestland + Forest fires
- % * LAND USE CHANGE = Fires in humid tropical forests + Net Forest conversion + Fires in organic soils
- % (FORESTLAND and LAND USE CHANGE are not available in the csv files, but named on the
- % "FAOSTAT Domain Emissions Totals. Metadata" document)
- % IPCC type categories
- % AFOLU = IPCC Agriculture + LULUCF
- % IPCC Agriculture = Farm-gate emissions - On-farm energy use - Drained organic soils (CO2)
- % LULUCF = LAND USE CHANGE + FORESTLAND + Drained organic soils (CO2)
- % or LULUCF = Fires in humid tropical forests + Net Forest conversion + Fires in organic soils
- % + Forestland + Forest fires
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MAPPING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % LISTS MAPPING BETWEEN VALUES IN THE INPUT FILE AND VALUES FOR THE
- % DATATABLES. THE COLUMN HEADERS (OR $filename or $sheetname FOR THE
- % FILENAME OR EXCEL SHEETNAME, RESPECTIVELY) ARE LISTED IN FIELD name.
- % STANDARD INPUT FOR var[i].value IS TO PROVIDE A CELLSTR OF ALL VALUES
- % FROM THE COLUMN LISTED IN name{i} THAT ARE TO BE ASSIGNED. VALUES TO BE
- % IGNORED CAN BE LISTED IN FIELD var[i].valuesToIgnore, TO REDUCE WARNING
- % MESSAGES. THE SHEET KEYS TO MAP TO ARE LISTED AS FIELDS UNDER var[i],
- % WITH THE VALUE IN THE STANDARD CASE BEING A CELLSTR WITH THE SAME LENGTH
- % AS THE FIELD value, THAT PROVIDES THE VALUES TO BE USED IN THE
- % DATATABLES.
- % ALTERNATE INPUTS FOR FIELD value ARE THE STRINGS 'echo' OR
- % 'split'. 'echo' PASSES THE INPUT VALUE TO THE FUNCTION LISTED UNDER THE
- % SHEET KEY FIELD, AND ASSIGNS THE OUTPUT TO THE SHEET KEY. 'split' ASSUMES
- % THAT THE INPUT VALUES IS A YEAR. THE DATA WILL BE SPLIT INTO TWO
- % DATATABLES AT THAT YEAR, WITH THAT YEAR BEING A PART OF THE SECOND
- % DATATABLE. THE FIRST TABLE WILL GET THE FIRST ELEMENT ASSIGNED TO SHEET
- % KEY FIELD, AND THE SECOND TABLE WILL GET THE SECOND ELEMENT.
- %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% entity, category and unit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- i = 1;
- specifications.mapstruct.name{i} = 'Element';
- specifications.mapstruct.(['var' num2str(i)]).value = { ...
- 'Emissions (CH4)', 'Emissions (N2O)', 'Emissions (CO2)', ...
- 'Emissions (CO2eq) (AR5)', 'Direct emissions (N2O)', 'Indirect emissions (N2O)', ...
- 'Emissions (CO2eq) from F-gases (AR5)',
- };
- specifications.mapstruct.(['var' num2str(i)]).(CONSTANTS.nameOfSheetEntity) = { ...
- 'CH4', 'N2O', 'CO2', ...
- 'KYOTOGHGAR5', 'N2O', 'N2O', ...
- 'FGASESAR5', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).(CONSTANTS.nameOfSheetUnit) = { ...
- '', '', '', ...
- 'CO2eq', '', '', ...
- 'CO2eq', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).(CONSTANTS.nameOfSheetType) = { ...
- 'NET', 'NET', 'NET', ...
- 'NET', 'DIR', 'IND', ...
- 'NET', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).valueToIgnore = { ...
- 'Emissions (CO2eq) from N2O (AR5)', ...
- 'Emissions (CO2eq) from CH4 (AR5)', ...
- };
- %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% region %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- i = 2;
- specifications.mapstruct.name{i} = 'Area Code';
- specifications.mapstruct.(['var' num2str(i)]).value = { ...
- '1', '2', '3', '4', '5', ...
- '6', '7', '8', '9', '10', ...
- '11', '12', '13', '14', '15', ...
- '16', '17', '18', '19', '20', ...
- '21', '22', '23', '24', '25', ... % 5
- '26', '27', '28', '29', '30', ...
- '31', '32', '33', '35', '36', ...
- '37', '38', '39', '40', '41', ...
- '42', '43', '44', '45', '46', ...
- '47', '48', '49', '50', '51', ... % 10
- '52', '53', '54', '55', '56', ...
- '57', '58', '59', '60', '61', ...
- '62', '63', '64', '65', '66', ...
- '67', '68', '69', '70', '71', ...
- '72', '73', '74', '75', '77', ... % 15
- '78', '79', '80', '81', '82', ...
- '83', '84', '85', '86', '87', ...
- '88', '89', '90', '91', '92', ...
- '93', '94', '95', '96', '97', ...
- '98', '99', '100', '101', '102', ... % 20
- '103', '104', '105', '106', '107', ...
- '108', '109', '110', '111', '112', ...
- '113', '114', '115', '116', '117', ...
- '118', '119', '120', '121', '122', ...
- '123', '124', '125', '126', '127', ... % 25
- '128', '129', '130', '131', '132', ...
- '133', '134', '135', '136', '137', ...
- '138', '139', '140', '141', '142', ...
- '143', '144', '145', '146', '147', ...
- '148', '149', '150', '151', '153', ... %30
- '154', '155', '156', '157', '158', ...
- '159', '160', '161', '162', '163', ...
- '164', '165', '166', '167', '168', ...
- '169', '170', '171', '172', '173', ...
- '174', '175', '176', '177', '178', ... %35
- '179', '180', '181', '182', '183', ...
- '184', '185', '186', '187', '188', ...
- '189', '190', '191', '192', '193', ...
- '194', '195', '196', '197', '198', ...
- '199', '200', '201', '202', '203', ... % 40
- '205', '206', '207', '208', '209', ...
- '210', '211', '212', '213', '214', ...
- '215', '216', '217', '218', '219', ...
- '220', '221', '222', '223', '224', ...
- '225', '226', '227', '228', '229', ... % 45
- '230', '231', '232', '233', '234', ...
- '235', '236', '237', '238', '239', ...
- '240', '242', '243', '244', '248', ...
- '249', '250', '251', '255', '256', ...
- '258', '259', '260', '264', '270', ... % 50
- '271', '272', '273', '274', '275', ...
- '276', '277', '278', '279', '280', ...
- '281', '282', '283', '284', '299', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).(CONSTANTS.nameOfCountryVector) = { ...
- 'ARM', 'AFG', 'ALB', 'DZA', 'ASM', ...
- 'AND', 'AGO', 'ATG', 'ARG', 'AUS', ...
- 'AUT', 'BHS', 'BHR', 'BRB', 'BELLUX', ...
- 'BGD', 'BMU', 'BTN', 'BOL', 'BWA', ...
- 'BRA', 'ABW', 'BLZ', 'IOT', 'SLB', ... % 5
- 'BRN', 'BGR', 'MMR', 'BDI', 'ATA', ...
- 'BVT', 'CMR', 'CAN', 'CPV', 'CYM', ...
- 'CAF', 'LKA', 'TCD', 'CHL', 'CHN', ...
- 'CXR', 'CCK', 'COL', 'COM', 'COG', ...
- 'COK', 'CRI', 'CUB', 'CYP', 'CZESVK', ... % 10
- 'AZE', 'BEN', 'DNK', 'DMA', 'DOM', ...
- 'BLR', 'ECU', 'EGY', 'SLV', 'GNQ', ...
- 'ETHERI', 'EST', 'FRO', 'FLK', 'FJI', ...
- 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', ...
- 'DJI', 'GEO', 'GAB', 'GMB', 'F77', ... % 15
- 'F78', 'DEU', 'BIH', 'GHA', 'GIB', ... %F77,78 is GDR and BRD but no data in FAOSTAT
- 'KIR', 'GRC', 'GRL', 'GRD', 'GLP', ...
- 'GUM', 'GTM', 'GIN', 'GUY', 'HMD', ...
- 'HTI', 'VAT', 'HND', 'HKG', 'HUN', ...
- 'HRV', 'ISL', 'IND', 'IDN', 'IRN', ... % 20
- 'IRQ', 'IRL', 'ISR', 'ITA', 'CIV', ...
- 'KAZ', 'JAM', 'JPN', 'JTN', 'JOR', ... % not sure what JTN is
- 'KGZ', 'KEN', 'KHM', 'PRK', 'KOR', ...
- 'KWT', 'LVA', 'LAO', 'LBN', 'LSO', ...
- 'LBR', 'LBY', 'LIE', 'LTU', 'MHL', ... % 25
- 'MAC', 'MDG', 'MWI', 'MYS', 'MDV', ...
- 'MLI', 'MLT', 'MTQ', 'MRT', 'MUS', ...
- 'MEX', 'MID', 'MCO', 'MNG', 'MSR', ... % MID unknown
- 'MAR', 'MOZ', 'FSM', 'MDA', 'NAM', ...
- 'NRU', 'NPL', 'NLD', 'ANT', 'NCL', ... % 30
- 'MKD', 'VUT', 'NZL', 'NIC', 'NER', ...
- 'NGA', 'NIU', 'NFK', 'NOR', 'MNP', ...
- 'TTPI', 'PAK', 'PAN', 'CZE', 'PNG', ...
- 'PRY', 'PER', 'PHL', 'PCN', 'POL', ...
- 'PRT', 'GNB', 'TLS', 'PRI', 'ERI', ... % 35
- 'QAT', 'PLW', 'ZWE', 'REU', 'ROU', ...
- 'RWA', 'RUS', 'SRBMNE', 'SHN', 'KNA', ...
- 'LCA', 'SPM', 'VCT', 'SMR', 'STP', ...
- 'SAU', 'SEN', 'SYC', 'SLE', 'SVN', ...
- 'SVK', 'SGP', 'SOM', 'ZAF', 'ESP', ... % 40
- 'ESH', 'SDNSSD', 'SUR', 'TJK', 'SWZ', ...
- 'SWE', 'CHE', 'SYR', 'TKM', 'TWN', ...
- 'TZA', 'THA', 'TGO', 'TKL', 'TON', ...
- 'TTO', 'OMN', 'TUN', 'TUR', 'TCA', ...
- 'ARE', 'UGA', 'TUV', 'FSU', 'GBR', ... % 45
- 'UKR', 'USA', 'UMI', 'BFA', 'URY', ...
- 'UZB', 'VEN', 'VNM', 'ETH', 'VGB', ...
- 'VIR', 'WAK', 'WLF', 'WSM', 'YUG', ... % WAK unknown
- 'YEM', 'COD', 'ZMB', 'BEL', 'LUX', ...
- 'AIA', 'CHI', 'SJM', 'IMN', 'MYT', ... % 50
- 'SGS', 'SRB', 'MNE', 'GGY', 'UVK', ... % UVK unknown
- 'SDN', 'SSD', 'BES', 'CUW', 'SXM', ...
- 'MAF', 'BLM', 'JEY', 'ALA', 'PSE', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).valueToIgnore = { ...
- '5000', '5100', '5101', '5102', '5103', ...
- '5104', '5105', '5200', '5203', '5204', ...
- '5206', '5207', '5300', '5301', '5302', ...
- '5303', '5304', '5305', '5400', '5401', ...
- '5402', '5403', '5404', '5500', '5501', ...
- '5502', '5503', '5504', '5707', '5801', ...
- '5802', '5803', '5815', '5817', '5848', ...
- '5849', '5873', 'F246', 'F247', 'F609', 'F614', ...
- 'F616', 'F617', 'F618', 'F619', 'F620', ...
- 'F621', 'F622', '351', ... %351 is China but we have it split up here
- };
- %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- i = 3;
- specifications.mapstruct.name{i} = 'Item';
- specifications.mapstruct.(['var' num2str(i)]).value = { ...
- 'LULUCF', 'IPCC Agriculture', ...
- 'Enteric Fermentation', 'Manure Management', 'Synthetic Fertilizers', ...
- 'Manure applied to Soils', 'Manure left on Pasture', 'Crop Residues', ...
- 'Burning - Crop residues', 'Net Forest conversion', 'Forestland', ...
- 'Savanna fires', 'AFOLU', ...
- 'Rice Cultivation', 'Agricultural Soils', ...
- 'All sectors with LULUCF', 'All sectors without LULUCF', 'Energy', ...
- 'IPPU', 'Other', 'Waste', ...
- 'Drained organic soils', 'Drained organic soils (N2O)', 'Drained organic soils (CO2)', ...
- %'Forest fires', ... %5
- %'Fires in organic soils', 'On-farm energy use', 'Emissions on agricultural land', ...
- %'Farm-gate emissions', 'Fires in humid tropical forests',
- %'Agri-food systems',
- %'Farm gate', 'Fertilizers Manufacturing',
- %'Food Household Consumption', 'Food Packaging',
- %'Food Processing', 'Food Retail',
- %'Food Transport', 'Food systems waste disposal',
- % 'Land Use change', 'On-farm electricity use',
- % 'Pre- and post- production',
- };
- specifications.mapstruct.(['var' num2str(i)]).(CONSTANTS.nameOfSheetCategory) = { ...
- 'IPCMLULUCF', 'IPCMAG', ...
- 'IPC3A1', 'IPC3A2', 'IPC3C4A', ...
- 'IPC3C4B', 'IPC3C4C', 'IPC3C4D', ...
- 'IPC3C1B', 'IPCMNFC', 'IPC3B1', ...
- 'IPC3C1C', 'IPC3', ...
- 'IPC3C7', 'IPCM3C45AG', ...
- 'IPC0', 'IPCM0EL', 'IPC1', ...
- 'IPC2', 'IPC5', 'IPC4', ...
- 'IPCM3C45DOS', 'IPCM3C45DOSN2O', 'IPCM3C45DOSCO2', ...
- %'MFF', ... %5
- %'2D3', '1K', 'MAL', ...
- %'MFG', '2D1',
- %'1H', 'M1HAG', 'M1HLU', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).valueToIgnore = { ...
- 'Forest fires', ... %5
- 'Fires in organic soils', 'On-farm energy use', 'Emissions on agricultural land', ...
- 'Farm-gate emissions', 'Fires in humid tropical forests', ...
- 'Agri-food systems', 'Farm gate', 'Fertilizers Manufacturing', ...
- 'Food Household Consumption', 'Food Packaging', ...
- 'Food Processing', 'Food Retail', ...
- 'Food Transport', 'Food systems waste disposal', ...
- 'Land Use change', 'On-farm electricity use', ...
- 'Pre- and post- production', ...
- 'Agrifood Systems Waste Disposal', 'Agrifood systems', ... % below new in 2024A
- 'Pesticides Manufacturing', 'Pre- and Post- Production', ...
- 'Emissions from crops', 'Emissions from livestock', ... don't fit IPCC categories
- };
- % general caveats in mapping: does not distinguish between direct and
- % indirect. All mapped to direct IPCC cats (3.C.4)
- % it's unclear where drained organic soils should be mapped to. It's
- % included in Agricultural soils and thus implicitly mapped to M.3.C.45AG
- % TODO make new FAO terminology
- % FAO sector hierarchy (total domain)
- % IPCC Agriculture (CH4, N2O) X
- % * Enteric fermentation (CH4 only) X
- % * Manure Management X
- % * Burning - crop residues X
- % * Savanna fires X
- % * Rice cultivation (CH4 only) X
- % * Agricultural soils (N2O only) X
- % * Synthetic Fertilizers X
- % * Manure applied to soils X
- % * Manure left on Pasture X
- % * Crop Residues X
- % * Drained organic soils (N2O)
- % not in IPCC Agriculture hierarchy
- % Drained organic soils (CO2)
- % Net Forest conversion
- % Fires in humid tropical forests
- % Fires in organic soils
- % Forest fires
- % Forestland
- % On-farm energy use
- % agg
- % Agricultural Soils
- % IPCC Agriculture
- % LULUCF
- % AFOLU
- % Emissions on agricultural land
- % Farm-gate emissions
- % Land Use change
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- i = 4;
- specifications.mapstruct.name{i} = 'Unit';
- specifications.mapstruct.(['var' num2str(i)]).value = { ...
- 'Gigagrams', 'gigagrams', 'tonnes', 'Kg', 'Head', ...
- 'kilotonnes', 'kt', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).(CONSTANTS.nameOfSheetUnit) = { ...
- 'Gg', 'Gg', 't', 'Kg', 'Heads', ...
- 'kt', 'kt', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).valueToIgnore = { ...
- 'g N20/kg dry matter', 'g CH4/kg dry matter', 'Ha', ...
- 'Kg of nutrients', 'kg N2O-N/kg N', 'million kWh', ...
- 'Terajoule', 'Kg/TJ', 'Kg CH4/head', ...
- 'kg N2O-N/kg N', ...
- };
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- i = 5;
- specifications.mapstruct.name{i} = 'Variable';
- specifications.mapstruct.(['var' num2str(i)]).value = { ...
- 'Value', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).(CONSTANTS.nameOfSheetUnit) = { ...
- '', ...
- };
- specifications.mapstruct.(['var' num2str(i)]).valueToIgnore = { ...
- 'Flag', 'Note', 'FAO Source', 'Source Code', ...
- 'Domain', 'Flag Description', 'Domain Code', ...
- 'Source', 'Area Code (M49)', ...
- };
- %%%%%%%%%%%%%%%%%%%%%%%%%%%% default table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %since we want to build up datatables we need a default table which gets
- %parametrised according to the row which we are parsing
- %specify default datatable (all necessary fields...)
- specifications.patternTable.(CONSTANTS.nameOfSheetCode) = '';
- specifications.patternTable.(CONSTANTS.nameOfSheetCategory) = '';
- specifications.patternTable.(CONSTANTS.nameOfSheetCategoryName) = '';
- specifications.patternTable.(CONSTANTS.nameOfSheetEntity) = '';
- specifications.patternTable.(CONSTANTS.nameOfSheetType) = '';
- specifications.patternTable.(CONSTANTS.nameOfSheetClass) = 'TOTAL';
- specifications.patternTable.(CONSTANTS.nameOfSheetDescr) = '';
- specifications.patternTable.(CONSTANTS.nameOfSheetNote) = 'Read in by JG';
- specifications.patternTable.(CONSTANTS.nameOfSheetSource) = sourcename;
- specifications.patternTable.(CONSTANTS.nameOfSheetFirstdatarow) = 0;
- specifications.patternTable.(CONSTANTS.nameOfSheetUnit) = '';
- specifications.patternTable.(CONSTANTS.nameOfSheetScenario) = 'HISTORY';
- specifications.patternTable.(CONSTANTS.nameOfSheetDatatype) = 'CountryYearMatrix';
- specifications.patternTable.(CONSTANTS.nameOfCountryVector) = {};
- specifications.patternTable.(CONSTANTS.nameOfDataField) = [];
- specifications.patternTable.(CONSTANTS.nameOfYearVector) = [];
- specifications.patternTable.(CONSTANTS.nameOfSheetSubsource) = {};
- specifications.patternTable.(CONSTANTS.nameOfSheetTablekind) = CONSTANTS.defaultForSheetTablekind;
- end %function bp_specifications
|