Skip to main content

A concise, readable text-pipeline grammar for QGIS geoprocessing.

Project description

niva

Latest release License: GPLv3 QGIS Python Dependencies

QGIS from the command line. A concise, readable grammar for QGIS geoprocessing — for people who don't want to write PyQGIS. Easy wins every time.

niva

Ever get tired of clicking? Write a whole pipeline on one line — friendly verbs running on QGIS's own Processing algorithms underneath:

load roads.gpkg | buffer 100m dissolve | clip city.gpkg | save roads_local.gpkg

or even

# ── TEST 24 | add then remove vertices | densify → smooth → simplify
load "{data}/collected.gpkg|layername=park_lines" | densify 5m | smooth iterations=2 | simplify 10 | save /tmp/niva_validation/out/s3_24.gpkg

What it does

Niva turns QGIS automation from PyQGIS code into a readable single lines of text.

  • Runs in QGIS's own Python
  • Reaches any of its ~878 algorithms
  • Near-zero dependencies on other packages. We're trying to stay within the python standard library.
  • ~45 friendly verbs → real QGIS algorithms, across vector geometry, overlay, attributes, raster or use run to any of the ~878 with no dedicated verb alias; describe shows their parameters. Every alias is validated against the installed QGIS.
  • Discoverable — describe <verb> ends with a runnable example; search <keyword> fuzzy-finds functions across the verbs and QGIS ; and docs <keyword> emits the full reference for every match — save it out with to=<file>. And more!
  • Databases via named QGIS connections — read (load @conn.table, sql @conn "SELECT …"), write (save @conn.table, fail-closed with mode=create|replace|append), and analyze server-side (non-SELECT sql @conn "CREATE TABLE … AS SELECT …"). Credentials never leave QGIS.
  • Provenance for free — every save records processing steps into metadata; assess writes data-quality reports; the run journal echoes the exact processing.run(…) for each step.
  • Composable — chain stages with |, compose .niva files with call mypipeline.niva, and export a flow to a standalone PyQGIS script (niva export) or import one back. - It's just PyQGIS under the hood.
  • Utility verbs beyond QGIS — notify (ntfy push when a long job finishes), email (SMTP, Gmail-aware), catalog (recurse a directory and inventory every geospatial dataset — CRS, extent, fields, bands — to a Markdown report), show (list the loadable layers/tables at a file, directory, @conn, or remote WFS/WMS/ArcGIS REST/XYZ URL — name, type, format, ready-to-load source), and info (inspect the local QGIS environment — the registered @conn connection names across every profile, providers, versions). Credentials for notify/email come only from the environment, never the flow text.

Screenshots

niva in the QGIS plugin dock and on the command line — see docs/screenshots.md.

Docs

New here? Start with the Quick start.

  • Quick start — install & run niva, in QGIS or as a CLI on QGIS's own Python
  • User Guide — install & run niva inside QGIS and standalone, configuration, scratch space, troubleshooting
  • Reference — every verb, alias, option, type, env var, CLI command, and Python entry point · Algorithm appendix — all 878 QGIS algorithms with parameters & descriptions
  • Cookbook — 50 worked recipes, including spatial SQL for SpatiaLite and PostGIS
  • FAQ — what libraries you need, how to run niva, scratch space, databases
  • Template projects — author a QGIS project once (layout + styles), reuse it against fresh data with project from-template=
  • Testing — platform support (QGIS 4.0.3 & 3.44 LTR), running the suite, and the test .niva-companion rule (per-run detail: tests/TESTING_LOG.md)
  • About & goals · Plugin · Publishing a QGIS plugin — a reusable playbook · Verb ↔ algorithm map
  • Design & risk docs — PRD, architecture, grammar, security, the Oscar failure register
  • CHANGELOG

📘 The whole guide (User Guide + Reference + Cookbook + FAQ + the 878-algorithm appendix) is also one PDF: niva-guide.pdf (also attached to the latest release; rebuild with python3 scripts/build_guide_pdf.py, which needs pandoc + a LaTeX engine).

License

GPLv3 — consistent with the QGIS ecosystem (niva builds on PyQGIS, a GPL library). Not yet on PyPI; install from source or the plugin zip.

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

qgis_niva-0.59.1.tar.gz (16.1 MB view details)

Uploaded Source

Built Distribution

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

qgis_niva-0.59.1-py3-none-any.whl (401.0 kB view details)

Uploaded Python 3

File details

Details for the file qgis_niva-0.59.1.tar.gz.

File metadata

  • Download URL: qgis_niva-0.59.1.tar.gz
  • Upload date:
  • Size: 16.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qgis_niva-0.59.1.tar.gz
Algorithm Hash digest
SHA256 462912b002eb753e4c025fc64f92dea228183e7786848bff18d4a85b3f6af10e
MD5 2863103f67e45947645ae673b8a75670
BLAKE2b-256 eceeb8a8c934142e7e3ca05ca8a262ea254e0ead4855b7e2a2a6acbb172df564

See more details on using hashes here.

File details

Details for the file qgis_niva-0.59.1-py3-none-any.whl.

File metadata

  • Download URL: qgis_niva-0.59.1-py3-none-any.whl
  • Upload date:
  • Size: 401.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qgis_niva-0.59.1-py3-none-any.whl
Algorithm Hash digest
SHA256 597249de198118acb587ebd08e3f262edaca5729dbb6d24432f07775a2196754
MD5 c4a348eebda4c63aa35dbe69ace4c761
BLAKE2b-256 b0f5aecb4a21e6db560f0eba4931b3e068d84121db22da7a9438ef2af95e8b8b

See more details on using hashes here.

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