Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PJ_INIT(3)		   Library Functions Manual		    PJ_INIT(3)

       pj_init - initialize cartographic projection
       pj_init_plus - initialize cartographic projection
       pj_fwd -	forward	cartographic projection
       pj_inv -	inverse	cartographic projection
       pj_transform - transform	between	coordinate systems
       pj_free - de-initialize projection

       #include	<proj_api.h>

       projPJ pj_init(int argc,	char **argv)

       projPJ pj_init_plus(const char *defn)

       projUV pj_fwd(projUV val, projPJ	proj)

       projUV pj_inv(projUV val, projPJ	proj)

       int pj_transform(projPJ src_cs, projPJ dst_cs, long point_count,
			int point_offset, double *x, double *y,	double *z)

       void pj_free(projPJ proj)

       Procedure  pj_init  selects  and	 initializes a cartographic projection
       with its	argument control parameters.  Argc is the number  of  elements
       in  the array of	control	strings	argv that each contain individual car-
       tographic control keyword assignments (+	 proj  arguments).   The  list
       must  contain at	least the proj=projection and Earth's radius or	ellip-
       tical parameters.  If the initialization	of the projection is  success-
       ful a valid address is returned otherwise a NULL	value.

       The  pj_init_plus  function  operates  similarly	to pj_init but takes a
       single string containing	the definition,	with each  parameter  prefixed
       with a plus sign.  For example "+proj=utm +zone=11 +ellps=WGS84".

       Once  initialization is performed either	forward	or inverse projections
       can be performed	with the returned value	of pj_init used	as  the	 argu-
       ment  proj.   The  argument structure projUV values u and v contain re-
       spective	longitude and latitude or x and	y.  Latitude and longitude are
       in  radians.   If a projection operation	fails, both elements of	projUV
       are set to HUGE_VAL (defined in math.h).

       Note: all projections have a forward mode, but some do not have an  in-
       verse  projection.  If the projection does not have an inverse the pro-
       jPJ structure element inv will be NULL.

       The pj_transform	function may be	used to	transform points  between  the
       two  provided  coordinate  systems.   In	addition to converting between
       cartographic projection coordinates and	geographic  coordinates,  this
       function	also takes care	of datum shifts	if possible between the	source
       and destination coordinate system.  Unlike pj_fwd and pj_inv it is also
       allowable for the coordinate system definitions (PJ *) to be geographic
       coordinate systems (defined as +proj=latlong).  The x, y	and  z	arrays
       contain	the input values of the	points,	and are	replaced with the out-
       put values.  The	point_offset should indicate the spacing the of	 x,y,z
       arrays, normally	1.  The	function returns zero on success, or the error
       number (also in pj_errno) on failure.

       Memory associated with the projection may be freed with pj_free.

       The following program reads latitude and	longitude  values  in  decimal
       degrees,	 performs Mercator projection with a Clarke 1866 ellipsoid and
       a 33<degree> latitude of	true scale and prints the projected  cartesian
       values in meters:
       #include	<proj_api.h>

       main(int	argc, char **argv) {
	    char *args[] = { "proj=merc", "ellps=clrk66", "lat_ts=33" };
	    projUV p;
	    projPJ pj;

	    if (!(pj = pj_init(3, args)))
	    while (scanf("%lf %lf", &p.v, &p.u)	== 2) {
	       p.u *= DEG_TO_RAD;
	       p.v *= DEG_TO_RAD;
	       p = pj_fwd(p, pj);
	       printf("%.2f\t%.2f\n", p.u, p.v);

       libproj.a - library of projections and support procedures

SEE ALSO, proj(1),
       Cartographic  Projection	 Procedures for	the UNIX Environment--A	User's
       Manual, (Evenden, 1990, Open-file report	90-284).

       A list of known bugs can	found at
       where new bug reports can be submitted too.


			     2020/02/10	Rel. 6.3.1		    PJ_INIT(3)


Want to link to this manual page? Use this URL:

home | help