📄 pj_utils.cpp
字号:
#include "stdafx.h"
#define PJ_LIB__#include "projects.h"#include <string.h>#include <math.h>/************************************************************************//* pj_is_latlong() *//* *//* Returns TRUE if this coordinate system object is *//* geographic. *//************************************************************************/int pj_is_latlong( PJ *pj ){ return pj == NULL || pj->is_latlong;}/************************************************************************//* pj_is_geocent() *//* *//* Returns TRUE if this coordinate system object is geocentric. *//************************************************************************/int pj_is_geocent( PJ *pj ){ return pj != NULL && pj->is_geocent;}/************************************************************************//* pj_latlong_from_proj() *//* *//* Return a PJ* definition defining the lat/long coordinate *//* system on which a projection is based. If the coordinate *//* system passed in is latlong, a clone of the same will be *//* returned. *//************************************************************************/PJ *pj_latlong_from_proj( PJ *pj_in ){ char defn[512]; int got_datum = FALSE; pj_errno = 0; strcpy( defn, "+proj=latlong" ); if( pj_param(pj_in->params, "tdatum").i ) { got_datum = TRUE; sprintf( defn+strlen(defn), " +datum=%s", pj_param(pj_in->params,"sdatum").s ); } else if( pj_param(pj_in->params, "tellps").i ) { sprintf( defn+strlen(defn), " +ellps=%s", pj_param(pj_in->params,"sellps").s ); } else if( pj_param(pj_in->params, "ta").i ) { sprintf( defn+strlen(defn), " +a=%s", pj_param(pj_in->params,"sa").s ); if( pj_param(pj_in->params, "tb").i ) sprintf( defn+strlen(defn), " +b=%s", pj_param(pj_in->params,"sb").s ); else if( pj_param(pj_in->params, "tes").i ) sprintf( defn+strlen(defn), " +es=%s", pj_param(pj_in->params,"ses").s ); else if( pj_param(pj_in->params, "tf").i ) sprintf( defn+strlen(defn), " +f=%s", pj_param(pj_in->params,"sf").s ); else sprintf( defn+strlen(defn), " +es=%.4f", pj_in->es ); } else { pj_errno = -13; return NULL; } if( !got_datum ) { if( pj_param(pj_in->params, "ttowgs84").i ) sprintf( defn+strlen(defn), " +towgs84=%s", pj_param(pj_in->params,"stowgs84").s ); if( pj_param(pj_in->params, "ttowgs84").i ) sprintf( defn+strlen(defn), " +towgs84=%s", pj_param(pj_in->params,"stowgs84").s ); if( pj_param(pj_in->params, "tnadgrids").i ) sprintf( defn+strlen(defn), " +nadgrids=%s", pj_param(pj_in->params,"snadgrids").s ); } /* copy over some other information related to ellipsoid */ if( pj_param(pj_in->params, "tR").i ) sprintf( defn+strlen(defn), " +R=%s", pj_param(pj_in->params,"sR").s ); if( pj_param(pj_in->params, "tR_A").i ) sprintf( defn+strlen(defn), " +R_A" ); if( pj_param(pj_in->params, "tR_V").i ) sprintf( defn+strlen(defn), " +R_V" ); if( pj_param(pj_in->params, "tR_a").i ) sprintf( defn+strlen(defn), " +R_a" ); if( pj_param(pj_in->params, "tR_lat_a").i ) sprintf( defn+strlen(defn), " +R_lat_a=%s", pj_param(pj_in->params,"sR_lat_a").s ); if( pj_param(pj_in->params, "tR_lat_g").i ) sprintf( defn+strlen(defn), " +R_lat_g=%s", pj_param(pj_in->params,"sR_lat_g").s ); /* copy over prime meridian */ if( pj_param(pj_in->params, "tpm").i ) sprintf( defn+strlen(defn), " +pm=%s", pj_param(pj_in->params,"spm").s ); return pj_init_plus( defn );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -