DOI: 10.34808/75ds-w319
title: Enriched Time-Series Dataset of Polish Forest Composition (2009-2019)

description: VERSION 2.0
Data files generated using DOI hhttps://doi.org/10.34808/6qky-6063Visualizations (7 PNG files, 300 DPI) regenerated from 2009-2019 PDF-extracted data.
Version 2.0 adds a PDF data extraction module (pdf_data_extractor.py, ~800 lines) that reads annual inventory reports (Aktualizacja_YYYY.pdf) using PyMuPDF (fitz) and produces a CSV compatible with the existing pipeline. Input processing now auto-detects the source file format. Four new output tables have been added alongside the existing eight. The main table no longer contains the Area_pct and Avg_Age columns, which are not available in the PDF source.
New output tables:

forest_data_organized_carbon_sequestration.csv - Carbon stock (tC) and CO₂ equivalents using IPCC Tier 1 defaults (BEF × Wood_Density × Carbon_Fraction = 0.47; CO₂-eq = C × 44/12); tagged ESTIMATED
forest_data_organized_normal_forest_deviation.csv - Deviation from theoretical normal forest: mean|Actual_Pct_i – 25%|/4, Aging_Index = (Mature+Old)/(Young+Middle), Young_Forest_Deficit = max(0, 25% – Young_Pct)
forest_data_organized_volume_class_analysis.csv - Area, volume and stocking density (m³/ha) by stocking class: I-II (Age 1-40), III-IV (Age 41-80), V+ (Age 81+)
forest_data_organized_official_pdf_benchmarks.csv - RAW reference values from BULiGL 2017 inventory report for cross-validation

Data provenance tracking:

Added ESTIMATED category for model-based carbon stock values


 

Input Requirements:

PDF files: Aktualizacja_YYYY.pdf placed in pdfs/ subfolder, or
Excel file (.xlsx) / CSV with columns: Species, Year, Tree_Type, Category, Area_ha, Volume_m3

Limitations:

PDF extraction depends on consistent text layout across annual reports
Carbon stock values are ESTIMATED (IPCC Tier 1, above-ground biomass only, ±30-50% uncertainty)
Volume class analysis uses age-based approximation, not volume-based stocking class definitions
Columns Area_pct and Avg_Age removed (not recoverable from PDF source)
 VERSION 1.1
Visualisation files generated using  DOI IDhttps://doi.org/10.34808/p0nz-dv57 
Visualizations (7 PNG files, 2.67 MB, 300 DPI):1. temporal_trends.png (212 KB) - Area/volume trends 2009-20192. diversity_indices.png (429 KB) - 4-panel biodiversity metrics3. age_structure.png (241 KB) - Age distribution4. composition_trends.png (177 KB) - Coniferous vs deciduous5. growth_productivity.png (390 KB) - MAI, CAI, volume/ha6. species_comparison.png (168 KB) - Species distribution (2019)7. comprehensive_dashboard.png (654 KB) - 9-panel overview This dataset contains a Python tool for processing forest inventory data and calculating standard forestry and ecological metrics. The tool reads Excel spreadsheets containing forest inventory data and outputs organized datasets with derived variables. All formulas based on published literature. See code documentation for specific citations. The related dataset https://doi.org/10.34808/jks7-0274   provides the processing tool for users with their own inventory data or custom analysis requirements., whereas this dataset provides processed data for immediate use.
Input processing:

Reads XLSX format inventory file
Standardizes species names to forestry codes
Parses age class categories
Classifies tree types and age categories

Metric calculation:

Biodiversity indices: Shannon Index (H' = -Σ(pi × ln(pi))), Simpson Index (D = 1 - Σ(pi²)), Pielou's Evenness (J' = H'/ln(S)), Species Richness
Age structure: Weighted mean age, age class distribution percentages, coefficient of variation
Composition: Coniferous/deciduous ratios by area and volume, dominant species identification
Growth: Mean Annual Increment (Volume/(Area × Age)), Current Annual Increment (ΔVolume/Area)
Temporal: Year-over-year changes in area and volume

Data provenance tracking:

Tags each derived value with source type
Categories: RAW, RAW_SUMMED, CALCULATED, COUNTED, DETERMINED, ESTIMATED
Generates metadata file explaining categories

Implementation Details:

Language: Python 3.7+
Dependencies: pandas (≥1.3.0), numpy (≥1.21.0), scipy (≥1.7.0), openpyxl (≥3.0.0)
Lines of code: ~680
Processing time: &lt;10 seconds for 1,260 records

Input Requirements:



Excel file (.xlsx) with columns:
Species (text)
Year (integer)
Tree_Type (text)
Category (text, e.g., "Age_41-60")
Volume_m3 (float)
Area_ha (float)



Documentation:



README: Installation, usage, API reference
Usage examples: 16 practical scenarios
Validation report: Detailed test results



Limitations:
- Designed for hierarchical age-class inventory data- Assumes standard forestry category naming conventions- Growth metrics require age class information- MAI calculation depends on age class midpoint estimates