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.63.2.tar.gz (16.7 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.63.2-py3-none-any.whl (422.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qgis_niva-0.63.2.tar.gz
  • Upload date:
  • Size: 16.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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.63.2.tar.gz
Algorithm Hash digest
SHA256 41481e303eb3d372d60087d64d0058fa7bf60926acfba6767107babf4da1afdd
MD5 2e2fa83860ce1820764b61e9edb1ac07
BLAKE2b-256 96ba41a64c29c90e119c58e04058a2a8f90e7cb55f79b80cceded4105a359a69

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qgis_niva-0.63.2-py3-none-any.whl
  • Upload date:
  • Size: 422.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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.63.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dc4a2914a48e56668d090ffe113a516a9eb55a6b8d95c2650b0819ffd0983991
MD5 819b43d0e92332a13fba95c9cad7655d
BLAKE2b-256 0739e0b4dab5166fe625f3f4873c6f659e6c0a94545d9a70458615074372c37e

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