GRASS GIS 7 Programmer's Manual  7.5.svn(2017)-r71759
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
convert.c File Reference

GProj Library - Functions for manipulating co-ordinate system representations. More...

#include <grass/config.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <grass/gis.h>
#include <grass/gprojects.h>
#include <grass/glocale.h>
#include <cpl_csv.h>
#include "local_proto.h"
Include dependency graph for convert.c:

Go to the source code of this file.

Macros

#define CSVDIR   "/etc/proj/ogr_csv"
 

Functions

char * GPJ_grass_to_wkt (const struct Key_Value *proj_info, const struct Key_Value *proj_units, int esri_style, int prettify)
 Converts a GRASS co-ordinate system representation to WKT style. More...
 
char * GPJ_grass_to_wkt2 (const struct Key_Value *proj_info, const struct Key_Value *proj_units, const struct Key_Value *proj_epsg, int esri_style, int prettify)
 Converts a GRASS co-ordinate system representation to WKT style. EPSG code is preferred if available. More...
 
OGRSpatialReferenceH GPJ_grass_to_osr (const struct Key_Value *proj_info, const struct Key_Value *proj_units)
 Converts a GRASS co-ordinate system to an OGRSpatialReferenceH object. More...
 
OGRSpatialReferenceH GPJ_grass_to_osr2 (const struct Key_Value *proj_info, const struct Key_Value *proj_units, const struct Key_Value *proj_epsg)
 Converts a GRASS co-ordinate system to an OGRSpatialReferenceH object. EPSG code is preferred if available. More...
 
int GPJ_osr_to_grass (struct Cell_head *cellhd, struct Key_Value **projinfo, struct Key_Value **projunits, OGRSpatialReferenceH hSRS1, int datumtrans)
 Converts an OGRSpatialReferenceH object to a GRASS co-ordinate system. More...
 
int GPJ_wkt_to_grass (struct Cell_head *cellhd, struct Key_Value **projinfo, struct Key_Value **projunits, const char *wkt, int datumtrans)
 Converts a WKT projection description to a GRASS co-ordinate system. More...
 
const char * GPJ_set_csv_loc (const char *name)
 

Detailed Description

GProj Library - Functions for manipulating co-ordinate system representations.

(C) 2003-2017 by the GRASS Development Team

This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Author
Paul Kelly, Frank Warmerdam

Definition in file convert.c.

Macro Definition Documentation

#define CSVDIR   "/etc/proj/ogr_csv"

Definition at line 31 of file convert.c.

Referenced by GPJ_set_csv_loc().

Function Documentation

OGRSpatialReferenceH GPJ_grass_to_osr ( const struct Key_Value proj_info,
const struct Key_Value proj_units 
)

Converts a GRASS co-ordinate system to an OGRSpatialReferenceH object.

Parameters
proj_infoSet of GRASS PROJ_INFO key/value pairs
proj_unitsSet of GRASS PROJ_UNIT key/value pairs
Returns
OGRSpatialReferenceH object representing the co-ordinate system defined by proj_info and proj_units or NULL if it fails

Definition at line 136 of file convert.c.

References _, gpj_ellps::a, buff, gpj_datum::ellps, gpj_ellps::es, G_asprintf(), G_debug(), G_find_key_value(), G_free(), G_store(), G_strcasecmp(), G_warning(), GPJ__get_datum_params(), GPJ__get_ellipsoid_params(), GPJ_free_datum(), GPJ_free_ellps(), GPJ_get_datum_by_name(), GPJ_get_ellipsoid_by_name(), gpj_datum::longname, gpj_ellps::longname, NULL, pj_info::pj, pj_get_kv(), pj_info::proj, and gpj_ellps::rf.

Referenced by GPJ_grass_to_osr2().

OGRSpatialReferenceH GPJ_grass_to_osr2 ( const struct Key_Value proj_info,
const struct Key_Value proj_units,
const struct Key_Value proj_epsg 
)

Converts a GRASS co-ordinate system to an OGRSpatialReferenceH object. EPSG code is preferred if available.

The co-ordinate system definition is imported from EPSG (by GDAL) definition if available. TOWGS84 parameter is scanned from PROJ_INFO file and appended to co-ordinate system definition. If EPSG code is not available, PROJ_INFO file is used as GPJ_grass_to_osr() does.

Todo:
Merge with GPJ_grass_to_osr() in GRASS 8.
Parameters
proj_infoSet of GRASS PROJ_INFO key/value pairs
proj_unitsSet of GRASS PROJ_UNIT key/value pairs
proj_epsgSet of GRASS PROJ_EPSG key/value pairs
Returns
OGRSpatialReferenceH object representing the co-ordinate system defined by proj_info and proj_units or NULL if it fails

Definition at line 320 of file convert.c.

References G_find_key_value(), G_free_tokens(), G_number_of_tokens(), G_tokenize(), GPJ_grass_to_osr(), and NULL.

char* GPJ_grass_to_wkt ( const struct Key_Value proj_info,
const struct Key_Value proj_units,
int  esri_style,
int  prettify 
)

Converts a GRASS co-ordinate system representation to WKT style.

