ArcGIS and QGIS on PostGIS: what to share and what to validate
Design a shared database without confusing SQL connectivity with editing or versioning equivalence.
Editorial review: 2026-09-23
A hybrid architecture can retain ArcGIS for a specialized workflow while using QGIS for other tasks. Sharing PostgreSQL/PostGIS reduces copies but does not remove differences in data models, drivers and licensing. Distinguish an ordinary spatial PostgreSQL database from an Esri-managed enterprise geodatabase.
Decide who writes first
Start with read access from both clients. Use a synthetic table with a unique, non-null integer key, homogeneous geometry type and explicit CRS. Do not declare a view column unique when it is not: clients may omit or misidentify features.
SELECT id, count(*) FROM cadastre_lab.parcels
GROUP BY id HAVING count(*) > 1;
SELECT ST_SRID(geom), GeometryType(geom), count(*)
FROM cadastre_lab.parcels GROUP BY 1, 2;
These queries assume the cadastral tutorial table. The first should return zero rows; the second should show the expected type and CRS. Reject unexpected mixtures before exposing the table as a query layer.
Connections and compatibility
In QGIS configure a PostgreSQL connection with a read-only account and inspect geometry, key and permissions. In ArcGIS Pro consult the current PostgreSQL/PostGIS support matrix for your exact release, configure required client components and test a query layer. Read availability does not establish editability through every ArcGIS mechanism.
Compare selection by identifier, attribute filters, spatial extent and null values. Test timezone-aware dates, large numbers and field names. For large tables, check that geometry and extent detection do not trigger expensive queries every time a project opens.
Writes under a contract
Do not write directly from external tools into internal tables of a versioned geodatabase. Esri metadata and procedures are part of its operational model. For QGIS exchange, design read-only views, controlled exports or a supported editing service. Validate against the documentation for your product and version.
For ordinary PostGIS tables, establish constraints and a concurrency strategy before allowing multiple writers. A SQL update does not necessarily execute validation previously implemented only in a form or service.
When to retain a boundary
Separate systems where a workflow depends on versioning, specialized networks or service behavior not yet reproduced. Integrate through a published view or traceable exchange while evaluating alternatives. Accept the architecture only after testing reading, authorized editing, rejection, recovery and rollback from actual clients. An open port and successful connection are merely the beginning of that verification.
Pick a coexistence pattern deliberately
| Pattern | Good starting use | Boundary to preserve |
|---|---|---|
| Both clients read ordinary PostGIS tables | Shared reporting and map production | Homogeneous geometry, unique keys and supported versions |
| QGIS edits ordinary tables; ArcGIS reads | Gradual desktop transition | Database rules and refresh behavior |
| Clients consume a published feature service | Controlled service-based access | Authentication, service capabilities and entitlements |
| Export/import between managed systems | Specialized workflow retained | Version, identity mapping and reconciliation |
| Direct edits to Esri-managed internal tables | Avoid as an assumed integration | Geodatabase behavior requires supported procedures |
Begin with the pattern that changes the fewest responsibilities. Shared read access can remove a duplicate export without changing who owns editing. That may be a valuable first migration step even when an Esri-specific workflow remains.
The concrete ArcGIS editing limitation
Esri's PostgreSQL requirements distinguish direct database access from editing through a web feature layer. The current query-layer documentation also describes query layers in an ArcGIS Pro map as read-only. Therefore, “ArcGIS connects to PostGIS” must not be presented as “ArcGIS Pro directly edits any ordinary PostGIS table.” Verify the exact supported editing path for the installed release and licensed deployment.
The linked latest documentation can change. Record the ArcGIS Pro and Enterprise versions in your compatibility result and consult their matching documentation. A supported database version for a newer ArcGIS release does not automatically validate an older desktop estate.
Design an interoperability test dataset
Use a small table with a stable integer key, one explicit geometry type, one CRS and representative attributes. Include an accented label, a null optional value, a timezone-aware timestamp and an identifier whose formatting matters. If production uses multipart, Z or M coordinates, include those cases in separate clearly defined layers rather than assuming a mixed layer will behave consistently.
Test a view as well as a table if publication depends on joins. A join can repeat the apparent identifier and cause client selection errors. Validate uniqueness after applying the actual query, not only in the original parent table.
Compare behavior in both clients
- Open the same read-only object in QGIS and ArcGIS Pro.
- Compare total count, map extent, attribute values and coordinate placement.
- Select a known identifier and verify that exactly one intended feature is selected.
- Apply the same business filter and reconcile the returned keys.
- Update a permitted value through the designated writer, then refresh both readers and inspect visibility.
- Revoke a test reader and verify reconnection fails as expected.
Capture the actual client behavior. A successful psql connection proves network and database access, but not the map client's interpretation of keys, geometry or supported operations.
Common symptoms and their causes
| Symptom | Investigation |
|---|---|
| Missing features in one client | Mixed spatial properties, filter, null geometry or identifier problem |
| Several records selected as one | Nonunique identifier in the query result |
| Read works but edit is unavailable | Unsupported direct editing path, privilege or read-only query layer |
| Values appear stale | Refresh, transaction state or service cache |
| Layer takes too long to open | Extent/type discovery, expensive view or missing query indexes |
Do not solve missing features by inventing a unique identifier from an unstable row order. Use a key that remains tied to the same object across refreshes. Do not bypass an Esri-managed editing path with direct SQL to make a demonstration work.
The final result should state precisely which combinations passed: client version, database version, object type, read path, write path and tested operations. That limited compatibility statement is more useful than a universal promise. Continue with PostGIS concurrency design before broadening write access.
Sources and documentation
- PostGIS reference
- PostgreSQL documentation
- ArcGIS Pro PostgreSQL requirements
- ArcGIS Pro query layers
Next step
Continue in the Open GIS collection. For a specific project, use the total-cost calculator and request an assessment.