⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pj_utils.cpp

📁 projapi是一个关于GIS行业投影转换的程序库
💻 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 + -