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

📄 ogr_srs_proj4.cpp

📁 用于读取TAB、MIF、SHP文件的类
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                 "+proj=ortho +lat_0=%.16g +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=laea +lat_0=%.16g +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_AZIMUTHAL_EQUIDISTANT) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=aeqd +lat_0=%.16g +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_EQUIDISTANT_CONIC) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=eqdc +lat_0=%.16g +lon_0=%.16g +lat_1=%.16g +lat_2=%.16g"                 " +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0),                 GetNormProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0),                 GetNormProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0),                 GetNormProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_MILLER_CYLINDRICAL) )    {        sprintf( szProj4+strlen(szProj4),                "+proj=mill +lat_0=%.16g +lon_0=%.16g +x_0=%.16g +y_0=%.16g +R_A ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_MOLLWEIDE) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=moll +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_ECKERT_IV) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=eck4 +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_ECKERT_VI) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=eck6 +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_POLYCONIC) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=poly +lat_0=%.16g +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_ALBERS_CONIC_EQUAL_AREA) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=aea +lat_1=%.16g +lat_2=%.16g +lat_0=%.16g +lon_0=%.16g"                 " +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0),                 GetNormProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0),                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_ROBINSON) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=robin +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_VANDERGRINTEN) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=vandg +lon_0=%.16g +x_0=%.16g +y_0=%.16g +R_A ",                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_SINUSOIDAL) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=sinu +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_GALL_STEREOGRAPHIC) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=gall +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_GOODE_HOMOLOSINE) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=goode +lon_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_GEOSTATIONARY_SATELLITE) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=geos +lon_0=%.16g +h=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_SATELLITE_HEIGHT,35785831.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP)         || EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP_BELGIUM) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=lcc +lat_1=%.16g +lat_2=%.16g +lat_0=%.16g +lon_0=%.16g"                 " +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0),                 GetNormProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0),                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }        else if( EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_1SP) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=lcc +lat_1=%.16g +lat_0=%.16g +lon_0=%.16g"                 " +k_0=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_SCALE_FACTOR,1.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_HOTINE_OBLIQUE_MERCATOR) )    {        /* not clear how ProjParm[3] - angle from rectified to skewed grid -           should be applied ... see the +not_rot flag for PROJ.4.           Just ignoring for now. */        /* special case for swiss oblique mercator : see bug 423 */        if( fabs(GetNormProjParm(SRS_PP_AZIMUTH,0.0) - 90.0) < 0.0001             && fabs(GetNormProjParm(SRS_PP_RECTIFIED_GRID_ANGLE,0.0)-90.0) < 0.0001 )        {            sprintf( szProj4+strlen(szProj4),                     "+proj=somerc +lat_0=%.16g +lon_0=%.16g"                     " +x_0=%.16g +y_0=%.16g ",                     GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                     GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                     GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                     GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );        }        else        {            sprintf( szProj4+strlen(szProj4),                     "+proj=omerc +lat_0=%.16g +lonc=%.16g +alpha=%.16g"                     " +k=%.16g +x_0=%.16g +y_0=%.16g ",                     GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                     GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                     GetNormProjParm(SRS_PP_AZIMUTH,0.0),                     GetNormProjParm(SRS_PP_SCALE_FACTOR,1.0),                     GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                     GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );        }    }    else if( EQUAL(pszProjection,                   SRS_PT_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=omerc +lat_0=%.16g"                 " +lon_1=%.16g +lat_1=%.16g +lon_2=%.16g +lat_2=%.16g"                 " +k=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_LATITUDE_OF_POINT_1,0.0),                 GetNormProjParm(SRS_PP_LONGITUDE_OF_POINT_1,0.0),                 GetNormProjParm(SRS_PP_LATITUDE_OF_POINT_2,0.0),                 GetNormProjParm(SRS_PP_LONGITUDE_OF_POINT_2,0.0),                 GetNormProjParm(SRS_PP_SCALE_FACTOR,1.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_KROVAK) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=krovak +lat_0=%.16g +lon_0=%.16g +alpha=%.16g"                 " +k=%.16g +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0),                 GetNormProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0),                 GetNormProjParm(SRS_PP_AZIMUTH,0.0),                 GetNormProjParm(SRS_PP_SCALE_FACTOR,1.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    else if( EQUAL(pszProjection,SRS_PT_TWO_POINT_EQUIDISTANT) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=tpeqd +lat_1=%.16g +lon_1=%.16g "                 "+lat_2=%.16g +lon_2=%.16g "                 "+x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_1ST_POINT,0.0),                 GetNormProjParm(SRS_PP_LONGITUDE_OF_1ST_POINT,0.0),                 GetNormProjParm(SRS_PP_LATITUDE_OF_2ND_POINT,0.0),                 GetNormProjParm(SRS_PP_LONGITUDE_OF_2ND_POINT,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }    /* Note: This never really gets used currently.  See bug 423 */    else if( EQUAL(pszProjection,SRS_PT_SWISS_OBLIQUE_CYLINDRICAL) )    {        sprintf( szProj4+strlen(szProj4),                 "+proj=somerc +lat_0=%.16g +lon_0=%.16g"                 " +x_0=%.16g +y_0=%.16g ",                 GetNormProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0),                 GetNormProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0),                 GetNormProjParm(SRS_PP_FALSE_EASTING,0.0),                 GetNormProjParm(SRS_PP_FALSE_NORTHING,0.0) );    }/* -------------------------------------------------------------------- *//*      Handle earth model.  For now we just always emit the user       *//*      defined ellipsoid parameters.                                   *//* -------------------------------------------------------------------- */    double      dfSemiMajor = GetSemiMajor();    double      dfInvFlattening = GetInvFlattening();    const char  *pszPROJ4Ellipse = NULL;    const char  *pszDatum = GetAttrValue("DATUM");    if( ABS(dfSemiMajor-6378249.145) < 0.01        && ABS(dfInvFlattening-293.465) < 0.0001 )    {        pszPROJ4Ellipse = "clrk80";     /* Clark 1880 */    }    else if( ABS(dfSemiMajor-6378245.0) < 0.01             && ABS(dfInvFlattening-298.3) < 0.0001 )    {        pszPROJ4Ellipse = "krass";      /* Krassovsky */    }    else if( ABS(dfSemiMajor-6378388.0) < 0.01             && ABS(dfInvFlattening-297.0) < 0.0001 )    {        pszPROJ4Ellipse = "intl";       /* International 1924 */    }    else if( ABS(dfSemiMajor-6378160.0) < 0.01             && ABS(dfInvFlattening-298.25) < 0.0001 )    {        pszPROJ4Ellipse = "aust_SA";    /* Australian */    }    else if( ABS(dfSemiMajor-6377397.155) < 0.01             && ABS(dfInvFlattening-299.1528128) < 0.0001 )    {        pszPROJ4Ellipse = "bessel";     /* Bessel 1841 */    }    else if( ABS(dfSemiMajor-6377483.865) < 0.01             && ABS(dfInvFlattening-299.1528128) < 0.0001 )    {        pszPROJ4Ellipse = "bess_nam";   /* Bessel 1841 (Namibia / Schwarzeck)*/    }    else if( ABS(dfSemiMajor-6378160.0) < 0.01             && ABS(dfInvFlattening-298.247167427) < 0.0001 )    {        pszPROJ4Ellipse = "GRS67";      /* GRS 1967 */    }    else if( ABS(dfSemiMajor-6378137) < 0.01             && ABS(dfInvFlattening-298.257222101) < 0.000001 )    {        pszPROJ4Ellipse = "GRS80";      /* GRS 1980 */    }    else if( ABS(dfSemiMajor-6378206.4) < 0.01             && ABS(dfInvFlattening-294.9786982) < 0.0001 )    {        pszPROJ4Ellipse = "clrk66";     /* Clarke 1866 */    }    else if( ABS(dfSemiMajor-6378206.4) < 0.01             && ABS(dfInvFlattening-294.9786982) < 0.0001 )    {        pszPROJ4Ellipse = "mod_airy";   /* Modified Airy */    }    else if( ABS(dfSemiMajor-6377563.396) < 0.01             && ABS(dfInvFlattening-299.3249646) < 0.0001 )    {        pszPROJ4Ellipse = "airy";       /* Modified Airy */    }    else if( ABS(dfSemiMajor-6378200) < 0.01             && ABS(df

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -