GRASS Programmer's Manual  6.4.2(2012)
proj/datum.c File Reference
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <grass/gis.h>
#include <grass/glocale.h>
#include <grass/gprojects.h>
#include "local_proto.h"
Include dependency graph for proj/datum.c:

Go to the source code of this file.

Functions

int GPJ_get_datum_by_name (const char *name, struct gpj_datum *dstruct)
 Look up a string in datum.table file to see if it is a valid datum name and if so place its information into a gpj_datum struct.
int GPJ_get_default_datum_params_by_name (const char *name, char **params)
 "Last resort" function to retrieve a "default" set of datum parameters for a datum (N.B. there really is no such thing as a catch-all default!)
int GPJ_get_datum_params (char **name, char **params)
 Extract the datum transformation-related parameters for the current location.
int GPJ__get_datum_params (struct Key_Value *projinfo, char **datumname, char **params)
 Extract the datum transformation-related parameters from a set of general PROJ_INFO parameters.
int GPJ_ask_datum_params (const char *datumname, char **params)
 Interactively ask for datum parameters for a particular datum.
struct gpj_datum_transform_list * GPJ_get_datum_transform_by_name (const char *inputname)
 Internal function to find all possible sets of transformation parameters for a particular datum.
struct datum_listread_datum_table (void)
 Read the current GRASS datum.table from disk and store in memory.
void GPJ_free_datum (struct gpj_datum *dstruct)
 Free the memory used for the strings in a gpj_datum struct.
void free_datum_list (struct datum_list *dstruct)
 Free the memory used by a datum_list linked list structure.

Function Documentation

void free_datum_list ( struct datum_list dstruct)

Free the memory used by a datum_list linked list structure.

Parameters:
dstructdatum_list struct to be freed

Definition at line 543 of file proj/datum.c.

References datum_list::ellps, G_free(), datum_list::longname, datum_list::name, datum_list::next, and NULL.

Referenced by GPJ_get_datum_by_name(), and GPJ_osr_to_grass().

int GPJ__get_datum_params ( struct Key_Value *  projinfo,
char **  datumname,
char **  params 
)

Extract the datum transformation-related parameters from a set of general PROJ_INFO parameters.

This function can be used to test if a location's co-ordinate system set-up supports datum transformation.

Parameters:
projinfoSet of key_value pairs containing projection information in PROJ_INFO file format
datumnamePointer to a pointer which will have memory allocated and into which a string containing the datum name (if present) will be placed. Otherwise set to NULL.
paramsPointer to a pointer which will have memory allocated and into which a string containing the datum parameters (if present) will be placed. Otherwise set to NULL.
Returns:
-1 error or no datum information found, 1 only datum name found, 2 params found

Definition at line 174 of file proj/datum.c.

References G_asprintf(), G_find_key_value(), G_gisbase(), G_store(), gui_modules::menuform::gisbase, and NULL.

Referenced by GPJ_get_datum_params(), GPJ_grass_to_osr(), GPJ_osr_to_grass(), and pj_get_kv().

int GPJ_ask_datum_params ( const char *  datumname,
char **  params 
)

Interactively ask for datum parameters for a particular datum.

Uses traditional GRASS interactive prompt interface to provide information to user and encourage him/her to select the most appropriate set of datum transformation parameters for the location. Could really benefit from an abstracted user interaction library for seamless GUI interaction.

Parameters:
datumnameString containing datum name that parameters are to be found for. Must exist in datum.table or be "custom"
paramsPointer to a pointer that will have memory allocated and into which a string containing the datum parameters chosen by the user will be placed.
Returns:
1 ok, -1 error or user cancelled

Definition at line 240 of file proj/datum.c.

References G_asprintf(), G_convert_dirseps_to_host(), G_free(), G_gets(), G_strcasecmp(), G_strip(), G_system(), G_tempfile(), G_warning(), G_yes(), getenv(), GPJ_get_datum_transform_by_name(), and NULL.

void GPJ_free_datum ( struct gpj_datum *  dstruct)

Free the memory used for the strings in a gpj_datum struct.

Parameters:
dstructgpj_datum struct to be freed

