/FLINT

Full Lands INtegration Tool: a modular system to estimate greenhouse gas emissions and removals by the land sector

Primary LanguageC++Mozilla Public License 2.0MPL-2.0

FLINT Open-source Library

All Contributors

What is FLINT?

The Full Lands Integration Tool (FLINT) is a C++ framework that combines satellite and ground data in ways that meet policy needs. It is based on over 20 years of experience building and operating integration tools in Australia and Canada. It's an Open-source Library maintained under moja.global, a project under the Linux Foundation

Why FLINT?

The FLINT makes developing and operating advanced systems achievable by all countries. It is a generic platform with a modular structure, allowing countries to attach any variety of models or data to build country-specific systems. The platform handles complex computer science tasks, such as the storage and processing of large data sets, leaving users to focus on monitoring, reporting and scenario analyses.

How is FLINT different from earlier integrating tools?

The FLINT is using the lessons learned from first generation tools, to build a new framework that meets present and future needs. The key improvements compared to the first generation tools include:

How to use FLINT?

Below are the quick install instructions. Step-by-step instructions guides are available if you would like to have more detailed information. Please provide us with feedback on how we can improve these guides. You can leave your comments in the versions under development.

Development Environment How-To for Windows

These instructions are for building the FLINT on Windows using Visual Studio 2017, or Visual Studio 2019.

Required Installs

CMake

Using vcpkg to install required libraries

A fork of a Vcpkg repository has been created for the FLINT required libraries. To build these libraries you can use the following process:

  • Clone the Vcpkg repository: https://github.com/moja-global/vcpkg

  • Start a command shell in the Vcpkg repository folder and use the following commands:

    # bootstrap
    bootstrap-vcpkg.bat
    
    # install packages
    vcpkg.exe install boost-test:x64-windows boost-program-options:x64-windows boost-log:x64-windows turtle:x64-windows zipper:x64-windows poco:x64-windows libpq:x64-windows gdal:x64-windows sqlite3:x64-windows boost-ublas:x64-windows
  • Once this has completed, start a command shell in your FLINT repository folder. Now use the following commands to create the Visual Studio solution:

    # Create a build folder under the Source folder
    cd Source
    mkdir build
    cd build
    
    # now create the Visual Studio Solution (2019)
    cmake -G "Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX=C:/Development/Software/moja -DVCPKG_TARGET_TRIPLET=x64-windows -DENABLE_TESTS=OFF -DENABLE_MOJA.MODULES.ZIPPER=OFF -DCMAKE_TOOLCHAIN_FILE=c:\Development\moja-global\vcpkg\scripts\buildsystems\vcpkg.cmake ..
    
    # OR Visual Studio Solution (2017)
    cmake -G "Visual Studio 15 2017" -DCMAKE_INSTALL_PREFIX=C:/Development/Software/moja -DVCPKG_TARGET_TRIPLET=x64-windows -DENABLE_TESTS=OFF -DENABLE_MOJA.MODULES.ZIPPER=OFF -DCMAKE_TOOLCHAIN_FILE=c:\Development\moja-global\vcpkg\scripts\buildsystems\vcpkg.cmake ..

Install Moja Libraries

It is possible to use the Visual Studio moja solution to install built versions of the Moja libraries. To do this you need to set the CMAKE variable 'CMAKE_INSTALL_PREFIX' to your install path (i.e. "C:/Development/Software/moja").

Make edits to the Visual Studio Solution using CMake

  1. Launch the CMake GUI
  2. In the 'Where to build the binaries' field click “Browse Build…” and select the folder you created above (i.e. C:\Development\moja-global\FLINT\Source\build)`. The 'Where is the source code:' field should update, if not, set it correctly.
  3. You should be able to edit any CMake setting now (i.e. ENABLE flags like ENABLE_TESTS), then click “Configure” – assuming all libraries and required software has been installed you should have no errors. Now click "Generate" and the Solution with adjustments should be ready to load into Visual Studio.

Other Useful Tools

SQLIte Studio

a simple windows SQLite database manager (http://sqlitestudio.pl/) sqlitestudio-3.1.0.zip

TortoiseGit

TortoiseGit

Docker for Ubuntu 18:04

Containers are a simple way to build FLINT and all required dependencies. Examples of how this can be done are provided for Ubuntu 18.04. See the Examples docker directory.

Building the containers

The build has been split into two Dockerfiles, the first to get and build required libraries. The second to get and build the moja FLINT libraries and CLI program.

# working from the examples folder "flint/tree/master/Examples/docker"

# build the base
docker build -f Dockerfile.base.ubuntu.18.04 --build-arg NUM_CPU=4 -t moja/baseimage:ubuntu-18.04 .

# build the flint container
docker build  -f Dockerfile.flint.ubuntu.18.04 --build-arg NUM_CPU=4 --build-arg FLINT_BRANCH=master -t moja/flint:ubuntu-18.04 .

docker build  -f Dockerfile.flint.ubuntu.18.04 --build-arg NUM_CPU=4 --build-arg GITHUB_AT=XXXX --build-arg FLINT_BRANCH=master -t moja/flint:ubuntu-18.04 .

How to use the final container depends on the task. However, the following command will bash into the flint container and allow you to use the CLI program.

# run bash on the flint container
docker run --rm -ti moja/flint:ubuntu-18.04 bash

Once in, you should be able to run the CLI program moja.cli

# run CLI
moja.cli --help

That should respond:

Allowed options:

General options:
  -h [ --help ]          produce a help message
  --help-section arg     produce a help message for a named section
  -v [ --version ]       output the version number

Commandline only options:
  --logging_config arg   path to Moja logging config file
  --config_file arg      path to Moja run config file
  --provider_file arg    path to Moja data provider config file

Configuration file options:
  --config arg           path to Moja project config files
  --config_provider arg  path to Moja project config files for data providers

How to Get Involved?

moja global welcomes a wide range of contributions as explained in Contributing document and in the About moja-global Wiki.

FAQ and Other Questions

Contributors

Thanks goes to these wonderful people (emoji key):

Rob de Ligt
Rob de Ligt

📖 🚧
Mal
Mal

💻
James Leitch
James Leitch

💻
Max Fellows
Max Fellows

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Maintainers Reviewers Ambassadors Coaches

The following people are Maintainers of this repository

Mal
Mal

💻
James Leitch
James Leitch

💻
Max Fellows
Max Fellows

💻
**Maintainers** review and accept proposed changes **Reviewers** check proposed changes before they go to the Maintainers **Ambassadors** are available to provide training related to this repository **Coaches** are available to provide information to new contributors to this repository