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.58.0.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.58.0-py3-none-any.whl (399.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qgis_niva-0.58.0.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.58.0.tar.gz
Algorithm Hash digest
SHA256 5efac4d08e489a978407b09afc84ec78929d059d01235d6b456299752c7ac0cd
MD5 3d0671b594135c7cca47858b475b9019
BLAKE2b-256 cbe545cdb9587f0b1eba68f26027a05e8003fcd881cd3f1e150b5a341c04dc69

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qgis_niva-0.58.0-py3-none-any.whl
  • Upload date:
  • Size: 399.6 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.58.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1fc6da6d74a0dd755a0afe74294eeaaa080938c4ac12495ae7e6e625625ebcb5
MD5 b8a58f9eb0f4e687ad45b324a7b77215
BLAKE2b-256 12264752a3cc93c7f2a8cbc1dfc465c15126615711f82dc9869fac3c811623f9

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