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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ogrspatialreference.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
 * input is known to be in a particular format. 
 *
 * This method does the same thing as the OSRSetFromUserInput() function.
 * 
 * @param pszDefinition text definition to try to deduce SRS from.
 *
 * @return OGRERR_NONE on success, or an error code if the name isn't
 * recognised, the definition is corrupt, or an EPSG value can't be 
 * successfully looked up.
 */ 

OGRErr OGRSpatialReference::SetFromUserInput( const char * pszDefinition )

{
    int     bESRI = FALSE;
    OGRErr  err;

    if( EQUALN(pszDefinition,"ESRI::",6) )
    {
        bESRI = TRUE;
        pszDefinition += 6;
    }

/* -------------------------------------------------------------------- */
/*      Is it a recognised syntax?                                      */
/* -------------------------------------------------------------------- */
    if( EQUALN(pszDefinition,"PROJCS",6)
        || EQUALN(pszDefinition,"GEOGCS",6)
        || EQUALN(pszDefinition,"LOCAL_CS",8) )
    {
        err = importFromWkt( (char **) &pszDefinition );
        if( err == OGRERR_NONE && bESRI )
            err = morphFromESRI();

        return err;
    }

    if( EQUALN(pszDefinition,"EPSG:",5) )
        return importFromEPSG( atoi(pszDefinition+5) );

    if( EQUALN(pszDefinition,"urn:ogc:def:crs:",16) 
        || EQUALN(pszDefinition,"urn:x-ogc:def:crs:",18) )
        return importFromURN( pszDefinition );

    if( EQUALN(pszDefinition,"AUTO:",5) )
        return importFromWMSAUTO( pszDefinition );

    if( EQUALN(pszDefinition,"DICT:",5) 
        && strstr(pszDefinition,",") )
    {
        char *pszFile = CPLStrdup(pszDefinition+5);
        char *pszCode = strstr(pszFile,",") + 1;
        
        pszCode[-1] = '\0';

        err = importFromDict( pszFile, pszCode );
        CPLFree( pszFile );

        if( err == OGRERR_NONE && bESRI )
            err = morphFromESRI();

        return err;
    }

    if( EQUAL(pszDefinition,"NAD27") 
        || EQUAL(pszDefinition,"NAD83") 
        || EQUAL(pszDefinition,"WGS84") 
        || EQUAL(pszDefinition,"WGS72") )
    {
        Clear();
        return SetWellKnownGeogCS( pszDefinition );
    }

    if( strstr(pszDefinition,"+proj") != NULL 
             || strstr(pszDefinition,"+init") != NULL )
        return importFromProj4( pszDefinition );

/* -------------------------------------------------------------------- */
/*      Try to open it as a file.                                       */
/* -------------------------------------------------------------------- */
    FILE        *fp;
    int         nBufMax = 100000;
    char        *pszBufPtr, *pszBuffer;
    int         nBytes;

    fp = VSIFOpen( pszDefinition, "rt" );
    if( fp == NULL )
        return OGRERR_CORRUPT_DATA;

    pszBuffer = (char *) CPLMalloc(nBufMax);
    nBytes = VSIFRead( pszBuffer, 1, nBufMax-1, fp );
    VSIFClose( fp );

    if( nBytes == nBufMax-1 )
    {
        CPLDebug( "OGR", 
                  "OGRSpatialReference::SetFromUserInput(%s), opened file\n"
                  "but it is to large for our generous buffer.  Is it really\n"
                  "just a WKT definition?" );
        CPLFree( pszBuffer );
        return OGRERR_FAILURE;
    }

    pszBuffer[nBytes] = '\0';

    pszBufPtr = pszBuffer;
    while( pszBufPtr[0] == ' ' || pszBufPtr[0] == '\n' )
        pszBufPtr++;

    if( pszBufPtr[0] == '<' )
        err = importFromXML( pszBufPtr );
    else if( strstr(pszBuffer,"+proj") != NULL 
             || strstr(pszBuffer,"+init") != NULL )
        err = importFromProj4( pszBufPtr );
    else
    {
        err = importFromWkt( &pszBufPtr );
        if( err == OGRERR_NONE && bESRI )
            err = morphFromESRI();
    }

    CPLFree( pszBuffer );

    return err;
}

/************************************************************************/
/*                        OSRSetFromUserInput()                         */
/************************************************************************/

OGRErr CPL_STDCALL OSRSetFromUserInput( OGRSpatialReferenceH hSRS, 
                                        const char *pszDef )

{
    return ((OGRSpatialReference *) hSRS)->SetFromUserInput( pszDef );
}

/************************************************************************/
/*                           importFromURN()                            */
/*                                                                      */
/*      See OGC recommendation paper 06-023r1 or later for details.     */
/************************************************************************/

/**
 * Initialize from OGC URN. 
 *
 * Initializes this spatial reference from a coordinate system defined
 * by an OGC URN prefixed with "urn:ogc:def:crs:" per recommendation 
 * paper 06-023r1.  Currently EPSG and OGC authority values are supported, 
 * including OGC auto codes, but not including CRS1 or CRS88 (NAVD88). 
 *
 * This method is also support through SetFromUserInput() which can
 * normally be used for URNs.
 * 
 * @param pszURN the urn string. 
 *
 * @return OGRERR_NONE on success or an error code.
 */

OGRErr OGRSpatialReference::importFromURN( const char *pszURN )

{
    const char *pszCur = pszURN + 16;

    if( EQUALN(pszURN,"urn:ogc:def:crs:",16) )
        pszCur = pszURN + 16;
    else if( EQUALN(pszURN,"urn:x-ogc:def:crs:",18) )
        pszCur = pszURN + 18;
    else
    {
        CPLError( CE_Failure, CPLE_AppDefined, 
                  "URN %s not a supported format.", pszURN );
        return OGRERR_FAILURE;
    }

/* -------------------------------------------------------------------- */
/*      Find code (ignoring version) out of string like:                */
/*                                                                      */
/*      authority:version:code                                          */
/* -------------------------------------------------------------------- */
    const char *pszAuthority = pszCur;

    // skip authority
    while( *pszCur != ':' && *pszCur )
        pszCur++;
    if( *pszCur == ':' )
        pszCur++;

    // skip version
    while( *pszCur != ':' && *pszCur )
        pszCur++;
    if( *pszCur == ':' )
        pszCur++;

    const char *pszCode = pszCur;

/* -------------------------------------------------------------------- */
/*      Is this an EPSG code?                                           */
/* -------------------------------------------------------------------- */
    if( EQUALN(pszAuthority,"EPSG:",5) )
        return importFromEPSG( atoi(pszCode) );

/* -------------------------------------------------------------------- */
/*      Is this an OGC code?                                            */
/* -------------------------------------------------------------------- */
    if( !EQUALN(pszAuthority,"OGC:",4) )
    {
        CPLError( CE_Failure, CPLE_AppDefined, 
                  "URN %s has unrecognised authority.", 
                  pszURN );
        return OGRERR_FAILURE;
    }

    if( EQUALN(pszCode,"CRS84",5) )
        return SetWellKnownGeogCS( pszCode );
    else if( EQUALN(pszCode,"CRS83",5) )
        return SetWellKnownGeogCS( pszCode );
    else if( EQUALN(pszCode,"CRS27",5) )
        return SetWellKnownGeogCS( pszCode );

/* -------------------------------------------------------------------- */
/*      Handle auto codes.  We need to convert from format              */
/*      AUTO42001:99:8888 to format AUTO:42001,99,8888.                 */
/* -------------------------------------------------------------------- */
    else if( EQUALN(pszCode,"AUTO",4) )
    {
        char szWMSAuto[100];
        int i;

        if( strlen(pszCode) > sizeof(szWMSAuto)-2 )
            return OGRERR_FAILURE;

        strcpy( szWMSAuto, "AUTO:" );
        strcpy( szWMSAuto + 5, pszCode + 4 );
        for( i = 5; szWMSAuto[i] != '\0'; i++ )
        {
            if( szWMSAuto[i] == ':' )
                szWMSAuto[i] = ',';
        }

        return importFromWMSAUTO( szWMSAuto );
    }

/* -------------------------------------------------------------------- */
/*      Not a recognise OGC item.                                       */
/* -------------------------------------------------------------------- */
    CPLError( CE_Failure, CPLE_AppDefined, 
              "URN %s value not supported.", 
              pszURN );

    return OGRERR_FAILURE;
}

/************************************************************************/
/*                         importFromWMSAUTO()                          */
/*                                                                      */
/*      Note that the WMS 1.3 specification does not include the        */
/*      units code, while apparently earlier specs do.  We try to       */
/*      guess around this.                                              */
/************************************************************************/

OGRErr OGRSpatialReference::importFromWMSAUTO( const char * pszDefinition )

