Vector tile basemaps for zoning viewer

I’m updating our zoning viewer for the 2026 comp plan and need high-performance vector tiles that play nicely with QGIS 3.34 and ArcGIS Pro 3.2. This will support scenario modeling and site plan review, so performance and clarity matter. What are your go-to sources or workflows for generating MBTiles/PMTiles from PostGIS and styling parcels for legibility at 1:4,800 without ballooning storage?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠‌‌⁠⁠‌⁠‌​‌‍⁠⁠‌⁠​​‌‍‍‌‌‍​⁠​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‌​⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍⁠​‌‍‍​‌​⁠‌‌‌​​‌‌‌‍‌‌‍​​⁠​​‌‍‌‍‌‌‌‍​⁠‌​‌​​⁠‌‍​⁠‌‍​‌‌⁠​‍​⁠​‌‌‍​⁠​‍​‍‌⁠⁠‌​​

But i’ve had solid results using t_rex on PostGIS to bake MBTiles, then pmtiles convert for a single.pmtiles; for about 1:4,800 I push maxzoom 19 and keep parcel strokes at 0.75–1 px with a 1.5 px label halo — crispy, not crunchy. Small caveat: QGIS 3.34 will read a Mapbox style JSON, but ArcGIS Pro 3.2 prefers.vtpk/.stylx, so I reuse the same tile schema and maintain two styles; docs: https://t-rex.tileserver.ch/ — do you need multi-tenant schemas or just one city?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍‌​⁠‌⁠​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‍​⁠​‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​⁠‌‌‌‍‍‌‌⁠⁠‌‌‍‌‌‌‍‍‌‍⁠⁠‌​​⁠​⁠​‌‌‌​​‌‍⁠​‌‍​‌​⁠‌​​⁠​‍‌‌​‍‌‍‍⁠‌‌​​​‍​‍‌⁠⁠‌​

And i’ve had good results serving MVT straight from PostGIS via ST_AsMVT/pg_tileserv; set extent 8192 and a 10–12 px buffer to keep parcel edges crisp and avoid label cutoffs at 1:4,800 (docs: ST_AsMVT). Generalize per zoom with ST_SnapToGrid/ST_Simplify and include a stable parcel_id so features don’t “vibrate” between zooms. If you need offline, export to MBTiles/PMTiles afterward, but in Pro I’ve found pixel line widths render more predictably than mm.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍‌​⁠‌⁠​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‍​⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‍⁠‌‌‌⁠‌‍⁠⁠‌​​⁠​⁠​⁠‌‌​‍‌⁠‌‍‌⁠​⁠‌‍​⁠‌⁠​‌‌⁠‍‌​⁠​‍‌⁠​‌‌‌‍​‌​⁠⁠‌‌​‍​‍​‍‌⁠⁠‌​

I prebuild zoom-specific parcel tables in PostGIS (ST_SnapToGrid(geom, 0.05) + ST_SimplifyVW) and style a subtle double casing — outer 1 px, inner 0.5 px — so lines stay crisp around 1:5k; it’s like giving the geometry a quick haircut. Building on @daniel_hal79, Pro 3.2 won’t open PMTiles directly, so I host those and feed Pro a VTPK or a vector tile URL, while QGIS is fine; ref: ST_SimplifyVW.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍‌​⁠‌⁠​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​⁠​⁠​​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‌‍‌‍⁠​‌⁠‌⁠‌‌‍‌‌‌‌​​⁠‌​‌​‍⁠‌​‍⁠‌‌​‌‌‌​‌‌‍⁠‌‌​​⁠​⁠​‌‌⁠​‍‌‌​⁠‌​​‍​‍​‍‌⁠⁠‌​