v.out.postgis(1grass)

πŸ’– NAME πŸ’–

okay so bestie, this is v.out.postgis(1grass) from the GRASS User's Manual, and it exports a vector map layer to PostGIS feature table. that's the whole main character job. iconic. πŸ’…

🌈 KEYWORDS 🌈

  • vector, export, output, PostGIS, simple features, topology, 3D

✨ SYNOPSIS ✨

v.out.postgis
v.out.postgis --help
v.out.postgis [-tl2] input=name  [type=string[,string,...]]
[layer=string]  output=string  [output_layer=name]   [output_link=name]
[options=key=value[,key=value,...]]   [--overwrite]  [--help]
[--verbose]  [--quiet]  [--ui]

🚩 Flags 🚩

  • -t β€” Do not export attribute table. bare minimum era.
  • -l β€” Export PostGIS topology instead of simple features.
  • -2 β€” Force 2D output even if input is 3D. Useful if input is 3D but all z coordinates are identical.
  • --overwrite β€” Allow output files to overwrite existing files.
  • --help β€” Print usage summary.
  • --verbose β€” Verbose module output.
  • --quiet β€” Quiet module output.
  • --ui β€” Force launching GUI dialog.

πŸŽ€ Parameters πŸŽ€

  • input=name [required] β€” Name of input vector map.
  • type=string[,string,...] β€” Input feature type. Options: point, line, boundary, centroid, area, face, kernel, auto. Default: auto.
  • layer=string β€” Layer number or name. Default: 1.
  • output=string [required] β€” Name for output PostGIS datasource. Starts with PG prefix, eg. PG:dbname=grass.
  • output_layer=name β€” Name for output PostGIS layer. If not specified, input name is used.
  • output_link=name β€” Name for output vector map defined as a link to the PostGIS feature table. If not specified, the vector link is not created. The link can be also manually created by v.external module.
  • options=key=value[,key=value,...] β€” Creation options. Examples:
    • FID=cat: define feature id column cat
    • GEOMETRY_NAME=wkb_geometry: define geometry column wkb_geometry
    • SPATIAL_INDEX=NO: do not create spatial index on geometry column

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so v.out.postgis exports an existing GRASS vector map layer to PostGIS feature table. Features without category are skipped. periodt.

By default GRASS topological features are converted into simple features (see OGC Simple Feature Access specification for details). Flag -l allows to export vector features as topological elements stored in PostGIS Topology schema. Note that topological export requires PostGIS version 2 or later. slay.

Additional creation options can be defined by options parameter:

  • FID=<column> β€” name of column which will be used as primary key (feature id), default: fid
  • GEOMETRY_NAME=<column> β€” name of column which will be used for storing geometry data in feature table, default: geom
  • SPATIAL_INDEX=YES|NO β€” enable/disable creating spatial index on geometry column, default: YES
  • PRIMARY_KEY=YES|NO β€” enable/disable adding primary key on FID column, default: YES
  • SRID=<value> β€” spatial reference identifier, default: not defined

PostGIS Topology related options (relevant only for -l flag):

  • TOPOSCHEMA_NAME=<schema name> β€” name of PostGIS Topology schema, default: topo_<input>
  • TOPOGEOM_NAME=<column> β€” name of column which will be used for storing topogeometry data in feature table, default: topo
  • TOPO_TOLERANCE=<value> β€” tolerance for PostGIS Topology schema, see CreateTopology function for details, default: 0
  • TOPO_GEO_ONLY=YES|NO β€” store in PostGIS Topology schema only data relevant to Topo-Geo data model, default: NO

Creation options are comma-separated pairs (key=value), the options are case-insensitive. Note that options defined by v.external.out are ignored by v.out.postgis.

v.out.postgis optionally also creates a new vector map in the current mapset if output_link is defined.

πŸ’œ NOTES πŸ’œ

slow down bestie, this part matters. By default v.out.postgis exports vector data as simple features, ie. boundaries and centroids (forming topological areas) become polygons, isles become holes. Geometry of simple feature elements is stored in PostGIS feature table in the column named "geom". Name of the geometry column can be changed by options=GEOMETRY_NAME=<column>. Note that for exporting vector features as simple features can be alternatively used PostgreSQL driver from OGR library through v.out.ogr module.

Also note that it’s allowed to store in the feature table only features of the same type, ie. mixing of points and lines is not currently possible. The feature type is determined for output feature table from the first vector feature accessing data sequentially (type=auto). Vector features of other types are during export skipped. User can choose preferable feature type by type parameter. Only single type is currently allowed (see TODO section for details).

v.out.postgis currently supports only three basic output simple feature types: Points, Linestrings and Polygons. Also 3D features of the same type are supported, eg. 3D points are exported as PointZ simple feature. Faces are exported as 3D polygons. 3D features are written to the output automatically if input vector map is 3D. If -2 flag is given then the output is always 2D (z-coordinate is silently ignored for 3D input vector maps).

Multigeometries are not currently supported. Features with the same category are exported as multiple single features.

v.out.postgis also allows exporting vector features as topological elements in PostGIS Topology schema. PostGIS Topology extension uses three tables to store basic topological elements which forms topological objects like areas or isles in GRASS terminology. Nodes (0-dimensional topological elements) are stored in "node" table, edges (1-dimensional elements) in "edge" table and faces (2-dimensional elements) in "face" table.

  • GRASS nodes are stored in node table
  • GRASS points are stored in node table as regular nodes
  • GRASS centroids are stored in node table as regular nodes ("containing_face" refers to related area)
  • GRASS lines are stored in edge table
  • GRASS boundaries are stored in edge table
  • GRASS areas are stored in face table