{
    char **papszTokens;
    int nProjId, nUnitsId;
    double dfRefLong, dfRefLat = 0.0;
    
/* -------------------------------------------------------------------- */
/*      Tokenize                                                        */
/* -------------------------------------------------------------------- */
    if( EQUALN(pszDefinition,"AUTO:",5) )
        pszDefinition += 5;

    papszTokens = CSLTokenizeStringComplex( pszDefinition, ",", FALSE, TRUE );

    if( CSLCount(papszTokens) == 4 )
    {
        nProjId = atoi(papszTokens[0]);
        nUnitsId = atoi(papszTokens[1]);
        dfRefLong = atof(papszTokens[2]);
        dfRefLat = atof(papszTokens[3]);
    }
    else if( CSLCount(papszTokens) == 3 && atoi(papszTokens[0]) == 42005 )
    {
        nProjId = atoi(papszTokens[0]);
        nUnitsId = atoi(papszTokens[1]);
        dfRefLong = atof(papszTokens[2]);
        dfRefLat = 0.0;
    }
    else if( CSLCount(papszTokens) == 3 )
    {
        nProjId = atoi(papszTokens[0]);
        nUnitsId = 9001;
        dfRefLong = atof(papszTokens[1]);
        dfRefLat = atof(papszTokens[2]);

    }
    else if( CSLCount(papszTokens) == 2 && atoi(papszTokens[0]) == 42005 ) 
    {
        nProjId = atoi(papszTokens[0]);
        nUnitsId = 9001;
        dfRefLong = atof(papszTokens[1]);
    }
    else
    {
        CSLDestroy( papszTokens );
        CPLError( CE_Failure, CPLE_AppDefined, 
                  "AUTO projection has wrong number of arguments, expected\n"
                  "AUTO:proj_id,units_id,ref_long,ref_lat or"
                  "AUTO:proj_id,ref_long,ref_lat" );
        return OGRERR_FAILURE;
    }

    CSLDestroy( papszTokens );

/* -------------------------------------------------------------------- */
/*      Build coordsys.                                                 */
/* -------------------------------------------------------------------- */
    Clear();

    switch( nProjId )
    {
      case 42001: // Auto UTM
        SetUTM( (int) floor( (dfRefLong + 180.0) / 6.0 ) + 1, 
                dfRefLat >= 0.0 );
        break;

      case 42002: // Auto TM (strangely very UTM-like).
        SetTM( 0, dfRefLong, 0.9996, 
               500000.0, (dfRefLat >= 0.0) ? 0.0 : 10000000.0 );
        break;

      case 42003: // Auto Orthographic.
        SetOrthographic( dfRefLat, dfRefLong, 0.0, 0.0 );
        break;

      case 42004: // Auto Equirectangular
        SetEquirectangular( dfRefLat, dfRefLong, 0.0, 0.0 );
        break;

      case 42005:
        SetMollweide( dfRefLong, 0.0, 0.0 );
        break;

      default:
        CPLError( CE_Failure, CPLE_AppDefined,
                  "Unsupported projection id in importFromWMSAUTO(): %d", 
                  nProjId );
        return OGRERR_FAILURE;
    }

/* -------------------------------------------------------------------- */
/*      Set units.                                                      */
/* -------------------------------------------------------------------- */

    switch( nUnitsId )
    {
      case 9001:
        SetLinearUnits( SRS_UL_METER, 1.0 );
        break;

      case 9002

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色偷偷成人一区二区三区91| 91久久奴性调教| 97精品超碰一区二区三区| 成人午夜激情片| 日韩一级高清毛片| 中文字幕不卡在线| 日韩一区欧美一区| 久久国产精品色婷婷| 91美女片黄在线观看| 欧美主播一区二区三区| 日本一区二区高清| 亚洲成人777| 国产精品一区二区三区99| 欧美日韩精品电影| 中文字幕欧美国产| 日韩黄色片在线观看| 成人丝袜视频网| 亚洲精品一区二区在线观看| 日韩av一区二区三区四区| aaa亚洲精品一二三区| 日韩精品一区二区三区在线观看| 一区二区三区不卡视频在线观看| 国产麻豆成人传媒免费观看| 欧美日韩高清一区二区不卡| 日本一区二区三区久久久久久久久不 | 日韩和欧美一区二区| 国产毛片精品国产一区二区三区| 欧美色图片你懂的| 一区二区高清免费观看影视大全| 国产91综合一区在线观看| 日韩一区二区麻豆国产| 免费av成人在线| 欧美日韩一区不卡| 又紧又大又爽精品一区二区| 91丨porny丨国产| 国产精品久久久爽爽爽麻豆色哟哟| 香蕉影视欧美成人| 欧美一级午夜免费电影| 亚洲综合999| 在线看国产日韩| 亚洲综合另类小说| 91官网在线免费观看| 亚洲一二三四区| 在线精品亚洲一区二区不卡| 舔着乳尖日韩一区| 精品久久人人做人人爱| 精品一区二区综合| 精品成人一区二区三区四区| 国产精品自拍av| 久久久www成人免费无遮挡大片| 五月婷婷激情综合网| 欧美一区二区三区视频免费| 日产国产欧美视频一区精品| 91精品麻豆日日躁夜夜躁| 精品综合久久久久久8888| 精品国产免费视频| 黄色精品一二区| 中文字幕一区二区三区四区不卡| 99久久99久久久精品齐齐| 欧美日韩五月天| 韩国av一区二区| 国产精品网曝门| 成人在线一区二区三区| 亚洲日本在线看| 欧美人与禽zozo性伦| 国产精品一区二区你懂的| 亚洲欧洲av一区二区三区久久| 99久久精品免费精品国产| 日韩和欧美一区二区| 久久久夜色精品亚洲| 91亚洲国产成人精品一区二区三| 日韩主播视频在线| 精品国产乱码久久久久久久久 | 亚洲色图.com| 国产精品久久久久一区| 亚洲人成精品久久久久| 日韩国产高清在线| 国产精品羞羞答答xxdd| 在线播放中文字幕一区| 国产三级精品视频| 欧美三级中文字幕| 五月天欧美精品| 久久综合视频网| 91日韩一区二区三区| 中文字幕一区二区三区四区不卡 | 日韩欧美久久一区| 国产精品综合久久| 亚洲成av人片一区二区三区 | 欧美三级视频在线| 久久丁香综合五月国产三级网站| 一区av在线播放| 精品久久久久久久久久久久久久久久久 | 日韩在线卡一卡二| 国产精品女上位| 日韩一区二区免费在线电影| 91视频一区二区三区| 免费在线观看一区| 亚洲天堂a在线| 久久综合九色欧美综合狠狠| 色婷婷精品久久二区二区蜜臀av| 经典三级视频一区| 天堂蜜桃一区二区三区| 日本中文字幕一区二区视频| 国产欧美日韩精品一区| 日韩欧美一二区| 欧美精品亚洲二区| 91网上在线视频| 国产美女精品人人做人人爽| 久久99精品久久久| 蜜臀精品久久久久久蜜臀| 亚洲免费观看在线视频| 亚洲欧美国产77777| 国产日本欧美一区二区| 日韩精品一区二区三区四区 | 国产精品白丝在线| 欧美极品aⅴ影院| wwwwxxxxx欧美| 精品入口麻豆88视频| 欧美va亚洲va国产综合| 在线不卡的av| 日本韩国精品一区二区在线观看| 色呦呦国产精品| 99久久免费精品| 久久99精品一区二区三区三区| 自拍偷拍国产精品| 一二三区精品视频| 亚洲制服丝袜一区| 日本视频免费一区| 日韩av网站免费在线| 日日噜噜夜夜狠狠视频欧美人| 日本欧美一区二区| 日本午夜一本久久久综合| 性做久久久久久久久| 久久激五月天综合精品| 国产精品正在播放| 亚洲精品乱码久久久久久黑人| 国产精品三级久久久久三级| 欧美激情艳妇裸体舞| 538在线一区二区精品国产| 91麻豆精品国产自产在线 | 日韩av电影免费观看高清完整版 | **性色生活片久久毛片| 亚洲黄色小说网站| 久久嫩草精品久久久久| 国产欧美精品日韩区二区麻豆天美 | 日韩免费福利电影在线观看| 欧美一区三区四区| 91丨porny丨国产入口| 成人免费毛片嘿嘿连载视频| a级高清视频欧美日韩| 97se亚洲国产综合自在线观| 欧美网站大全在线观看| 欧洲国内综合视频| 欧美一级欧美三级| 久久精品亚洲麻豆av一区二区 | 激情都市一区二区| 成人毛片老司机大片| 欧美色成人综合| 精品免费视频一区二区| 中文字幕中文字幕在线一区| 亚洲国产毛片aaaaa无费看| 男人的j进女人的j一区| 99re在线精品| 3d成人h动漫网站入口| 久久亚洲精华国产精华液| 国产精品人成在线观看免费| 亚洲精品成人精品456| 久久精品国产精品亚洲红杏| 不卡一卡二卡三乱码免费网站| 欧美一a一片一级一片| 日本一区二区免费在线观看视频| 亚洲精品成人在线| 亚洲v日本v欧美v久久精品| 成人午夜精品一区二区三区| 欧美日韩国产另类不卡| 99re热视频这里只精品| 久久欧美一区二区| 婷婷成人综合网| 在线观看www91| 国产亚洲一本大道中文在线| 一区二区三区四区亚洲| 成a人片国产精品| 26uuu色噜噜精品一区二区| 一区二区三区在线观看欧美| 成人在线视频一区| 精品国产乱码久久久久久久| 日韩高清不卡一区二区三区| 色婷婷久久综合| 国产精品免费视频观看| 国产精品一区免费视频| 7777精品伊人久久久大香线蕉完整版 | 国产欧美一二三区| 精品一区二区三区免费毛片爱| 欧美视频一区二区| 一二三区精品视频| 91国偷自产一区二区三区观看| 亚洲欧美日韩综合aⅴ视频| 91色.com| 亚洲一区二区三区四区五区黄| 91国内精品野花午夜精品|