# BELD5 inputs for different map projection

**URL:** <https://forum.cmascenter.org/t/beld5-inputs-for-different-map-projection/6215>\
**Category:** Emissions Inventory\
**Created:** [June 4, 2026, 11:17pm UTC](https://forum.cmascenter.org/t/beld5-inputs-for-different-map-projection/6215 "2026-06-04T23:17:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![FengLiu](https://avatars.discourse-cdn.com/v4/letter/f/49beb7/32.png) [@FengLiu](https://forum.cmascenter.org/u/FengLiu)\
**Post date:** [June 4, 2026, 11:17pm UTC](https://forum.cmascenter.org/t/beld5-inputs-for-different-map-projection/6215/1 "2026-06-04T23:17:09Z")

</div>

Hello,

I noticed that he [BELD5](https://forum.cmascenter.org/t/smoke-beis-custom-beld5-with-our-domain/1991/5) input data is generated only for the default LAM\_40N97W projection, using the following parameters:

'LAM\_40N97W’2, 33.0D0, 45.D0, -97.D0, -97.D0, 40.D0

I would like to create BELD5 input data using a different map projection with our own parameters. For example:

! coords – 2 lines: name; type, P‑alpha, P‑beta, P‑gamma, xcent, ycent  
'LAM\_33N112W’2, 33.0D0, 45.D0, -112.D0, -112.D0, 33.5

The [document](https://gaftp.epa.gov/Air/emismod/2017/biogenics/Aggregating_to_coarser_domain_help_for_BELD5.pdf) does not provide enough information about how to generate 1 km × 1 km BELD5 input data. I’m wondering whether any tools or utilities exist that can help automate or support the creation of BELD5 input data for custom map projections.

Thanks,

Feng

---

<div class="post-metadata">

**Author:** ![cjcoats](https://avatars.discourse-cdn.com/v4/letter/c/ac8455/32.png) [@cjcoats](https://forum.cmascenter.org/u/cjcoats)\
**Post date:** [June 5, 2026, 10:55am UTC](https://forum.cmascenter.org/t/beld5-inputs-for-different-map-projection/6215/2 "2026-06-05T10:55:48Z")

</div>

Tools to do grid-to-grid transforms for both emissions and meteorology data been part of the I/O API _ **M3Tools** _ package since well before the writing of _AGGWNDW_. In using these tools, you need to be aware that **SMOKE emissions are in non-MKS, non-interpolatable units of mass per grid cell per unit time** , so you need to use the scale factor

> (output grid cell area) / (input grid cell area)

with these programs. Note also that these programs support transforms among [**all the I/O API supported map coordinate types**](https://cjcoats.github.io/ioapi/GRIDS.html#horiz).

For an output grid **finer than the input grid** (not your case here, but listed for reference):

- [_ **m3cple** _](https://cjcoats.github.io/ioapi/M3CPLE.html), which does the transform in one step;

For an output grid **coarser than the input grid** (your case), you need two steps:

- [_ **mtxcalc** _](https://cjcoats.github.io/ioapi/MTXCALC.html) computes a sparse matrix to do the transformation, optionally using the scale factor described above; and
- [_ **mtxcple** _](https://cjcoats.github.io/ioapi/MTXCPLE.html) uses a sparse matrix from _ **mtxcalc** _ to perform the grid-to-grid transformation.

_ **mtxcalc** _ will ask you for a grid-refinement parameter as well. For your case, I’d recommend 5 for urban-scale output grids, and 3 for regional (\> 12KM) ones.

– Carlie J. Coats, Jr.  
I/O API author/maintainer  
Original SMOKE author

---

<div class="post-metadata">

**Author:** ![FengLiu](https://avatars.discourse-cdn.com/v4/letter/f/49beb7/32.png) [@FengLiu](https://forum.cmascenter.org/u/FengLiu)\
**Post date:** [June 8, 2026, 7:34pm UTC](https://forum.cmascenter.org/t/beld5-inputs-for-different-map-projection/6215/3 "2026-06-08T19:34:01Z")

</div>

Hi Carlie,

Thank you very much for the solutions.

I followed your instructions and successfully obtained `mtxcalc+36km.nc` after running `mtxcalc` with grid refinement set to 5.

I am now running `mtxcple`, but I am unsure about its required input file and where to obtain it. In the [Program MTXCPLE](https://cjcoats.github.io/ioapi/MTXCPLE.html) example, I see the input file `emep_ann.1997.eu50.ncf`.

Specifically, the example includes:

```auto
setenv IN_DATA ${INDIR}/emep_ann.1997.eu50.ncf

```

Could you please clarify what this NetCDF file represents and how it should be generated or obtained?

Thanks,

Feng

---

<div class="post-metadata">

**Author:** ![lizadams](https://avatars.discourse-cdn.com/v4/letter/l/49beb7/32.png) [@lizadams](https://forum.cmascenter.org/u/lizadams)\
**Post date:** [June 9, 2026, 9:20pm UTC](https://forum.cmascenter.org/t/beld5-inputs-for-different-map-projection/6215/4 "2026-06-09T21:20:26Z")

</div>

Hi Feng,

I believe that you would take the specified transform matrix output that you generated from mtxcalc and use it in mtxcple as input by defining it in the MATRIX\_FILE environment variable.

Note, please run mtxclple from the command line, and verify what variables it is looking for as inputs.

This is from the documentation:

`The `MTXCPLE` program extracts all [variables](https://cjcoats.github.io/ioapi/VBLE.html) for a specified time step sequence from one I/O API file, infile, transforms them to a new grid using the specified transform matrix,, and writes them to a different I/O API file, outfile, under the optional control of a synchfile. Any combination of [physical or virtual files](https://cjcoats.github.io/ioapi/BUFFERED.html) is supported.`

You would need to set the infile ($INFILE or $IN\_DATA) to be the BELD5 input data that you wish to transform to a new grid, and also specify the matrix file as what you generated after running mtxcalc to create the sparse matrix used to do the transformation.

According to the document you provided in the link, the 1km BELD5 data is in ONE file that is about 34GB in size.

According to the example in the documentation, to run mtxcple, you would need to set the following environment variables.

```auto
setenv MATRIX_FILE mtxcalc+36km.nc
setenv IN_DATA [BELD5_input_data_filename_1km]
setenv OUT_DATA BELD5_36km

```

---

<div class="post-metadata">

**Author:** ![FengLiu](https://avatars.discourse-cdn.com/v4/letter/f/49beb7/32.png) [@FengLiu](https://forum.cmascenter.org/u/FengLiu)\
**Post date:** [June 12, 2026, 12:02am UTC](https://forum.cmascenter.org/t/beld5-inputs-for-different-map-projection/6215/5 "2026-06-12T00:02:44Z")

</div>

Hello Lizi,

Thank you very much for your support.

I generated BELD5 for our 36 km grids in two steps by running mtxcalc and mtxcple. However, the resulting domain was shifted and did not align with our intended domain. I did not spend time investigating the cause. My coworker then suggested using m3cple to perform a simple Lambert‑to‑Lambert conversion (with different projection angles) so that we could obtain the same 1 km × 1 km BELD5 data in our own Lambert projection. After that, I updated the sample csh script “[aggwndw.test.csh](https://gaftp.epa.gov/Air/emismod/2017/biogenics/)” and was able to produce correct results for all three of our domains.

By the way, the file **BELD5\_1US3\_FIA6.1\_2017CLD\_Canada.ncf** is about 734 MB rather than 34 GB, so I am wondering if we are referring to the same dataset.

Thank you again for your time and help.

Feng