Definition at line 529 of file proj/datum.c.

References G_free().

Referenced by GPJ__get_ellipsoid_params(), GPJ_get_datum_transform_by_name(), GPJ_grass_to_osr(), and GPJ_osr_to_grass().

int GPJ_get_datum_by_name ( const char *  name,
struct gpj_datum *  dstruct 
)

Look up a string in datum.table file to see if it is a valid datum name and if so place its information into a gpj_datum struct.

Parameters:
nameString containing datum name to look up
dstructgpj_datum struct into which datum parameters will be placed if found
Returns:
1 if datum found, -1 if not

Definition at line 37 of file proj/datum.c.

References datum_list::dx, datum_list::dy, datum_list::dz, datum_list::ellps, free_datum_list(), G_store(), G_strcasecmp(), datum_list::longname, datum_list::name, datum_list::next, NULL, and read_datum_table().

Referenced by GPJ__get_ellipsoid_params(), GPJ_get_datum_transform_by_name(), GPJ_grass_to_osr(), and GPJ_osr_to_grass().

int GPJ_get_datum_params ( char **  name,
char **  params 
)

Extract the datum transformation-related parameters for the current location.

This function can be used to test if a location's co-ordinate system set-up supports datum transformation.

Parameters:
namePointer to a pointer which will have memory allocated and into which a string containing the datum name (if present) will be placed. Otherwise set to NULL.
paramsPointer to a pointer which will have memory allocated and into which a string containing the datum parameters (if present) will be placed. Otherwise set to NULL.
Returns:
-1 error or no datum information found, 1 only datum name found, 2 params found

Definition at line 136 of file proj/datum.c.

References G_free_key_value(), G_get_projinfo(), and GPJ__get_datum_params().

struct gpj_datum_transform_list* GPJ_get_datum_transform_by_name ( const char *  inputname) [read]

Internal function to find all possible sets of transformation parameters for a particular datum.

Parameters:
inputnameString containing the datum name we are going to look up parameters for
Returns:
Pointer to struct gpj_datum_transform_list (a linked list containing transformation parameters), or NULL if no suitable parameters were found.

Definition at line 378 of file proj/datum.c.

References count, file, G_asprintf(), G_getl2(), G_gisbase(), G_store(), G_strcasecmp(), G_strip(), G_warning(), GPJ_free_datum(), GPJ_get_datum_by_name(), name, and NULL.

Referenced by GPJ_ask_datum_params(), GPJ_get_default_datum_params_by_name(), and GPJ_osr_to_grass().

int GPJ_get_default_datum_params_by_name ( const char *  name,
char **  params 
)

"Last resort" function to retrieve a "default" set of datum parameters for a datum (N.B. there really is no such thing as a catch-all default!)

Kind of a "last resort" function as there really is no such thing as a default set of datum transformation parameters. Only should really be used where user interaction to choose a set of parameters is not desirable. Use of this function is not likely to result in selection of the optimum set of datum transformation parameters for the location

Parameters:
nameString containing GRASS datum name for which default parameters are to be retrieved
paramsPointer to a pointer which will have memory allocated and into which a string containing the datum parameters (if present) will be placed
Returns:
The number of possible parameter sets GRASS knows about for this datum

Definition at line 85 of file proj/datum.c.

References count, G_free(), G_store(), GPJ_get_datum_transform_by_name(), and NULL.

Referenced by GPJ_osr_to_grass(), and pj_get_kv().

struct datum_list* read_datum_table ( void  ) [read]

Read the current GRASS datum.table from disk and store in memory.

The datum information is stored in a datum_list linked list structure.

Returns:
Pointer to first datum_list element in linked list, or NULL if unable to open datum.table file

Definition at line 471 of file proj/datum.c.

References count, DATUMTABLE, datum_list::dx, datum_list::dy, datum_list::dz, datum_list::ellps, file, G_getl2(), G_gisbase(), G_store(), G_strip(), G_warning(), datum_list::longname, name, datum_list::name, datum_list::next, NULL, and read_datum_table().

Referenced by GPJ_get_datum_by_name(), GPJ_osr_to_grass(), and read_datum_table().

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines