
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "auto_examples/regional_tileDBdatabase.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_auto_examples_regional_tileDBdatabase.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_auto_examples_regional_tileDBdatabase.py:


Creating a Regional TileDB Array for the Amazon
===============================================

This example demonstrates how to create a **regional TileDB array** for the Amazon 
by modifying the `data_config.yml` file to adjust the **spatial range** based on 
a bounding box extracted from a GeoJSON file.

A default data configuration file (`data_config.yml`) can be downloaded here:

:download:`Download data_config.yml <../_static/test_files/data_config.yml>`

A default GeoJSON file for the Amazon region (`amazon.geojson`) can be downloaded here:

:download:`Download amazon.geojson <../_static/test_files/amazon.geojson>`

We will:

1. Modify the configuration file (`data_config.yml`) to define the Amazon spatial extent.
2. Initialize the `GEDIProcessor` with the modified configuration.
3. Process GEDI granules and store them in a **regional TileDB array**.

.. GENERATED FROM PYTHON SOURCE LINES 24-83

.. code-block:: Python


    # Import required libraries
    import gedidb as gdb
    import yaml
    import json

    # Define paths for configuration and spatial data
    config_file = "/path/to/data_config.yml"
    geojson_path = "/path/to/amazon.geojson"

    # Step 1: Modify the Configuration File
    # -------------------------------------
    # Load the existing configuration file
    with open(config_file, "r") as file:
        config = yaml.safe_load(file)

    # Define the Amazon bounding box from the GeoJSON file
    with open(geojson_path, "r") as file:
        amazon_geojson = json.load(file)

    # Extract bounding box from the GeoJSON
    amazon_bbox = amazon_geojson["features"][0]["geometry"]["coordinates"][0]
    lon_min, lat_min = amazon_bbox[0]  # Bottom-left corner
    lon_max, lat_max = amazon_bbox[2]  # Top-right corner

    # Update the configuration file with the new bounding box
    config["tiledb"]["local_path"] = "tiledb/amazon"
    config["tiledb"]["spatial_range"]["lat_min"] = lat_min
    config["tiledb"]["spatial_range"]["lat_max"] = lat_max
    config["tiledb"]["spatial_range"]["lon_min"] = lon_min
    config["tiledb"]["spatial_range"]["lon_max"] = lon_max

    # Save the modified configuration
    new_config_file = "data_config_amazon.yml"
    with open(new_config_file, "w") as file:
        yaml.dump(config, file, default_flow_style=False)

    print(f"Updated configuration saved as '{new_config_file}'.")

    # Step 2: Run the GEDI Processor
    # ------------------------------
    # Define additional parameters
    start_date = "2020-01-01"
    end_date = "2023-12-31"
    earth_data_dir = "/path/to/EarthData_credentials"

    # Initialize and run the GEDIProcessor
    with gdb.GEDIProcessor(
        config_file=new_config_file,
        geometry=geojson_path,
        start_date=start_date,
        end_date=end_date,
        earth_data_dir=earth_data_dir,
        parallel_engine=None,  # Modify if using Dask or ThreadPoolExecutor
    ) as processor:
        # Process the data and consolidate TileDB fragments
        processor.compute(consolidate=True)

    print("Regional TileDB array for the Amazon has been successfully created.")


.. _sphx_glr_download_auto_examples_regional_tileDBdatabase.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: regional_tileDBdatabase.ipynb <regional_tileDBdatabase.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: regional_tileDBdatabase.py <regional_tileDBdatabase.py>`

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: regional_tileDBdatabase.zip <regional_tileDBdatabase.zip>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
