GDAL-VECTOR-GEOM-MAKE-VALID(1)

πŸ“¦
version 3.11.5 Β· 3 versions
, in fedora 43

πŸ’– gdal-vector-geom-make-valid

okay bestie, welcome to the manual page for gdal-vector-geom-make-valid (yes, the whole thing, manual section 1, GDAL edition) β€” the glow-up station for your messy little polygons ✨

🌸 NAME

gdal-vector-geom-make-valid β€” fix validity of geometries of a vector dataset 🩹

Added in version 3.11. (so it's a new icon, not a legacy one πŸ’…)


πŸ“œ SYNOPSIS

Usage: gdal vector geom make-valid [OPTIONS] <INPUT> <OUTPUT>

Fix validity of geometries of a vector dataset.

Positional arguments:
  -i, --input <INPUT>                                  Input vector datasets [required]
  -o, --output <OUTPUT>                                Output vector dataset [required]

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

Options:
  -l, --layer, --input-layer <INPUT-LAYER>             Input layer name(s) [may be repeated]
  -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
  --output-layer <OUTPUT-LAYER>                        Output layer name
  --active-layer <ACTIVE-LAYER>                        Set active layer (if not specified, all)
  --active-geometry <ACTIVE-GEOMETRY>                  Geometry field name to which to restrict the processing (if not specified, all)
  --method <METHOD>                                    Algorithm to use when repairing invalid geometries.. METHOD=linework|structure (default: linework)
  --keep-lower-dim                                     Keep components of lower dimension after MakeValid()

Advanced Options:
  --if, --input-format <INPUT-FORMAT>                  Input formats [may be repeated]
  --oo, --open-option <KEY>=<VALUE>                    Open options [may be repeated]

✨ DESCRIPTION

gdal vector geom make-valid makes sure your geometries are actually valid according to the rules of the Simple Features specification. no more self-intersecting chaos, no more bowtie polygons running around unsupervised πŸŽ€

Under the hood it runs the OGRGeometry::MakeValid() operation, and then OGRGeometryFactory::removeLowerDimensionSubGeoms() β€” unless --keep-lower-dim is set. yes queen, that's the whole pipeline 🫢

It can also be used as a step of gdal vector pipeline. slay, reusable πŸ’…

NOTE: This command requires a GDAL build against the GEOS library. no GEOS, no glow-up, sorry bestie 😭

πŸ”§ Standard options

  • -f, --of, --format, --output-format <OUTPUT-FORMAT> β€” which output vector format to use. Wanna know the allowed values? Run gdal --formats | grep vector | grep rw | sort and let the terminal tell you πŸ’–
  • --co <NAME>=<VALUE> β€” soooo many formats have one or more optional dataset creation options that control the particulars of the file being created. For instance, the GeoPackage driver supports creation options to control the version. 🧚

May be repeated. (spam it, go off)

The dataset creation options available vary by format driver, and some simple formats have no creation options at all. You can list the options supported for a format with the --formats command line option, but the documentation for the format is the definitive source of information on driver creation options. See Vector drivers format specific documentation for legal creation options for each format.

Note: dataset creation options are different from layer creation options. do not mix them up, that's a vibe check fail πŸ’€
  • -lco <NAME>=<VALUE> β€” layer creation option (format specific) 🌸
  • --overwrite β€” allow the program to overwrite an existing target file or dataset. Otherwise, by default, gdal errors out if the target file or dataset already exists. no sneaky overwrites without consent πŸ‘‘
  • --active-layer <ACTIVE-LAYER> β€” set the active layer. When it's specified, only the layer with that name gets processed. The other layers are left untouched, unbothered, thriving. If this option is not specified, all layers get processed.
  • --active-geometry <ACTIVE-GEOMETRY> β€” set the active geometry field by name. When it's specified, only that geometry field gets processed; other geometry fields are not modified. If it's not specified, all geometry fields get processed. This option can be combined together with --active-layer. team work makes the dream work 🫢
  • --method=linework|structure β€” the algorithm to use when repairing invalid geometries.
    • The default linework method combines all rings into a set of noded lines and then extracts valid polygons from that linework. This method keeps all input vertices. (all your vertices, safe and sound πŸ₯Ή)
    • The structure method (only available with GEOS >= 3.10) first makes all rings valid, then merges shells and subtracts holes from shells to generate a valid result. It assumes that holes and shells are correctly categorized. highkey picky, but it eats πŸ’…
  • --keep-lower-dim β€” keep components of lower dimension after MakeValid(). For example, MakeValid() may return a GeometryCollection of a Polygon and a LineString from a Polygon input. By default only the Polygon would be returned. Setting this option will return the GeometryCollection. don't abandon the little guys 😭

πŸš€ Advanced options

  • --oo <NAME>=<VALUE> β€” dataset open option (format specific). 🌈

May be repeated.

  • --if <format> β€” format/driver name to be attempted to open the input file(s). It's generally not necessary to specify it, but it can be used to skip automatic driver detection when it fails to select the appropriate driver. This option can be repeated several times to specify several candidate drivers. Note that it does not force those drivers to open the dataset. In particular, some drivers have requirements on file extensions. πŸ‘€

May be repeated.


🌈 GDALG OUTPUT (ON-THE-FLY / STREAMED DATASET)

This program supports serializing the command line 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. streamed, on-the-fly, main character energy ✨


🌈 GDALG OUTPUT (ON-THE-FLY / STREAMED DATASET)

(yes bestie, it's literally here twice in the original β€” and we keep every single detail in this house πŸ‘‘)

This program supports serializing the command line 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. ✨


πŸ§ͺ EXAMPLES

Example 1: Basic use of make-valid

$ gdal vector geom make-valid in.gpkg out.gpkg --overwrite

look at that. one line. in, out, overwrite. iconic πŸŽ€


πŸ‘©β€πŸ’» AUTHOR

Even Rouault <even.rouault@spatialys.com> β€” thank you legend, we owe you everything πŸ™‡β€β™€οΈπŸ’–

1998-2025


and that's the page, bestie!! manual page GDAL-VECTOR-GEOM-MAKE-VALID(1), from GDAL, dated Oct 29, 2025 β€” go make those geometries valid, you absolute icon πŸ’…βœ¨πŸ¦‹

πŸ“¦ where this page comes from