Skip to content

g.proj

Prints or modifies GRASS projection information files (in various co-ordinate system descriptions).

Can also be used to create new GRASS projects.

g.proj [-pgdjfwetc] [georef=file] [wkt=file] [srid=params] [proj4=params] [epsg=code] [list_codes=string] [datum=name] [datum_trans=index] [project=name] format=name [--verbose] [--quiet] [--qq] [--ui]

Example:

g.proj format=plain

grass.script.parse_command("g.proj", georef=None, wkt=None, srid=None, proj4=None, epsg=None, list_codes=None, datum=None, datum_trans=0, project=None, format="plain", flags=None, verbose=False, quiet=False, superquiet=False)

Example:

gs.parse_command("g.proj", format="json")

Parameters

georef=file
    Name of georeferenced data file to read projection information from
wkt=file
    Name of ASCII file containing a WKT projection description
    '-' for standard input
srid=params
    Spatial reference ID with authority name and code
    E.g. EPSG:4326 or urn:ogc:def:crs:EPSG::4326
proj4=params
    PROJ.4 projection description
    '-' for standard input
epsg=code
    EPSG projection code
    Allowed values: 1-1000000
list_codes=string
    List codes for given authority, e.g. EPSG, and exit
    Allowed values: EPSG, ESRI, IAU_2015, IGNF, NKG, OGC, PROJ
datum=name
    Datum (overrides any datum specified in input co-ordinate system)
    Accepts standard GRASS datum codes, or "list" to list and exit
datum_trans=index
    Index number of datum transform parameters
    "0" for unspecified or "-1" to list and exit
    Allowed values: -1-100
    Default: 0
project=name
    Name of new project (location) to create
format=name [required]
    Output format
    Allowed values: plain, shell, json, wkt, proj4
    Default: plain
    plain: Human readable text output
    shell: shell script style text output
    json: JSON (JavaScript Object Notation)
    wkt: Well-known text output
    proj4: PROJ.4 style text output
-p
    Print projection information in conventional GRASS format
-g
    [DEPRECATED] Print projection information in shell script style. This flag is obsolete and will be removed in a future release. Use format=shell instead.
-d
    Verify datum information and print transformation parameters
-j
    [DEPRECATED] Print projection information in PROJ.4 format. This flag is obsolete and will be removed in a future release. Use format=proj4 instead.
-f
    Print 'flat' output with no linebreaks (applies to WKT and PROJ.4 output)
-w
    [DEPRECATED] Print projection information in WKT format. This flag is obsolete and will be removed in a future release. Use format=wkt instead.
-e
    Use ESRI-style format (applies to WKT output only)
-t
    Force override of datum transformation information in input co-ordinate system
-c
    Modify current project's projection files
--help
    Print usage summary
--verbose
    Verbose module output
--quiet
    Quiet module output
--qq
    Very quiet module output
--ui
    Force launching GUI dialog

georef : str, optional
    Name of georeferenced data file to read projection information from
    Used as: file
wkt : str, optional
    Name of ASCII file containing a WKT projection description
    '-' for standard input
    Used as: file
srid : str, optional
    Spatial reference ID with authority name and code
    E.g. EPSG:4326 or urn:ogc:def:crs:EPSG::4326
    Used as: params
proj4 : str, optional
    PROJ.4 projection description
    '-' for standard input
    Used as: params
epsg : int, optional
    EPSG projection code
    Used as: code
    Allowed values: 1-1000000
list_codes : str, optional
    List codes for given authority, e.g. EPSG, and exit
    Allowed values: EPSG, ESRI, IAU_2015, IGNF, NKG, OGC, PROJ
datum : str, optional
    Datum (overrides any datum specified in input co-ordinate system)
    Accepts standard GRASS datum codes, or "list" to list and exit
    Used as: name
datum_trans : int, optional
    Index number of datum transform parameters
    "0" for unspecified or "-1" to list and exit
    Used as: index
    Allowed values: -1-100
    Default: 0
project : str, optional
    Name of new project (location) to create
    Used as: name
format : str, required
    Output format
    Used as: name
    Allowed values: plain, shell, json, wkt, proj4
    plain: Human readable text output
    shell: shell script style text output
    json: JSON (JavaScript Object Notation)
    wkt: Well-known text output
    proj4: PROJ.4 style text output
    Default: plain
flags : str, optional
    Allowed values: p, g, d, j, f, w, e, t, c
    p
        Print projection information in conventional GRASS format
    g
        [DEPRECATED] Print projection information in shell script style. This flag is obsolete and will be removed in a future release. Use format=shell instead.
    d
        Verify datum information and print transformation parameters
    j
        [DEPRECATED] Print projection information in PROJ.4 format. This flag is obsolete and will be removed in a future release. Use format=proj4 instead.
    f
        Print 'flat' output with no linebreaks (applies to WKT and PROJ.4 output)
    w
        [DEPRECATED] Print projection information in WKT format. This flag is obsolete and will be removed in a future release. Use format=wkt instead.
    e
        Use ESRI-style format (applies to WKT output only)
    t
        Force override of datum transformation information in input co-ordinate system
    c
        Modify current project's projection files
verbose: bool, optional
    Verbose module output
    Default: False
quiet: bool, optional
    Quiet module output
    Default: False
superquiet: bool, optional
    Very quiet module output
    Default: False

DESCRIPTION

g.proj provides a means of converting a coordinate reference system (CRS) description between various formats.

For an introduction to map projections (with PROJ),see the manual page of r.proj.

If compiled without OGR present, the functionality is limited to:

  • Reporting the CRS information for the current project (previously called location), either in conventional GRASS (-p flag) or PROJ (-j flag) format
  • Changing the datum, or reporting and modifying the datum transformation parameters, for the current project

When compiled with OGR, functionality is increased and allows output of the CRS information in the Well-Known Text (WKT) format popularised by proprietary GIS. In addition, if one of the parameters georef, wkt, proj4 or epsg is specified, rather than being read from the current project, the CRS information is imported from an external source as follows:

  • With georef=filename g.proj attempts to invoke GDAL and OGR in turn to read a georeferenced file filename. The CRS information will be read from this file. If the file is not georeferenced or cannot be read, XY (unprojected) will be used.

  • When using wkt=filename, the file filename should contain a CRS description in WKT format with or without line-breaks (e.g. a '.prj' file). If - is given for the filename, the WKT description will be read from stdin rather than a file.

  • proj4=description should be a CRS description in PROJ format, enclosed in quotation marks if there are any spaces. If - is given for description, the PROJ description will be read from stdin rather than as a directly-supplied command-line parameter.

  • epsg=number should correspond to the index number of a valid co-ordinate system in the EPSG database. EPSG code support is based upon a local copy of the GDAL CSV co-ordinate system and datum information files, stored in the directory $GISBASE/etc/proj/ogr_csv. These can be updated if necessary to support future revisions of the EPSG database.

If datum information is incorrect or missing in the input co-ordinate system definition (e.g. PROJ descriptions have very limited support for specifying datum names), a GRASS datum abbreviation can instead be supplied using the datum parameter. This will override any datum contained in the input co-ordinate system, and discard any datum transformation parameters. Enter datum=list to return a list of all the datums supported by GRASS. Since any existing datum transformation parameters will have been discarded, the datumtrans parameter should in general always be used in conjunction with datum.

The -p, -j, -w, etc. flags are all functional when importing CRS information from an external source, meaning that g.proj can be used to convert between representations of the information. It is not required that either the input or output be in GRASS format.

In addition however, if the -c flag is specified, g.proj will create new GRASS CRS files (PROJ_INFO, PROJ_UNITS, WIND and DEFAULT_WIND) based on the imported information. If the project parameter is specified in addition to -c, then a new project will be created. Otherwise the CRS information files in the current project will be overwritten. The program will not warn before doing this.

The final mode of operation of g.proj is to report on the datum information and datum transformation parameters associated with the co-ordinate system. The -d flag will report a human-readable summary of this.

NOTES

If the input co-ordinate system contains a datum name but no transformation parameters, and there is more than one suitable parameter set available (according to the files datum.table and datumtransform.table in $GISBASE/etc/proj), g.proj will check the value of the datumtrans option and act according to the following:

  • -1: List available parameter sets in a GUI-parsable (but also human-readable) format and exit.
  • 0 (default): Continue without specifying parameters - if used when creating a project, other GRASS modules will use the "default" (likely non-optimum) parameters for this datum if necessary in the future.
  • Any other number less than or equal to the number of parameter sets available for this datum: Choose this parameter set and add it to the co-ordinate system description.

