Many geospatial datasets are now distributed as GeoParquet files or built in DuckDB. neoserver reads both formats natively through DuckDB Spatial. You can publish them as standard OGC services without loading them into PostGIS first.
When this fits
- Publish analytical outputs produced with DuckDB, Python, or Spark as GeoParquet
- Serve large, read-mostly datasets from files instead of a database server
- Publish remote GeoParquet over HTTPS or S3 when the path policy allows it
- Serve Shapefile, GeoPackage, GeoJSON, and FlatGeobuf files the same way
File-backed layers are read-only. WFS transactions require PostGIS.
Option 1: Upload in the console
The simplest path is a managed import:
- Open Imports → New import (or Upload a file in the workspace guide) and choose the dataset.
- neoserver inspects the file and proposes an import plan with layers, fields, and a bounded data preview.
- Set the public ID and access, choose Validate plan, then Publish dataset.
The data is stored in a managed, encrypted DuckDB database on the server, so no path configuration is needed for clients. Uploads must be enabled in the server configuration. See Upload a dataset.
Option 2: Connect files in place
To serve files where they already are, such as a data directory, an HTTPS location, or S3, first allow the locations in the server configuration. File access is denied by default:
[Datasource]
AllowedPaths = [
"/srv/geodata/**",
"https://data.example.com/public/**",
]
Allowlist only the data directories. Never include the catalog, the keys, or a broad root that contains them. See path policy.
Then, in the console, choose Add store and pick GeoParquet, DuckDB, or Vector file as the source type. Enter the path, test the connection, and publish the discovered layers with Add layer, as you would for PostGIS. For DuckDB, set the native SRID of the stored coordinates. Tables with different CRSs can be overridden per table in the advanced connection settings.
The equivalent management API call is:
curl -X POST http://localhost:9000/api/v1/workspaces/demo/services \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "buildings",
"type": "geoparquet",
"connection_info": { "path": "/srv/geodata/buildings.parquet" }
}'
neoserver reads the geometry column and CRS from the file’s GeoParquet metadata when they are present.
What clients get
A published layer is served through OGC API Features by default, and through WFS, WMS, and tiles once those are enabled in the workspace. DuckDB and GeoParquet stores also support read-only SQL views, so you can publish a filtered or joined query as its own layer.
Related
- Data sources for every source type and option
- Discover and publish layers
- OGC API Features