Skip to main content

A CLI tool for managing cloud-native geospatial data

Project description

Portolan

CI codecov Ruff PyPI version Python 3.10+


Portolan enables organizations to share geospatial data in a low-cost, accessible, sovereign, and reliable way. Built on cloud-native geospatial formats, a Portolan catalog is as interactive as any geospatial portal—but faster, more scalable, and much cheaper to run.

This CLI converts data to cloud-native formats (GeoParquet, COG), generates rich STAC metadata, and syncs to any object storage—no servers required.

Quick Start

# Initialize a catalog
portolan init

# Add files (creates collections from directories)
portolan add demographics/

# Validate and convert to cloud-native formats
portolan check --fix

# notest - requires S3 credentials
# Push to remote storage
portolan push s3://my-bucket/catalog --collection demographics

# Later: pull updates from remote
portolan pull s3://my-bucket/catalog -c demographics

# Or sync everything (pull → init → scan → check → push)
portolan sync s3://my-bucket/catalog -c demographics

All Commands

portolan init                               # Initialize catalog
portolan scan <path>                        # Scan for issues (--fix for filenames)
portolan add <path>                         # Track files
portolan rm <path>                          # Untrack files (--keep to preserve data)
portolan check                              # Validate catalog (metadata + geo-assets)
portolan check --fix                        # Convert to cloud-native + update metadata
portolan list                               # List tracked files
portolan info <path>                        # Show file/collection info
portolan push <remote>                      # Push to remote storage
portolan pull <remote>                      # Pull from remote storage
portolan sync <remote>                      # Full roundtrip sync
portolan clone <remote> <path>              # Clone remote catalog
portolan config <set|get|list|unset>        # Manage configuration
portolan metadata init                      # Create metadata.yaml template
portolan metadata validate                  # Validate required metadata fields
portolan readme                             # Generate README.md from STAC + metadata
portolan clean                              # Remove Portolan metadata

Installation

# Recommended: uv (fast, isolated, project-aware)
uv tool install portolan-cli

# Alternative: pipx (isolated environment)
# pipx install portolan-cli

# Alternative: pip (global/user site-packages, may conflict)
# pip install portolan-cli

For Development

git clone https://github.com/portolan-sdi/portolan-cli.git
cd portolan-cli
uv sync --all-extras
uv run portolan --help

See Contributing Guide for full development setup.

License

Apache 2.0 — see LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

portolan_cli-1.0.0a0.tar.gz (6.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

portolan_cli-1.0.0a0-py3-none-any.whl (523.5 kB view details)

Uploaded Python 3

File details

Details for the file portolan_cli-1.0.0a0.tar.gz.

File metadata

  • Download URL: portolan_cli-1.0.0a0.tar.gz
  • Upload date:
  • Size: 6.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for portolan_cli-1.0.0a0.tar.gz
Algorithm Hash digest
SHA256 419e89ac458f4614c4eae6906ef835390d967fedc6e620a38555b8f90622e5fd
MD5 6a949c4ff1ac9fafdf0f4b924fb06f4c
BLAKE2b-256 874ecb8b1f65c982f70ef4720b7853147e956d2a6ae2679ba3b99d11438f7dd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for portolan_cli-1.0.0a0.tar.gz:

Publisher: release.yml on portolan-sdi/portolan-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file portolan_cli-1.0.0a0-py3-none-any.whl.

File metadata

  • Download URL: portolan_cli-1.0.0a0-py3-none-any.whl
  • Upload date:
  • Size: 523.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for portolan_cli-1.0.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 e83b21b415795ae0c336ab19dc8d613e984f16659517bb5a2bfc4e21790fbd52
MD5 449874fd40c897e9b4744be6d0d364c1
BLAKE2b-256 2486c9948513ed42056d31936626c9b2588ead0cadad17097368641087a8b9d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for portolan_cli-1.0.0a0-py3-none-any.whl:

Publisher: release.yml on portolan-sdi/portolan-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page