If the -t flag is specified, the module will attempt to change the datum transformation parameters using one of the above two methods even if a valid parameter set is already specified in the input co-ordinate system. This can be useful to change the datum information for an existing project.

Output is simply based on the input CRS information. g.proj does not attempt to verify that the co-ordinate system thus described matches an existing system in use in the world. In particular, this means there are no EPSG Authority codes in the WKT output.

WKT format shows the false eastings and northings in the projected unit (e.g. meters, feet) but in PROJ format it should always be given in meters.

The maximum size of input WKT or PROJ CRS descriptions is limited to 8000 bytes.

EXAMPLES

Print the CRS information for the current project:

g.proj -p

Print the CRS information for the current project in JSON format:

g.proj -p format=json

Print the CRS information for the current project in shell format:

g.proj -p format=shell

Print the CRS information for the current project in WKT format:

g.proj -p format=wkt

Print the CRS information for the current project in PROJ.4 format:

g.proj -p format=proj4

List the possible datum transformation parameters for the current project:

g.proj -t datumtrans=-1

Create projection (PRJ) file

Create a '.prj' file in ESRI format corresponding to the current project:

g.proj -wef > irish_grid.prj

Read CRS from file

Read the CRS information from a GeoTIFF file and print it in PROJ format:

g.proj -jf georef=ASTER_DEM20020508161837.tif

Convert the PROJ CRS description contained in a text file to WKT format:

cat proj4.description | g.proj -w proj4=-

Create new project

Create a new project with the coordinate system referred to by EPSG code 4326 (Latitude-Longitude/WGS84), without explicitly specifying datum transformation parameters:

g.proj -c epsg=4326 project=latlong

Create a new project with the coordinate system referred to by EPSG code 3857 (Pseudo-Mercator Projection)

g.proj -c epsg=3857 project=google

Create a new project with the coordinate system referred to by EPSG code 29900 (Irish Grid), selecting datum transformation parameter set no. 2:

# list available datums for EPSG code 29900
g.proj -t datumtrans=-1 epsg=29900
g.proj -c epsg=29900 datumtrans=2 project=irish_grid

Create a new project with the same coordinate system as the current project, but forcing a change to datum transformation parameter set no. 1:

g.proj -c project=newloc -t datumtrans=1

Create a new project with the coordinate system from a WKT definition stored in a text file:

g.proj -c wkt=irish_grid.prj project=irish_grid

Create a new project from a PROJ description, explicitly specifying a datum and using the default datum transformation parameters:

g.proj -c project=spain proj4="+proj=utm +zone=30 +ellps=intl" datum=eur50 datumtrans=0

Using g.proj output for GDAL/OGR tools

Reproject external raster map to current GRASS project (does not always make sense!) using the GDAL 'gdalwarp' tool. We recommend to use the ERDAS/Img format and not to use the ESRI style of WKT:

# example for 30x30 pixel resolution (enforce with -tr to avoid odd values)
gdalwarp -of HFA -tr 30 30 -t_srs "`g.proj -wf`" aster.img aster_tmerc.img

Reproject external vector map to current GRASS project using the OGR 'ogr2ogr' tool:

ogr2ogr -t_srs "`g.proj -wf`" polbnda_italy_GB_ovest.shp polbnda_italy_LL.shp

Using g.proj JSON output with pandas

Using the CRS information for the current project in JSON format with pandas:

import grass.script as gs
import pandas as pd

# Run g.proj to get CRS information in JSON format.
proj_data = gs.parse_command("g.proj", flags="p", format="json")

df = pd.DataFrame.from_dict(proj_data, orient='index')
print(df)
                               0
name     Lambert Conformal Conic
proj                         lcc
datum                      nad83
a                      6378137.0
es          0.006694380022900787
lat_1          36.16666666666666
lat_2          34.33333333333334
lat_0                      33.75
lon_0                        -79
x_0                    609601.22
y_0                            0
no_defs                  defined
unit                       Meter
units                     Meters
meters                         1

REFERENCES

PROJ: Projection/datum support library
GDAL raster library and toolset
OGR vector library and toolset

Further reading:

SEE ALSO

m.proj, r.proj, v.proj, r.import, r.in.gdal, v.import, v.in.ogr

AUTHOR

Paul Kelly

SOURCE CODE

Available at: g.proj source code (history)
Latest change: Tuesday Apr 01 23:00:53 2025 in commit f911b9e