🔀 Smart comparison engine

GeoInbox compares your local QGIS layers against a host database (GeoPackage or PostGIS) to detect additions, deletions, attribute changes, and geometry modifications. All changes are visualized as temporary diff layers.

How versioning works

1. Load your client data

Add your GeoJSON, GeoPackage, or Shapefile layers to QGIS. These represent your "client" or "field" data.

2. Configure host connection

Set up a connection to your host database (GeoPackage file or PostGIS database) that contains the "authoritative" or "server" version of the data.

3. Run comparison

GeoInbox matches features between client and host layers using configurable matching rules (by ID, geometry proximity, or attributes).

4. Review differences

All detected changes are displayed as color-coded temporary layers in QGIS, allowing you to visually inspect every modification.

5. Commit or discard

Accept changes to update the host database, or discard them. All operations are transactional with automatic backup.

Supported host databases

Database Type Connection Features
GeoPackage File path Full read/write, transactions, backup
PostGIS PostgreSQL connection Full read/write, transactions, schema support
Shapefile Directory path Read-only comparison (no write-back)

Feature matching strategies

🆔 ID-based matching

Match features using a unique identifier field (e.g., 'id', 'fid', 'objectid'). Most reliable for structured datasets.

📍 Geometry proximity

Match features based on spatial proximity. Useful when IDs are not available or reliable.

🏷️ Attribute-based

Match using one or more attribute fields (e.g., name, code). Flexible for various data structures.

🤖 Smart matching

Combines multiple strategies with confidence scoring. Handles complex matching scenarios automatically.

Types of changes detected

Change Type Description Layer Color
Features Added New features in client not present in host 🟢 Green
Features Deleted Features in host but missing from client 🔴 Red
Attributes Changed Feature exists in both but attributes differ 🟡 Yellow
Geometry Modified Feature exists in both but geometry differs 🟠 Pastel Orange
Both Changed Feature has both geometry and attribute changes 🌸 Pastel Pink
Geometry Parts Added/removed vertices, rings, or parts 🟣 Purple

Comparison workflow

Step 1: Open Versioning panel

Go to the Versioning tab in the GeoInbox panel. Select your client layer from the dropdown.

Step 2: Configure host connection

Click "Set Host Database" and choose your GeoPackage file or PostGIS connection. Select the target table/layer.

Step 3: Choose matching strategy

Select how features should be matched: by ID field, geometry proximity, or attribute combination.

Step 4: Run comparison

Click "Compare" to start the analysis. Progress is shown in the QGIS task manager.

Step 5: Review results

Diff layers are added to QGIS automatically. Use the attribute table and map canvas to inspect changes.

Committing changes

After reviewing the differences, you can commit selected changes to the host database:

  • Selective commit — Choose which features to add, update, or delete
  • Batch commit — Apply all changes of a specific type (e.g., all additions)
  • Full commit — Apply all detected changes at once

⚠️ Backup and recovery

Before any write operation, GeoInbox creates an automatic backup of the affected data. Backups are stored as timestamped GeoJSON files and can be used for manual recovery if needed.

Conflict resolution

When the same feature has been modified in both client and host since the last sync:

🤝 Manual resolution

Review conflicting features side-by-side and choose which version to keep.

📅 Timestamp priority

Automatically prefer the most recently modified version.

🏠 Host priority

Always keep the host version and discard client changes.

📱 Client priority

Always apply client changes and overwrite host version.

Undo and redo

GeoInbox maintains a complete operation history for each host database:

  • Undo the last commit operation
  • Redo a previously undone operation
  • View operation history with timestamps and change summaries
  • Restore from any point in the history
↑