finds.dev← search

// the find

CrunchyData/pg_featureserv

★ 535 · Go · Apache-2.0 · updated Sep 2025

Lightweight RESTful Geospatial Feature Server for PostGIS in Go

pg_featureserv turns a PostGIS database into an OGC API - Features endpoint with zero application code. You point it at a Postgres connection string and it auto-discovers tables, views, and functions, serving them as GeoJSON over HTTP. It's for GIS teams who want a standards-compliant feature server without standing up GeoServer or a custom FastAPI service.

The decision to push filter execution into the database is correct — CQL filters translate to SQL WHERE clauses that hit your existing PostGIS indexes, so spatial queries stay fast without a separate query engine. Exposing PostgreSQL functions as API endpoints is genuinely useful: you can implement custom spatial logic (routing, isochrones, hexagon grids) in SQL and get them as OGC-compliant endpoints automatically. The Go binary is a single static executable with a DATABASE_URL env var, which makes deployment trivially simple compared to Java-based GIS stacks. CQL2 filtering support with spatial predicates is ahead of what most lightweight feature servers offer.

No write support — this is read-only, so any use case involving edits requires a separate solution. The OGC API - Features Part 3 (filtering) and CQL2 implementations are against draft specs, meaning behavior could diverge from what clients expect if the standards evolved. Authentication is entirely absent from the server itself; you're expected to put it behind a reverse proxy, which is fine but underdocumented for anyone who doesn't already know this pattern. The project builds against Go 1.13 in the README despite the current Go ecosystem being well past that, and there's no signal in the docs about what Postgres or PostGIS versions are actually tested against.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →