亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mitab_coordsys.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
    }

    /*-----------------------------------------------------------------
     * 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;
        
        nDatum = atoi(pszWKTDatum+4);

        papszFields =
            CSLTokenizeStringComplex( pszWKTDatum+4, ",", FALSE, TRUE);

        if( CSLCount(papszFields) >= 5 )
        {
            nEllipsoid = atoi(papszFields[1]);
            adfDatumParm[0] = atof(papszFields[2]);
            adfDatumParm[1] = atof(papszFields[3]);
            adfDatumParm[2] = atof(papszFields[4]);
        }

        if( CSLCount(papszFields) >= 10 )
        {
            adfDatumParm[3] = atof(papszFields[5]);
            adfDatumParm[4] = atof(papszFields[6]);
            adfDatumParm[5] = atof(papszFields[7]);
            adfDatumParm[6] = atof(papszFields[8]);
            adfDatumParm[7] = atof(papszFields[9]);
        }

        if( CSLCount(papszFields) < 5 )
            nDatum = 104; /* WGS84 */

        CSLDestroy( papszFields );
    }
    
    /*-----------------------------------------------------------------
     * We have a "real" datum name.  Try to look it up and get the
     * parameters.  If we don't find it just use WGS84.
     *----------------------------------------------------------------*/
    else 
    {
        int     i;

        for( i = 0; asDatumInfoList[i].nMapInfoDatumID != -1; i++ )
        {
            if( EQUAL(pszWKTDatum,asDatumInfoList[i].pszOGCDatumName) )
            {
                nDatum = asDatumInfoList[i].nMapInfoDatumID;
                break;
            }
        }

        if( nDatum == 0 )
            nDatum = 104; /* WGS84 */
    }

    /*-----------------------------------------------------------------
     * Translate the units
     *----------------------------------------------------------------*/
    const char  *pszMIFUnits = "m";

    if( nProjection == 1 )
        pszMIFUnits = NULL;
    else if( pszLinearUnits == NULL )
        pszMIFUnits = "m";
    else if( dfLinearConv == 1000.0 )
        pszMIFUnits = "km";
    else if( dfLinearConv == 0.0254 || EQUAL(pszLinearUnits,"Inch")
             || EQUAL(pszLinearUnits,"IINCH"))
        pszMIFUnits = "in";
    else if( dfLinearConv == atof(SRS_UL_FOOT_CONV)
             || EQUAL(pszLinearUnits,SRS_UL_FOOT) )
        pszMIFUnits = "ft";
    else if( EQUAL(pszLinearUnits,"YARD") || EQUAL(pszLinearUnits,"IYARD") 
             || dfLinearConv == 0.9144 )
        pszMIFUnits = "yd";
    else if( dfLinearConv == 0.001 )
        pszMIFUnits = "mm";
    else if( dfLinearConv == 0.01 )
        pszMIFUnits = "cm";
    else if( dfLinearConv == 1.0 )
        pszMIFUnits = "m";
    else if( dfLinearConv == atof(SRS_UL_US_FOOT_CONV)
             || EQUAL(pszLinearUnits,SRS_UL_US_FOOT) )
        pszMIFUnits = "survey ft";
    else if( EQUAL(pszLinearUnits,SRS_UL_NAUTICAL_MILE) )
        pszMIFUnits = "nmi";
    else if( EQUAL(pszLinearUnits,SRS_UL_LINK) 
             || EQUAL(pszLinearUnits,"GUNTERLINK") )
        pszMIFUnits = "li";
    else if( EQUAL(pszLinearUnits,SRS_UL_CHAIN) 
             || EQUAL(pszLinearUnits,"GUNTERCHAIN") )
        pszMIFUnits = "ch";
    else if( EQUAL(pszLinearUnits,SRS_UL_ROD) )
        pszMIFUnits = "rd";
    else if( EQUAL(pszLinearUnits,"Mile") 
             || EQUAL(pszLinearUnits,"IMILE") )
        pszMIFUnits = "mi";
    
/* -------------------------------------------------------------------- */
/*      Build coordinate system definition.                             */
/* -------------------------------------------------------------------- */
    char        szCoordSys[256];

    if( nProjection != 0 )
    {
        sprintf( szCoordSys,
                 "Earth Projection %d",
                 nProjection );

    }
    else
        sprintf( szCoordSys,
                 "NonEarth Units" );

/* -------------------------------------------------------------------- */
/*      Append Datum                                                    */
/* -------------------------------------------------------------------- */
    if( nProjection != 0 )
    {
        sprintf( szCoordSys + strlen(szCoordSys),
                 ", %d",
                 nDatum );

        if( nDatum == 999 || nDatum == 9999 )
        {
            sprintf( szCoordSys + strlen(szCoordSys),
                     ", %d, %.15g, %.15g, %.15g",
                     nEllipsoid,
                     adfDatumParm[0], adfDatumParm[1], adfDatumParm[2] );
        }
        
        if( nDatum == 9999 )
        {
            sprintf( szCoordSys + strlen(szCoordSys),
                     ", %.15g, %.15g, %.15g, %.15g, %.15g",
                     adfDatumParm[3], adfDatumParm[4], adfDatumParm[5],
                     adfDatumParm[6], adfDatumParm[7] );
        }
    }

/* -------------------------------------------------------------------- */
/*      Append units.                                                   */
/* -------------------------------------------------------------------- */
    if( nProjection != 1 && pszMIFUnits != NULL )
    {
        if( nProjection != 0 )
            strcat( szCoordSys, "," );
        
        sprintf( szCoordSys + strlen(szCoordSys),
                 " \"%s\"",
                 pszMIFUnits );
    }

/* -------------------------------------------------------------------- */
/*      Append Projection Parms.                                        */
/* -------------------------------------------------------------------- */
    for( int iParm = 0; iParm < nParmCount; iParm++ )
        sprintf( szCoordSys + strlen(szCoordSys),
                 ", %.15g",
                 parms[iParm] );

/* -------------------------------------------------------------------- */
/*      Report on translation                                           */
/* -------------------------------------------------------------------- */
    char        *pszWKT = NULL;

    poSR->exportToWkt( &pszWKT );
    if( pszWKT != NULL )
    {
        CPLDebug( "MITAB",
                  "This WKT Projection:\n%s\n\ntranslates to:\n%s\n",
                  pszWKT, szCoordSys );
        CPLFree( pszWKT );
    }

    return( CPLStrdup( szCoordSys ) );
}


/************************************************************************/
/*                      MITABExtractCoordSysBounds                      */
/*                                                                      */
/* Return TRUE if MIF coordsys string contains a BOUNDS parameter and   */
/* Set x/y min/max values.                                              */
/************************************************************************/

GBool MITABExtractCoordSysBounds( const char * pszCoordSys,
                                  double &dXMin, double &dYMin,
                                  double &dXMax, double &dYMax )

{
    char        **papszFields;

    if( pszCoordSys == NULL )
        return FALSE;
    
    papszFields = CSLTokenizeStringComplex( pszCoordSys, " ,()", TRUE, FALSE );

    int iBounds = CSLFindString( papszFields, "Bounds" );

    if (iBounds >= 0 && iBounds + 4 < CSLCount(papszFields))
    {
        dXMin = atof(papszFields[++iBounds]);
        dYMin = atof(papszFields[++iBounds]);
        dXMax = atof(papszFields[++iBounds]);
        dYMax = atof(papszFields[++iBounds]);
        CSLDestroy( papszFields );
        return TRUE;
    }

    CSLDestroy( papszFields );
    return FALSE;
}


/**********************************************************************
 *                     MITABCoordSys2TABProjInfo()
 *
 * Convert a MIF COORDSYS string into a TABProjInfo structure.
 *
 * Note that it would have been possible to achieve the same by calling
 * TABFile::SetSpatialRef( MITABCoordSys2SpatialRef() ) but this would 
 * involve lots of manipulations for cases where only a simple conversion
 * is required.
 *
 * Returns 0 on success, -1 on error.
 **********************************************************************/
int MITABCoordSys2TABProjInfo(const char * pszCoordSys, TABProjInfo *psProj)

{
    char        **papszFields;

    // Set all fields to zero, equivalent of NonEarth Units "mi"
    memset(psProj, 0, sizeof(TABProjInfo));

    if( pszCoordSys == NULL )
        return -1;
    
    /*-----------------------------------------------------------------
     * Parse the passed string into words.
     *----------------------------------------------------------------*/
    while(*pszCoordSys == ' ') pszCoordSys++;  // Eat leading spaces
    if( EQUALN(pszCoordSys,"CoordSys",8) )
        pszCoordSys += 9;
    
    papszFields = CSLTokenizeStringComplex( pszCoordSys, " ,", TRUE, FALSE );

    /*-----------------------------------------------------------------
     * Clip off Bounds information.
     *----------------------------------------------------------------*/
    int         iBounds = CSLFindString( papszFields, "Bounds" );

    while( iBounds != -1 && papszFields[iBounds] != NULL )
    {
        CPLFree( papszFields[iBounds] );
        papszFields[iBounds] = NULL;
        iBounds++;
    }

    /*-----------------------------------------------------------------
     * Fetch the projection.
     *----------------------------------------------------------------*/
    char        **papszNextField;

    if( CSLCount( papszFields ) >= 3
        && EQUAL(papszFields[0],"Earth")
        && EQUAL(papszFields[1],"Projection") )
    {
        psProj->nProjId = atoi(papszFields[2]);
        papszNextField = papszFields + 3;
    }
    else if (CSLCount( papszFields ) >= 2
             && EQUAL(papszFields[0],"NonEarth") )
    {
        // NonEarth Units "..." Bounds (x, y) (x, y)
        psProj->nProjId = 0;
        papszNextField = papszFields + 2;

        if( papszNextField[0] != NULL && EQUAL(papszNextField[0],"Units") )
            papszNextField++;
    }
    else
    {
        // Invalid projection string ???
        if (CSLCount(papszFields) > 0)
            CPLError(CE_Warning, CPLE_IllegalArg,
                     "Failed parsing CoordSys: '%s'", pszCoordSys);
        CSLDestroy(papszFields);
        return -1;
    }

    /*-----------------------------------------------------------------
     * Fetch the datum information.
     *----------------------------------------------------------------*/
    int         nDatum = 0;

    if( psProj->nProjId != 0 && CSLCount(papszNextField) > 0 )
    {
        nDatum = atoi(papszNextField[0]);
        papszNextField++;
    }

    if( (nDatum == 999 || nDatum == 9999)
        && CSLCount(papszNextField) >= 4 )
    {
        psProj->nEllipsoidId = atoi(papszFields[0]);
        psProj->dDatumShiftX = atof(papszNextField[1]);
        psProj->dDatumShiftY = atof(papszNextField[2]);
        psProj->dDatumShiftZ = atof(papszNextField[3]);
        papszNextField += 4;

        if( nDatum == 9999
            && CSLCount(papszNextField) >= 5 )
        {
            psProj->adDatumParams[0] = atof(papszNextField[0]);
            psProj->adDatumParams[1] = atof(papszNextField[1]);
            psProj->adDatumParams[2] = atof(papszNextField[2]);
            psProj->adDatumParams[3] = atof(papszNextField[3]);
            psProj->adDatumParams[4] = atof(papszNextField[4]);
            papszNextField += 5;
        }
    }
    else if (nDatum != 999 && nDatum != 9999)
    {
    /*-----------------------------------------------------------------
     * Find the datum, and collect it's parameters if possible.
     *----------------------------------------------------------------*/
        int         iDatum;
        MapInfoDatumInfo *psDatumInfo = NULL;
        
        for(iDatum=0; asDatumInfoList[iDatum].nMapInfoDatumID != -1; iDatum++)
        {
            if( asDatumInfoList[iDatum].nMapInfoDatumID == nDatum )
            {
                psDatumInfo = asDatumInfoList + iDatum;
                break;
            }
        }

        if( asDatumInfoList[iDatum].nMapInfoDatumID == -1
            && nDatum != 999 && nDatum != 9999 )
        {
            /* use WGS84 */
            psDatumInfo = asDatumInfoList + 0;
        }

        if( psDatumInfo != NULL )
        {
            psProj->nEllipsoidId = psDatumInfo->nEllipsoid;
            psProj->nDatumId = psDatumInfo->nMapInfoDatumID;
            psProj->dDatumShiftX = psDatumInfo->dfShiftX;
            psProj->dDatumShiftY = psDatumInfo->dfShiftY;
            psProj->dDatumShiftZ = psDatumInfo->dfShiftZ;
            psProj->adDatumParams[0] = psDatumInfo->dfDatumParm0;
            psProj->adDatumParams[1] = psDatumInfo->dfDatumParm1;
            psProj->adDatumParams[2] = psDatumInfo->dfDatumParm2;
            psProj->adDatumParams[3] = psDatumInfo->dfDatumParm3;
            psProj->adDatumParams[4] = psDatumInfo->dfDatumParm4;
        }
    }    

    /*-----------------------------------------------------------------
     * Fetch the units string.
     *----------------------------------------------------------------*/
    if( CSLCount(papszNextField) > 0 )
    {
        psProj->nUnitsId = TABUnitIdFromString(papszNextField[0]);
        papszNextField++;
    }

    /*-----------------------------------------------------------------
     * Finally the projection parameters.
     *----------------------------------------------------------------*/
    for(int iParam=0; iParam < 6 && CSLCount(papszNextField) > 0; iParam++)
    {
        psProj->adProjParams[iParam] = atof(papszNextField[0]);
        papszNextField++;         
    }

    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区福利 | 欧美日韩一区不卡| 日韩视频在线永久播放| 久久久亚洲午夜电影| 亚洲成人第一页| www.色精品| 久久综合九色综合欧美亚洲| 亚洲成人黄色影院| 91浏览器打开| 成人欧美一区二区三区视频网页| 麻豆91精品视频| 欧美中文字幕不卡| 亚洲人成网站在线| www.日韩大片| 国产精品沙发午睡系列990531| 久久99国产精品尤物| 日韩欧美中文字幕一区| 亚洲成人免费观看| 欧美吻胸吃奶大尺度电影| 国产精品二区一区二区aⅴ污介绍| 激情成人综合网| 欧美一区午夜精品| 日韩在线一区二区| 色综合久久中文字幕综合网| 一区二区三区视频在线观看| 国产大陆a不卡| 欧美精品一区二区三区四区| 石原莉奈一区二区三区在线观看| 在线精品视频一区二区三四 | 欧美日韩国产高清一区二区三区 | 一区二区三区欧美日| 99久久伊人久久99| 中文字幕亚洲在| 一本大道久久a久久精品综合| 综合久久久久久| 91色|porny| 夜夜操天天操亚洲| 欧美日韩亚洲综合在线 | 最近日韩中文字幕| 色先锋aa成人| 亚洲成a人片在线观看中文| 欧美视频自拍偷拍| 日精品一区二区三区| 精品久久人人做人人爽| 国产不卡视频一区| 国产精品久久久久影视| 91在线视频播放地址| 亚洲午夜久久久久久久久电影网| 精品视频1区2区| 美国十次综合导航| 久久综合色综合88| 99re这里都是精品| 日韩二区在线观看| 国产亚洲精品aa| 日本精品裸体写真集在线观看| 亚洲一区二区五区| 欧美大黄免费观看| 97久久精品人人爽人人爽蜜臀 | 国产真实乱偷精品视频免| 国产亚洲欧美日韩在线一区| 99久久精品国产网站| 日本不卡一区二区三区高清视频| 2020国产精品自拍| 欧亚一区二区三区| 国产一区 二区| 亚洲综合免费观看高清在线观看| 日韩一区二区在线播放| caoporm超碰国产精品| 日本特黄久久久高潮| 国产精品九色蝌蚪自拍| 日韩午夜激情视频| 一本一本大道香蕉久在线精品| 男男视频亚洲欧美| 亚洲精品国产一区二区精华液| 欧美成人国产一区二区| 91在线视频18| 国产经典欧美精品| 日韩av不卡一区二区| 亚洲男人的天堂一区二区| 精品成人私密视频| 欧美日韩成人综合| 91性感美女视频| 国产99久久久精品| 日韩电影免费在线看| 亚洲特级片在线| 国产日韩欧美精品一区| 欧美一区二区三区成人| 色乱码一区二区三区88| 国产成人av资源| 久久成人综合网| 日韩中文字幕区一区有砖一区| 日韩理论电影院| 中文在线一区二区| 2014亚洲片线观看视频免费| 制服丝袜中文字幕一区| 日本高清不卡在线观看| eeuss影院一区二区三区| 国产盗摄一区二区三区| 国产综合久久久久影院| 日本亚洲免费观看| 日韩精品91亚洲二区在线观看| 亚洲欧美一区二区三区国产精品 | 色综合久久九月婷婷色综合| 国产99久久久国产精品免费看| 激情六月婷婷综合| 久久国内精品自在自线400部| 喷白浆一区二区| 日韩黄色在线观看| 午夜av电影一区| 亚洲成人免费影院| 日韩电影免费在线看| 日韩av一区二| 久久69国产一区二区蜜臀| 日韩av在线播放中文字幕| 日本三级韩国三级欧美三级| 日韩成人av影视| 看电视剧不卡顿的网站| 理论电影国产精品| 国产河南妇女毛片精品久久久| 国产九色精品成人porny | 国产精品久久久久久久裸模| 国产日韩欧美精品一区| 国产精品天干天干在观线| 国产亚洲一区二区三区四区| 亚洲国产成人自拍| 亚洲欧美另类综合偷拍| 亚洲一区二区精品视频| 日韩在线播放一区二区| 国产一区在线精品| av在线这里只有精品| 欧美中文字幕一二三区视频| 欧美精品日韩综合在线| 2023国产精华国产精品| 国产精品乱码人人做人人爱| 亚洲综合色在线| 久久国产成人午夜av影院| 成人免费看黄yyy456| 91福利在线免费观看| 91精品国产一区二区三区| 精品国产91洋老外米糕| 国产精品久久久久一区二区三区共| 亚洲美女视频一区| 日韩成人免费看| 成人涩涩免费视频| 欧美在线短视频| 精品国产三级a在线观看| 国产精品久久久久久久岛一牛影视| 亚洲精品久久久蜜桃| 久久精品久久久精品美女| 成人av在线影院| 欧美男同性恋视频网站| 久久久精品tv| 亚洲第一久久影院| 懂色av一区二区在线播放| 欧美日韩成人综合| 国产精品三级视频| 蜜臀av国产精品久久久久| 91麻豆自制传媒国产之光| 日韩免费视频一区二区| 亚洲免费伊人电影| 国内精品免费**视频| 欧美优质美女网站| 久久精品综合网| 日韩电影在线免费| 色天使久久综合网天天| 久久综合九色欧美综合狠狠| 亚洲成人av在线电影| 成人激情av网| 精品国产污污免费网站入口| 亚洲v精品v日韩v欧美v专区| 99国产一区二区三精品乱码| 精品成人免费观看| 亚洲大片精品永久免费| 成人avav在线| 国产欧美在线观看一区| 美女爽到高潮91| 91麻豆精品国产91久久久久| 一区二区三区在线不卡| 成人sese在线| 久久久91精品国产一区二区三区| 热久久久久久久| 欧美日韩午夜在线视频| 亚洲精品久久嫩草网站秘色| 成人激情电影免费在线观看| 国产婷婷精品av在线| 蜜臀a∨国产成人精品| 欧美日本一区二区在线观看| 亚洲人成网站精品片在线观看| 成人激情av网| 中文字幕一区二区三区乱码在线| 国产一区二区剧情av在线| 日韩一级视频免费观看在线| 日本午夜一区二区| 欧美一卡二卡在线观看| 日韩电影免费一区| 日韩一级在线观看| 精品一区二区三区免费观看| 日韩丝袜美女视频| 国产精品综合久久| 久久久不卡影院|