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.55.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.55.1-py3-none-any.whl (394.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qgis_niva-0.55.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.55.1.tar.gz
Algorithm Hash digest
SHA256 70714a2fcb0a424b4f5fbb6cbbbc1bbc5ac02e856a6f4298f3d5b121dd71bd0c
MD5 c1834ee584e5d6cd38733da9dfa8c8c5
BLAKE2b-256 316968feb04d0b042e4358d52f4bcbd5d2c8ac71facb0a95e3c9ad35c9a700b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qgis_niva-0.55.1-py3-none-any.whl
  • Upload date:
  • Size: 394.9 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.55.1-py3-none-any.whl
Algorithm Hash digest
SHA256 46c4375f04a3262a1941430386c6757e97ec26383441b0af0807137906e94560
MD5 57d4793144bd98718887ec0541948330
BLAKE2b-256 b892a1f6c8e34fca96ded9087e0053a5f45fdca7a8941ea96baf61d5ca716779

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