GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
GDAL-VECTOR-PIPELINE(1) GDAL GDAL-VECTOR-PIPELINE(1)

gdal-vector-pipeline - Process a vector dataset

Added in version 3.11.

Usage: gdal vector pipeline [OPTIONS] <PIPELINE>
Process a vector dataset.
Positional arguments:
Common Options:

-h, --help Display help message and exit
--json-usage Display usage as JSON document and exit
--config <KEY>=<VALUE> Configuration option [may be repeated]
--progress Display progress bar <PIPELINE> is of the form: read|concat [READ-OPTIONS] ( ! <STEP-NAME> [STEP-OPTIONS] )* ! write [WRITE-OPTIONS]


A pipeline chains several steps, separated with the ! (quotation mark) character. The first step must be read or concat, and the last one write. Each step has its own positional or non-positional arguments. Apart from read, concat and write, all other steps can potentially be used several times in a pipeline.

Potential steps are:

read

* read [OPTIONS] <INPUT>
------------------------
Read a vector dataset.
Positional arguments:

-i, --input <INPUT> Input vector datasets [required] Options:
-l, --layer, --input-layer <INPUT-LAYER> Input layer name(s) [may be repeated] Advanced Options:
--if, --input-format <INPUT-FORMAT> Input formats [may be repeated]
--oo, --open-option <KEY>=<VALUE> Open options [may be repeated]


concat

* concat [OPTIONS] <INPUT>...
-----------------------------
Concatenate vector datasets.
Positional arguments:

-i, --input <INPUT> Input vector datasets [1.. values] [required] Options:
-l, --layer, --input-layer <INPUT-LAYER> Input layer name(s) [may be repeated]
--mode <MODE> Determine the strategy to create output layers from source layers . MODE=merge-per-layer-name|stack|single (default: merge-per-layer-name)
--output-layer <OUTPUT-LAYER> Name of the output vector layer (single mode), or template to name the output vector layers (stack mode)
--source-layer-field-name <SOURCE-LAYER-FIELD-NAME> Name of the new field to add to contain identificoncation of the source layer, with value determined from 'source-layer-field-content'
--source-layer-field-content <SOURCE-LAYER-FIELD-CONTENT> A string, possibly using {AUTO_NAME}, {DS_NAME}, {DS_BASENAME}, {DS_INDEX}, {LAYER_NAME}, {LAYER_INDEX}
--field-strategy <FIELD-STRATEGY> How to determine target fields from source fields. FIELD-STRATEGY=union|intersection (default: union)
-s, --src-crs <SRC-CRS> Source CRS
-d, --dst-crs <DST-CRS> Destination CRS Advanced Options:
--if, --input-format <INPUT-FORMAT> Input formats [may be repeated]
--oo, --open-option <KEY>=<VALUE> Open options [may be repeated]


Details for options can be found in gdal vector concat.

clip

* clip [OPTIONS]
----------------
Clip a vector dataset.
Options:

--active-layer <ACTIVE-LAYER> Set active layer (if not specified, all)
--bbox <BBOX> Clipping bounding box as xmin,ymin,xmax,ymax
Mutually exclusive with --geometry, --like
--bbox-crs <BBOX-CRS> CRS of clipping bounding box
--geometry <GEOMETRY> Clipping geometry (WKT or GeoJSON)
Mutually exclusive with --bbox, --like
--geometry-crs <GEOMETRY-CRS> CRS of clipping geometry
--like <DATASET> Dataset to use as a template for bounds
Mutually exclusive with --bbox, --geometry
--like-sql <SELECT-STATEMENT> SELECT statement to run on the 'like' dataset
Mutually exclusive with --like-where
--like-layer <LAYER-NAME> Name of the layer of the 'like' dataset
--like-where <WHERE-EXPRESSION> WHERE SQL clause to run on the 'like' dataset
Mutually exclusive with --like-sql


Details for options can be found in gdal vector clip.

edit

* edit [OPTIONS]
----------------
Edit metadata of a vector dataset.
Options:

--active-layer <ACTIVE-LAYER> Set active layer (if not specified, all)
--geometry-type <GEOMETRY-TYPE> Layer geometry type
--crs <CRS> Override CRS (without reprojection)
--metadata <KEY>=<VALUE> Add/update dataset metadata item [may be repeated]
--unset-metadata <KEY> Remove dataset metadata item [may be repeated]
--layer-metadata <KEY>=<VALUE> Add/update layer metadata item [may be repeated]
--unset-layer-metadata <KEY> Remove layer metadata item [may be repeated]


Details for options can be found in gdal vector edit.

filter

* filter [OPTIONS]
------------------
Filter a vector dataset.
Options:

--active-layer <ACTIVE-LAYER> Set active layer (if not specified, all)
--bbox <BBOX> Bounding box as xmin,ymin,xmax,ymax
--where <WHERE>|@<filename> Attribute query in a restricted form of the queries used in the SQL WHERE statement


Details for options can be found in gdal vector filter.

geom

* geom <COMMAND> [OPTIONS]
where <COMMAND> is one of:

- buffer: Compute a buffer around geometries of a vector dataset.
- explode-collections: Explode geometries of type collection of a vector dataset.
- make-valid: Fix validity of geometries of a vector dataset.
- segmentize: Segmentize geometries of a vector dataset.
- set-type: Modify the geometry type of a vector dataset.
- simplify: Simplify geometries of a vector dataset.
- swap-xy: Swap X and Y coordinates of geometries of a vector dataset.


Details for options can be found in gdal vector geom.

reproject

* reproject [OPTIONS]
---------------------
Reproject a vector dataset.
Options:

--active-layer <ACTIVE-LAYER> Set active layer (if not specified, all)
-s, --src-crs <SRC-CRS> Source CRS
-d, --dst-crs <DST-CRS> Destination CRS [required]


Details for options can be found in gdal vector reproject.

select

* select [OPTIONS] <FIELDS>
---------------------------
Select a subset of fields from a vector dataset.
Positional arguments:

--fields <FIELDS> Fields to select (or exclude if --exclude) [may be repeated] [required] Options:
--active-layer <ACTIVE-LAYER> Set active layer (if not specified, all)
--exclude Exclude specified fields
Mutually exclusive with --ignore-missing-fields
--ignore-missing-fields Ignore missing fields
Mutually exclusive with --exclude


Details for options can be found in gdal vector select.

sql

* sql [OPTIONS] <statement>|@<filename>
---------------------------------------
Apply SQL statement(s) to a dataset.
Positional arguments:

--sql <statement>|@<filename> SQL statement(s) [may be repeated] [required] Options:
-l, --output-layer <OUTPUT-LAYER> Output layer name(s) [may be repeated]
--dialect <DIALECT> SQL dialect (e.g. OGRSQL, SQLITE)


Details for options can be found in gdal vector sql.

write

* write [OPTIONS] <OUTPUT>
--------------------------
Write a vector dataset.
Positional arguments:

-o, --output <OUTPUT> Output vector dataset [required] Options:
-f, --of, --format, --output-format <OUTPUT-FORMAT> Output format ("GDALG" allowed)
--co, --creation-option <KEY>=<VALUE> Creation option [may be repeated]
--lco, --layer-creation-option <KEY>=<VALUE> Layer creation option [may be repeated]
--overwrite Whether overwriting existing output is allowed
--update Whether to open existing dataset in update mode
--overwrite-layer Whether overwriting existing layer is allowed
--append Whether appending to existing layer is allowed
-l, --output-layer <OUTPUT-LAYER> Output layer name


gdal vector pipeline can be used to process a vector dataset and perform various processing steps.

A pipeline can be serialized as a JSON file using the GDALG output format. The resulting file can then be opened as a vector dataset using the GDALG: GDAL Streamed Algorithm driver, and apply the specified pipeline in a on-the-fly / streamed way.

The command_line member of the JSON file should nominally be the whole command line without the final write step, and is what is generated by gdal vector pipeline ! .... ! write out.gdalg.json.

{

"type": "gdal_streamed_alg",
"command_line": "gdal vector pipeline ! read in.gpkg ! reproject --dst-crs=EPSG:32632" }


The final write step can be added but if so it must explicitly specify the stream output format and a non-significant output dataset name.

{

"type": "gdal_streamed_alg",
"command_line": "gdal vector pipeline ! read in.gpkg ! reproject --dst-crs=EPSG:32632 ! write --output-format=streamed streamed_dataset" }


$ gdal vector pipeline --progress ! read in.gpkg ! reproject --dst-crs=EPSG:32632 ! write out.gpkg --overwrite


$ gdal vector pipeline --progress ! read in.gpkg ! reproject --dst-crs=EPSG:32632 ! write in_epsg_32632.gdalg.json --overwrite
$ gdal vector info in_epsg_32632.gdalg.json


Union 2 source shapefiles (with similar structure), reproject them to EPSG:32632, keep only cities larger than 1 million inhabitants and write to a GeoPackage

$ gdal vector pipeline --progress ! concat --single --dst-crs=EPSG:32632 france.shp belgium.shp ! filter --where "pop > 1e6" ! write out.gpkg --overwrite


Even Rouault <even.rouault@spatialys.com>

1998-2025

May 6, 2025

Search for    or go to Top of page |  Section 1 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.