Source code for gedih3.cli.gh3_bbox_index

#! python

# Copyright (C) 2026, University of Maryland. All Rights Reserved.
# Authors: Tiago de Conto
# For commercial licensing inquiries, contact UM Ventures at umdtechtransfer@umd.edu

import sys
import argparse


[docs] def get_cmd_args(): from gedih3.cliutils import add_verbosity_args, add_dask_args p = argparse.ArgumentParser( description=( "Build the _bbox_index.parquet root sidecar for an H3 database: " "one row per partition year-file with the true data envelope, " "derived from existing parquet row-group statistics (footer-only " "scan, no data read). Query tools then skip files a region or " "EGI tile provably cannot touch. Safe to re-run at any time; " "gh3_build removes the index automatically when a merge changes " "the data." ) ) p.add_argument( "-d", "--database", dest="database", type=str, default=None, help="H3 database directory (default: GH3_DEFAULT_H3_DIR). Must be " "a local path - the index is written at the database root", ) add_dask_args(p) add_verbosity_args(p) return p.parse_args()
[docs] def main(): from gedih3.cliutils import (setup_logging, print_banner, print_success, cli_exception_handler, resolve_path_args, parse_dask_args) args = get_cmd_args() logger = setup_logging(args, __name__) print_banner("GEDI H3 BBox Index Builder", logger=logger) resolve_path_args(args, ['database'], logger=logger) with cli_exception_handler(args, logger=logger): from dask.distributed import Client from gedih3.gh3driver import gh3_build_bbox_index from gedih3.config import GH3_DEFAULT_H3_DIR database = args.database or GH3_DEFAULT_H3_DIR logger.info(f"Database: {database}") dask_kwargs = parse_dask_args(args) with Client(**dask_kwargs) as client: logger.info(f"Dask dashboard available at: {client.dashboard_link}") opath = gh3_build_bbox_index(database) print_success(f"BBox index written to {opath}", logger=logger) return 0
if __name__ == "__main__": sys.exit(main())