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

📄 mitab_spatialref.cpp

📁 用于读取TAB、MIF、SHP文件的类
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    else if( EQUAL(pszProjection,SRS_PT_AZIMUTHAL_EQUIDISTANT) )    {        sTABProj.nProjId = 5;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);        parms[2] = 90.0;        if( ABS((ABS(parms[1]) - 90)) > 0.001 )            sTABProj.nProjId = 28;    }    else if( EQUAL(pszProjection,SRS_PT_CYLINDRICAL_EQUAL_AREA) )    {        sTABProj.nProjId = 2;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_ECKERT_IV) )    {        sTABProj.nProjId = 14;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_ECKERT_VI) )    {        sTABProj.nProjId = 15;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_EQUIDISTANT_CONIC) )    {        sTABProj.nProjId = 6;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_GALL_STEREOGRAPHIC) )    {        sTABProj.nProjId = 17;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_HOTINE_OBLIQUE_MERCATOR) )    {        sTABProj.nProjId = 7;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_AZIMUTH,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA) )    {        sTABProj.nProjId = 4;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);        parms[2] = 90.0;        if( ABS((ABS(parms[1]) - 90)) > 0.001 )            sTABProj.nProjId = 28;    }    else if( EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP) )    {        sTABProj.nProjId = 3;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP_BELGIUM) )    {        sTABProj.nProjId = 19;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_MERCATOR_1SP) )    {        sTABProj.nProjId = 10;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);        if( parms[1] != 0.0 )            sTABProj.nProjId = 26;    }    else if( EQUAL(pszProjection,SRS_PT_MILLER_CYLINDRICAL) )    {        sTABProj.nProjId = 11;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_MOLLWEIDE) )    {        sTABProj.nProjId = 13;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_NEW_ZEALAND_MAP_GRID) )    {        sTABProj.nProjId = 18;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_SWISS_OBLIQUE_CYLINDRICAL) )    {        sTABProj.nProjId = 25;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_ROBINSON) )    {        sTABProj.nProjId = 12;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_SINUSOIDAL) )    {        sTABProj.nProjId = 16;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_STEREOGRAPHIC) )    {        sTABProj.nProjId = 20;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR) )    {        sTABProj.nProjId = 8;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_MI_21) ) // Encom 2003    {        sTABProj.nProjId = 21;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_MI_22) ) // Encom 2003    {        sTABProj.nProjId = 22;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_MI_23) ) // Encom 2003    {        sTABProj.nProjId = 23;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_MI_24) ) // Encom 2003    {        sTABProj.nProjId = 24;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_CASSINI_SOLDNER) )    {        sTABProj.nProjId = 30;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_NEW_ZEALAND_MAP_GRID) )    {        sTABProj.nProjId = 18;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    else if( EQUAL(pszProjection,SRS_PT_POLYCONIC) )    {        sTABProj.nProjId = 27;        parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);        parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);        parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);        parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);    }    /* ==============================================================     * Translate Datum and Ellipsoid     * ============================================================== */    const char *pszWKTDatum = poSpatialRef->GetAttrValue("DATUM");    MapInfoDatumInfo *psDatumInfo = NULL;        /*-----------------------------------------------------------------     * Default to WGS83 if we have no datum at all.     *----------------------------------------------------------------*/    if( pszWKTDatum == NULL )    {        psDatumInfo = asDatumInfoList+0; /* WGS 84 */    }        /*-----------------------------------------------------------------     * We know the MIF datum number, and need to look it up to     * translate into datum parameters.     *----------------------------------------------------------------*/    else if( EQUALN(pszWKTDatum,"MIF ",4)             && atoi(pszWKTDatum+4) != 999             && atoi(pszWKTDatum+4) != 9999 )    {        int     i;        for( i = 0; asDatumInfoList[i].nMapInfoDatumID != -1; i++ )        {            if( atoi(pszWKTDatum+4) == asDatumInfoList[i].nMapInfoDatumID )            {                psDatumInfo = asDatumInfoList + i;                break;            }        }        if( psDatumInfo == NULL )            psDatumInfo = asDatumInfoList+0; /* WGS 84 */    }    /*-----------------------------------------------------------------     * We have the MIF datum parameters, and apply those directly.     *----------------------------------------------------------------*/    else if( EQUALN(pszWKTDatum,"MIF ",4)             && (atoi(pszWKTDatum+4) == 999 || atoi(pszWKTDatum+4) == 9999) )    {        char **papszFields;        papszFields =            CSLTokenizeStringComplex( pszWKTDatum+4, ",", FALSE, TRUE);        if( CSLCount(papszFields) >= 5 )        {            sTABProj.nEllipsoidId = atoi(papszFields[1]);            sTABProj.dDatumShiftX = atof(papszFields[2]);            sTABProj.dDatumShiftY = atof(papszFields[3]);            sTABProj.dDatumShiftZ = atof(papszFields[4]);   

⌨️ 快捷键说明

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