GIS GEORGIA · Open Source · GNU GPL v2+

Manage PostGIS like a pro

A powerful hybrid QGIS 4 plugin and standalone desktop application for spatial database management — in English and Georgian.

⬇ Download View on GitHub
PyQt6 / Qt6 QGIS 3.34+ / 4.x PostGIS pgRouting English ქართული Light / Dark

Everything in one place

A complete suite for spatial database management — from raw SQL to raster analysis.

🔌

Connection Manager

Multiple named connection profiles with SSL, timeout and auto-save. Detects PostGIS, pgRouting, Topology and Raster versions on connect.

SQL Editor

Syntax highlighting for SQL and PostGIS functions, persistent query history, templates toolbar, result table with CSV export, F5 shortcut.

📥

Vector & Raster Import

Import Shapefile, GeoJSON, GeoPackage, KML. Raster via raster2pgsql with tile size, SRID, overview and constraint options.

🛣

pgRouting

Dijkstra shortest path, Driving Distance and Isochrone analysis. Results table with one-click load into QGIS canvas.

🛠

Table & Schema Designer

Visual table creator with column types, constraints, indexes. Schema and Role manager with GRANT/REVOKE GUI. Materialized view lifecycle.

Geoprocessing & Validation

Server-side Buffer, Simplify, Convex Hull, Union. Geometry validation: invalid, null, duplicate, self-intersecting, wrong SRID.

🗺

Raster Tools

Statistics, histogram, map algebra (NDVI, threshold, custom expressions), focal analysis and reproject via PostGIS raster functions.

📊

DB Dashboard

Live server metrics: connection count, cache hit ratio, transaction rate, active queries, table sizes, unused indexes. Auto-refreshes on open.

💾

Backup & Restore

GUI wrapper for pg_dump, pg_restore and psql. Custom format, directory, plain SQL and tar formats. Live streaming progress output.

🔗

Topology Editor

Create PostGIS topologies with configurable SRID and precision. Validate and browse topology errors with geometry pair display.

🖥

Instance & Network Manager

Launch and manage Docker/Podman PostGIS containers. Scan LAN subnets for running PostgreSQL servers and add them as connections.

🕑

Versioning

Row-level version control via pgVersion. Commit, checkout, diff and branch support with full history log.

Hybrid plugin + standalone

The same codebase runs inside QGIS and as an independent desktop app. Zero duplication.

postgis_manager/ ← core (no QGIS dep) db/ ← DBManager, queries ui/ ← PyQt6 panels & dialogs sidebar_nav.py ← grouped nav widget main_window.py ← shared MainWindow i18n/ ← en.json / ka.json utils/ ← theme, config, i18n qgis_plugin/ ← thin QGIS 4 wrapper plugin.py ← classFactory / initGui processing_provider.py algorithms/ ← 6 processing algos metadata.txt ← supportsQt6=True standalone/ ← desktop launcher app.py ← QApplication entry
1

Core package

Pure Python + PyQt6 — no QGIS imports. Runs anywhere with psycopg2 installed. All DB logic, UI panels and theming live here.

2

QGIS plugin wrapper

Thin adapter using qgis.PyQt shim. Adds a toolbar button, QGIS Processing provider with 6 algorithms, and layer loading via iface.

3

Sidebar navigation

21 panels grouped into 7 categories in a sidebar+stacked layout — pgAdmin/DBeaver style. No more overloaded tab bar.

4

Runtime i18n & theming

Language and theme switch instantly without restart. All strings from JSON files; QSS theme engine with full light/dark token set.

Get started in minutes

1
Build the plugin ZIP
python make_plugin_zip.py
2
Install from ZIP in QGIS

In QGIS: Plugins → Manage and Install Plugins → Install from ZIP → select postgis_manager_plugin.zip

3
Enable & launch

Enable PostGIS Manager in the plugin list. A toolbar button and Plugins → PostGIS Manager menu entry appear.

4
Requirements

QGIS 3.34 LTR or QGIS 4.x (Qt6). psycopg2-binary must be available in your Python environment.

# Clone the repository git clone https://github.com/GIS-GEORGIA/postgis-manager.git cd postgis-manager # Create virtual environment python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Install dependencies pip install -r requirements.txt # Launch python run.py
📦
Requirements

Python 3.10+, PyQt6 ≥ 6.4, psycopg2-binary ≥ 2.9. For raster import: raster2pgsql must be in PATH (PostGIS client tools).

PyQt6
≥ 6.4
GUI framework (provided by QGIS 4.x in plugin mode)
psycopg2-binary
≥ 2.9
PostgreSQL / PostGIS database adapter
geopandas
≥ 0.13
Geospatial data I/O
shapely
≥ 2.0
Geometry operations
pyproj
≥ 3.5
CRS / projection transformations
fiona
≥ 1.9
Vector file I/O

Full runtime language switching

Switch language from the toolbar dropdown or Settings dialog — no restart required.

🇬🇧

English

✔ Complete
🇬🇪

ქართული

✔ Complete

Standing on the shoulders of the community

Third-party acknowledgements
This project was built with inspiration and reference code from a number of open-source QGIS plugins and PostGIS tools — some of which were used as starting points or structural references during development. We are grateful to every author. If any rights-holder finds an issue with how their code is represented here, please open a GitHub issue or contact us — we will promptly address it, up to and including removing the relevant code.

See CREDITS.md for the full list of referenced projects, authors and licenses.

We would love your help

Whether it is a bug fix, a new panel, a translation improvement or just documentation — every contribution is welcome.

🐛

Bug reports

Found something broken? Open an issue on GitHub with steps to reproduce and your OS / QGIS version.

Feature requests

Have an idea for a new panel or workflow? Open a GitHub issue with your use-case and we will discuss it.

🌐

Translations

Add a new language by creating i18n/xx.json based on en.json and opening a pull request.

🔧

Code contributions

Fork → branch → PR. CI runs ruff lint, syntax check and headless PyQt6 import test automatically.