Tables node, edge and face are stored in given topological schema. By default v.out.postgis defines its name as topo_<input>. Alternatively, the name for topology schema can be defined by options=TOPOSCHEMA_NAME=<name>.


🌸 EXAMPLES 🌸

🌟 Export Simple Features 🌟

Export vector map "urbanarea" as feature table "urbanarea" located in database "grass", schema "public". Note that this database schema is automatically used when not defined by the user.

v.out.postgis input=urbanarea output="PG:dbname=grass"

GRASS areas are converted into polygons, isles into holes. We can check the number of created polygons by simple SQL query below.

db.select driver=pg database=grass \
 sql="SELECT ST_GeometryType(geom) as geom_type, count(*) from urbanarea group by geom_type"
geom_type|count
ST_Polygon|657

Note: same procedure can be done by v.out.ogr module, eg.

v.out.ogr input=urbanarea output="PG:dbname=grass" format=PostgreSQL

In this case GRASS vector data are exported to PostGIS database using OGR library, namely using PostgreSQL driver. Contrary to the v.out.ogr module, v.out.postgis is using directly PostGIS data provider which is part of GRASS vector engine. Besides that, v.out.postgis is optimized for PostGIS export including topological access to the data.

πŸ’œ Export data into specific database schema πŸ’œ

Database schema for storing exported data can be defined by output_layer as <schema_name>.<table_name>. If the specified schema doesn’t exist in the database, then it’s automatically created.

Export vector map "bridges" as feature table in database schema "grassout".

v.out.postgis input=bridges output="PG:dbname=grass" output_layer=grassout.bridges

✨ Export data with creation options ✨

Example below demonstrates how to define name for geometry column and disable building spatial index. Spatial reference system is defined by srid identifier which corresponds in this case with EPSG 3358 (North Carolina dataset).

v.out.postgis input=roadsmajor output="PG:dbname=grass" options="GEOMETRY_NAME=wkb_geometry,SPATIAL_INDEX=NO,SRID=3358"

Exported data can be linked as vector map created in the current mapset by specifying output_link parameter. In the example below vector map "busstopsall" from PERMANENT mapset is exported into "grass" PostGIS database. v.out.postgis after successful export also creates in the current mapset GRASS vector map as a link to the PostGIS feature table.

v.out.postgis input=busstopsall@PERMANENT output="PG:dbname=grass" output_link=busstopsall_pg

Created link can be checked by v.info:

 v.info busstopsall_pg
...
 |----------------------------------------------------------------------------|
 | Map format:      PostGIS (PostgreSQL)                                      |
 | DB table:        public.busstopsall                                        |
 | DB name:         grass                                                     |
 | Geometry column: geom                                                      |
 | Feature type:    point                                                     |
 | Topology:        pseudo (simple features)                                  |
 |----------------------------------------------------------------------------|
...

πŸ”₯ Export data without attributes πŸ”₯

v.out.postgis allows ignoring attributes when exporting vector features by specifying -t flag. Command below exports vector features without attributes. The feature will contain only two columns, the fid and geometry column.

v.out.postgis -t input=railroads output="PG:dbname=grass"

🌈 Export topological data 🌈

By default v.out.postgis exports data as simple features. Flag -l allows exporting data as topological elements instead of simple features. Export topological elements is stored in PostGIS Topology schema.

v.out.postgis -l input=busroutesall output="PG:dbname=grass"

For more info about PostGIS Topology implementation in GRASS see the wiki page.

πŸ‘‘ TODO πŸ‘‘

  • Multi-feature export
  • Allow mixed features (points, lines)
  • Support other simple feature types like GeometryCollection and others
  • Implement missing options from v.out.ogr: -a, -s, -c, -p, -n
  • Add options: cats, where

🫢 REQUIREMENTS 🫢

  • PostGIS 2.x or later for topological export (flag -l)

🌟 REFERENCES 🌟

  • OGC Simple Feature Access specification
  • PostGIS Topology documentation
  • GRASS-PostGIS data provider

πŸ‘€ SEE ALSO πŸ‘€

okay bestie these are the siblings of this module, the whole lil family fr:

  • v.out.ogr
  • v.external
  • v.external.out
  • v.in.ogr

Also go peek at the PostGIS and PostGIS Topology wiki page from the GRASS User Wiki β€” that's where the lore lives. πŸ¦‹


🫢 AUTHOR 🫢

The icon who built this: Martin Landa, Czech Technical University in Prague, Czech Republic πŸ’…

and yes, development was supported by Fondazione Edmund Mach and Comune di Trento, Italy β€” shoutout, no cap πŸ“


πŸ’Ύ SOURCE CODE πŸ’Ύ

Available at: v.out.postgis source code (history) ✨

Latest change: Friday Aug 08 09:39:19 2025 in commit: ed72c71d8580e872cd6fd345c84a15c324764465

and then the classic index squad: Main index | Vector index | Topics index | Keywords index | Graphical index | Full index β€” all your lil navigation besties πŸŽ€

and that's the whole page, bestie, you made it to the end πŸ₯ΉπŸ’– This one's from the GRASS 8.5.0 reference manual, Β© 2003-2026 GRASS Development Team, and the latest touch-up landed that Friday, Aug 08 09:39:19 2025 β€” so yeah, fresh-ish and iconic ✨ Go make some PostGIS tables, ily, bye πŸ‘‘πŸ’œ

πŸ“¦ where this page comes from