Takes a GRASS co-ordinate system as specified by two sets of key/value pairs derived from the PROJ_INFO and PROJ_UNITS files, and converts it to the 'Well Known Text' format.

Parameters
proj_infoSet of GRASS PROJ_INFO key/value pairs
proj_unitsSet of GRASS PROJ_UNIT key/value pairs
esri_styleboolean Output ESRI-style WKT (Use OSRMorphToESRI() function provided by OGR library)
prettifyboolean Use linebreaks and indents to 'prettify' output WKT string (Use OSRExportToPrettyWkt() function in OGR)
Returns
Pointer to a string containing the co-ordinate system in WKT format
NULL on error

Definition at line 87 of file convert.c.

References NULL.

Referenced by Rast_create_gdal_link().

char* GPJ_grass_to_wkt2 ( const struct Key_Value proj_info,
const struct Key_Value proj_units,
const struct Key_Value proj_epsg,
int  esri_style,
int  prettify 
)

Converts a GRASS co-ordinate system representation to WKT style. EPSG code is preferred if available.

Takes a GRASS co-ordinate system as specified key/value pairs derived from the PROJ_EPSG file. TOWGS84 parameter is scanned from PROJ_INFO file and appended to co-ordinate system definition imported from EPSG code by GDAL library. PROJ_UNITS file is ignored. The function converts it to the 'Well Known Text' format.

Todo:
Merge with GPJ_grass_to_wkt() in GRASS 8.
Parameters
proj_infoSet of GRASS PROJ_INFO key/value pairs
proj_unitsSet of GRASS PROJ_UNIT key/value pairs
proj_epsgSet of GRASS PROJ_EPSG key/value pairs
esri_styleboolean Output ESRI-style WKT (Use OSRMorphToESRI() function provided by OGR library)
prettifyboolean Use linebreaks and indents to 'prettify' output WKT string (Use OSRExportToPrettyWkt() function in OGR)
Returns
Pointer to a string containing the co-ordinate system in WKT format
NULL on error

Definition at line 118 of file convert.c.

int GPJ_osr_to_grass ( struct Cell_head cellhd,
struct Key_Value **  projinfo,
struct Key_Value **  projunits,
OGRSpatialReferenceH  hSRS1,
int  datumtrans 
)

Converts an OGRSpatialReferenceH object to a GRASS co-ordinate system.

Parameters
cellhdPointer to a GRASS Cell_head structure that will have its projection-related members populated with appropriate values
projinfoPointer to a pointer which will have a GRASS Key_Value structure allocated containing a set of GRASS PROJ_INFO values
projunitsPointer to a pointer which will have a GRASS Key_Value structure allocated containing a set of GRASS PROJ_UNITS values
hSRSOGRSpatialReferenceH object containing the co-ordinate system to be converted
datumtransIndex number of datum parameter set to use, 0 to leave unspecified
Returns
2 if a projected or lat/long co-ordinate system has been defined
1 if an unreferenced XY co-ordinate system has been defined

Definition at line 381 of file convert.c.

References _, gpj_datum_transform_list::count, gpj_datum::ellps, free_datum_list(), free_ellps_list(), G_asprintf(), G_create_key_value(), G_debug(), G_find_key_value(), G_free(), G_free_key_value(), G_gisbase(), G_lookup_key_value_from_file(), G_set_key_value(), G_store(), G_strcasecmp(), G_warning(), GPJ__get_datum_params(), GPJ_free_datum(), GPJ_free_datum_transform(), GPJ_get_datum_by_name(), GPJ_get_datum_transform_by_name(), GPJ_get_default_datum_params_by_name(), Key_Value::key, list, name, gpj_datum_transform_list::next, Key_Value::nitems, NULL, old, gpj_datum_transform_list::params, Cell_head::proj, PROJECTION_LL, PROJECTION_OTHER, PROJECTION_UTM, PROJECTION_XY, read_datum_table(), read_ellipsoid_table(), Key_Value::value, and Cell_head::zone.

Referenced by GPJ_wkt_to_grass().

const char* GPJ_set_csv_loc ( const char *  name)

Definition at line 912 of file convert.c.

References CSVDIR, G_asprintf(), G_free(), G_gisbase(), and NULL.

int GPJ_wkt_to_grass ( struct Cell_head cellhd,
struct Key_Value **  projinfo,
struct Key_Value **  projunits,
const char *  wkt,
int  datumtrans 
)

Converts a WKT projection description to a GRASS co-ordinate system.

Parameters
cellhdPointer to a GRASS Cell_head structure that will have its projection-related members populated with appropriate values
projinfoPointer to a pointer which will have a GRASS Key_Value structure allocated containing a set of GRASS PROJ_INFO values
projunitsPointer to a pointer which will have a GRASS Key_Value structure allocated containing a set of GRASS PROJ_UNITS values
wktWell-known Text (WKT) description of the co-ordinate system to be converted
datumtransIndex number of datum parameter set to use, 0 to leave unspecified
Returns
2 if a projected or lat/long co-ordinate system has been defined
1 if an unreferenced XY co-ordinate system has been defined
-1 on error

Definition at line 880 of file convert.c.

References GPJ_osr_to_grass(), and NULL.