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.61.0.tar.gz (16.2 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.61.0-py3-none-any.whl (406.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qgis_niva-0.61.0.tar.gz
  • Upload date:
  • Size: 16.2 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.61.0.tar.gz
Algorithm Hash digest
SHA256 7046898e283e12dffb508caa2fc30a539a08f25a433626d35f024370ec08fb8f
MD5 10af4e3e7f2a26fc5aa3ce64b12f5e41
BLAKE2b-256 ffc14e96e699174bb07e3f88543f4d1e2b1f964cbfa5c52ef146eda21672d0e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qgis_niva-0.61.0-py3-none-any.whl
  • Upload date:
  • Size: 406.2 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.61.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2285228fc1ba7b7d52377af1141446d4f1d7a418fcac68441186c03e560b086
MD5 8b5eeff62326f9318aee5dc2ee5e5309
BLAKE2b-256 568a145a854801b3915f6d7d2d0aeddbe72cd9b29cdc188477d99b26e66b2cd9

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