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
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.
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:
- a flexible, modular approach, allowing for country specific implementations from IPCC Tier 1 to 3
- support for wall-to-wall, sample based, jurisdictional, and supply chain approaches
- the ability to cover all land uses and land use changes, and activity-based reporting such as REDD+
- scenario analysis systems to allow the development of projections
- the potential to be used for multiple other purposes, including economics, water and biodiversity
- development managed using a true open source approach under moja global, which will allow users (countries, companies and organizations) to direct strategy and control the budget.
- software that allows data processing on local desktops or cloud-based systems
These instructions are for building the FLINT on Windows using Visual Studio 2017, or Visual Studio 2019.
- download cmake-3.15.2-win64-x64.msi
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 ..
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").
- Launch the CMake GUI
- 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. - 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.
a simple windows SQLite database manager (http://sqlitestudio.pl/) sqlitestudio-3.1.0.zip
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.
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
moja global welcomes a wide range of contributions as explained in Contributing document and in the About moja-global Wiki.
- You can find FAQs on the Wiki.
- If you have a question about the code, submit user feedback in the relevant repository
- If you have a general question about a project or repository or moja global, join moja global and
- submit a discussion to the project, repository or moja global team
- submit a message to the relevant channel on moja global's Slack workspace.
- If you have other questions, please write to info@moja.global
Thanks goes to these wonderful people (emoji key):
Rob de Ligt 📖 🚧 | Mal 💻 | James Leitch 💻 | Max Fellows 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!
The following people are Maintainers of this repository
Mal 💻 | James Leitch 💻 | Max Fellows 💻 |