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

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

?? ogrmysqltablelayer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************** * $Id: ogrmysqltablelayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Implements OGRMySQLTableLayer class. * Author:   Frank Warmerdam, warmerdam@pobox.com * Author:   Howard Butler, hobu@hobu.net * ****************************************************************************** * Copyright (c) 2004, Frank Warmerdam <warmerdam@pobox.com> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************/#include "cpl_conv.h"#include "cpl_string.h"#include "ogr_mysql.h"CPL_CVSID("$Id: ogrmysqltablelayer.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                         OGRMySQLTableLayer()                         *//************************************************************************/OGRMySQLTableLayer::OGRMySQLTableLayer( OGRMySQLDataSource *poDSIn,                                   const char * pszTableName,                                  int bUpdate, int nSRSIdIn ){    poDS = poDSIn;    pszQuery = NULL;    pszWHERE = CPLStrdup( "" );    pszQueryStatement = NULL;        bUpdateAccess = bUpdate;    iNextShapeId = 0;    nSRSId = nSRSIdIn;    poFeatureDefn = NULL;    bLaunderColumnNames = TRUE;}/************************************************************************//*                        ~OGRMySQLTableLayer()                         *//************************************************************************/OGRMySQLTableLayer::~OGRMySQLTableLayer(){    CPLFree( pszQuery );    CPLFree( pszWHERE );}/************************************************************************//*                        Initialize()                                  *//*                                                                      *//*      Make sure we only do a ResetReading once we really have a       *//*      FieldDefn.  Otherwise, we'll segfault.  After you construct     *//*      the MySQLTableLayer, make sure to do pLayer->Initialize()       *//************************************************************************/OGRErr  OGRMySQLTableLayer::Initialize(const char * pszTableName){    poFeatureDefn = ReadTableDefinition( pszTableName );       if (poFeatureDefn)    {        ResetReading();        return OGRERR_NONE;    }    else    {        return OGRERR_FAILURE;    }}/************************************************************************//*                        ReadTableDefinition()                         *//*                                                                      *//*      Build a schema from the named table.  Done by querying the      *//*      catalog.                                                        *//************************************************************************/OGRFeatureDefn *OGRMySQLTableLayer::ReadTableDefinition( const char *pszTable ){    MYSQL_RES    *hResult;    char         szCommand[1024];    /* -------------------------------------------------------------------- *//*      Fire off commands to get back the schema of the table.          *//* -------------------------------------------------------------------- */    sprintf( szCommand, "DESCRIBE %s", pszTable );    pszGeomColumnTable = CPLStrdup(pszTable);    if( mysql_query( poDS->GetConn(), szCommand ) )    {        poDS->ReportError( "DESCRIBE Failed" );        return FALSE;    }    hResult = mysql_store_result( poDS->GetConn() );    if( hResult == NULL )    {        poDS->ReportError( "mysql_store_result() failed on DESCRIBE result." );        return FALSE;    }/* -------------------------------------------------------------------- *//*      Parse the returned table information.                           *//* -------------------------------------------------------------------- */    OGRFeatureDefn *poDefn = new OGRFeatureDefn( pszTable );    char           **papszRow;    poDefn->Reference();    while( (papszRow = mysql_fetch_row( hResult )) != NULL )    {        const char      *pszType;        OGRFieldDefn    oField( papszRow[0], OFTString);        pszType = papszRow[1];        if( pszType == NULL )            continue;        if( EQUAL(pszType,"varbinary")            || (strlen(pszType)>3 && EQUAL(pszType+strlen(pszType)-4,"blob")))        {            oField.SetType( OFTBinary );        }        else if( EQUAL(pszType,"varchar")                  || EQUAL(pszType+strlen(pszType)-4,"enum")                  || EQUAL(pszType+strlen(pszType)-4,"set") )        {            oField.SetType( OFTString );        }        else if( EQUALN(pszType,"char",4)  )        {            oField.SetType( OFTString );            char ** papszTokens;            papszTokens = CSLTokenizeString2(pszType,"(),",0);                        /* width is the second */            oField.SetWidth(atoi(papszTokens[1]));            CSLDestroy( papszTokens );            oField.SetType( OFTString );        }                if(strlen(pszType)>3 && EQUAL(pszType+strlen(pszType)-4,"text"))        {            oField.SetType( OFTString );                    }        else if( EQUALN(pszType,"varchar",6)  )        {            /*                pszType is usually in the form "varchar(15)"                so we'll split it up and get the width and precision            */                        oField.SetType( OFTString );            char ** papszTokens;            papszTokens = CSLTokenizeString2(pszType,"(),",0);                        /* width is the second */            oField.SetWidth(atoi(papszTokens[1]));            CSLDestroy( papszTokens );            oField.SetType( OFTString );        }        else if( EQUALN(pszType,"int", 3) )        {            oField.SetType( OFTInteger );        }        else if( EQUALN(pszType,"tinyint", 7) )        {            oField.SetType( OFTInteger );        }        else if( EQUALN(pszType,"smallint", 8) )        {            oField.SetType( OFTInteger );        }        else if( EQUALN(pszType,"mediumint",9) )        {            oField.SetType( OFTInteger );        }        else if( EQUALN(pszType,"bigint",6) )        {            oField.SetType( OFTInteger );        }        else if( EQUALN(pszType,"decimal",7) )        {            /*                pszType is usually in the form "decimal(15,2)"                so we'll split it up and get the width and precision            */            oField.SetType( OFTReal );            char ** papszTokens;            papszTokens = CSLTokenizeString2(pszType,"(),",0);                        /* width is the second and precision is the third */            oField.SetWidth(atoi(papszTokens[1]));            oField.SetPrecision(atoi(papszTokens[2]));            CSLDestroy( papszTokens );        }        else if( EQUALN(pszType,"float", 5) )        {            oField.SetType( OFTReal );        }        else if( EQUAL(pszType,"double") )        {            oField.SetType( OFTReal );        }        else if( EQUALN(pszType,"double",6) )        {            // double can also be double(15,2)            // so we'll handle this case here after             // we check for just a regular double             // without a width and precision specified                        char ** papszTokens=NULL;            papszTokens = CSLTokenizeString2(pszType,"(),",0);            /* width is the second and precision is the third */            oField.SetWidth(atoi(papszTokens[1]));            oField.SetPrecision(atoi(papszTokens[2]));            CSLDestroy( papszTokens );              oField.SetType( OFTReal );        }        else if( EQUAL(pszType,"decimal") )        {            oField.SetType( OFTReal );        }        else if( EQUAL(pszType, "date") )        {            oField.SetType( OFTDate );        }        else if( EQUAL(pszType, "time") )        {            oField.SetType( OFTTime );        }        else if( EQUAL(pszType, "datetime")                  || EQUAL(pszType, "timestamp") )        {            oField.SetType( OFTDateTime );        }        else if( EQUAL(pszType, "year") )          {            oField.SetType( OFTString );            oField.SetWidth( 10 );        }        else if( EQUAL(pszType, "geometry") )         {            pszGeomColumn = CPLStrdup(papszRow[0]);            continue;        }        // Is this an integer primary key field?        if( !bHasFid && papszRow[3] != NULL && EQUAL(papszRow[3],"PRI")             && oField.GetType() == OFTInteger )        {            bHasFid = TRUE;            pszFIDColumn = CPLStrdup(oField.GetNameRef());            continue;        }        poDefn->AddFieldDefn( &oField );    }    // set to none for now... if we have a geometry column it will be set layer.    poDefn->SetGeomType( wkbNone );    if( hResult != NULL )    {        mysql_free_result( hResult );        hResultSet = NULL;    }    if( bHasFid )        CPLDebug( "MySQL", "table %s has FID column %s.",                  pszTable, pszFIDColumn );    else        CPLDebug( "MySQL",                   "table %s has no FID column, FIDs will not be reliable!",                  pszTable );    if (pszGeomColumn)     {        char*        pszType=NULL;                // set to unknown first        poDefn->SetGeomType( wkbUnknown );                sprintf(szCommand, "SELECT type, coord_dimension FROM geometry_columns WHERE f_table_name='%s'",                pszTable );                hResult = NULL;        if( !mysql_query( poDS->GetConn(), szCommand ) )            hResult = mysql_store_result( poDS->GetConn() );        papszRow = NULL;        if( hResult != NULL )            papszRow = mysql_fetch_row( hResult );        if( papszRow != NULL && papszRow[0] != NULL )        {            pszType = papszRow[0];            OGRwkbGeometryType nGeomType = wkbUnknown;            // check only standard OGC geometry types            if ( EQUAL(pszType, "POINT") )                nGeomType = wkbPoint;            else if ( EQUAL(pszType,"LINESTRING"))                nGeomType = wkbLineString;            else if ( EQUAL(pszType,"POLYGON"))                nGeomType = wkbPolygon;            else if ( EQUAL(pszType,"MULTIPOINT"))                nGeomType = wkbMultiPoint;            else if ( EQUAL(pszType,"MULTILINESTRING"))                nGeomType = wkbMultiLineString;            else if ( EQUAL(pszType,"MULTIPOLYGON"))                nGeomType = wkbMultiPolygon;            else if ( EQUAL(pszType,"GEOMETRYCOLLECTION"))                nGeomType = wkbGeometryCollection;            if( papszRow[1] != NULL && atoi(papszRow[1]) == 3 )                nGeomType = (OGRwkbGeometryType) (nGeomType | wkb25DBit);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久一区二区| 有坂深雪av一区二区精品| 亚洲女人的天堂| 蜜桃久久av一区| 色老汉av一区二区三区| 久久蜜桃一区二区| 亚洲国产wwwccc36天堂| 不卡一卡二卡三乱码免费网站 | 三级成人在线视频| 99久久国产综合色|国产精品| 26uuu国产电影一区二区| 亚洲成人av电影在线| 99免费精品视频| 欧美国产乱子伦| 国产一区二区按摩在线观看| 欧美高清视频一二三区| 亚洲一区二区四区蜜桃| 91免费观看在线| 亚洲国产精品成人久久综合一区| 美女精品自拍一二三四| 在线播放国产精品二区一二区四区| 亚洲激情第一区| 成人av资源站| 国产精品久久久久久久久图文区 | 成人av电影免费观看| 国产天堂亚洲国产碰碰| 国内精品久久久久影院一蜜桃| 欧美嫩在线观看| 午夜国产不卡在线观看视频| 欧美视频在线播放| 午夜激情综合网| 555www色欧美视频| 日本中文字幕一区| 777欧美精品| 日本不卡视频在线| 欧美成人艳星乳罩| 国产精品99久久久久| 国产清纯白嫩初高生在线观看91| 国产91清纯白嫩初高中在线观看| 中文字幕欧美国产| 91网站黄www| 亚洲一区二区不卡免费| 欧美日韩精品三区| 精品无人码麻豆乱码1区2区 | 欧美少妇性性性| 日日夜夜一区二区| 日韩视频在线观看一区二区| 国产麻豆91精品| 亚洲美腿欧美偷拍| 欧美日韩电影在线播放| 久久成人羞羞网站| 久久久不卡网国产精品二区| 成人av中文字幕| 亚洲二区在线观看| 日韩精品一区二区三区视频| 国产在线精品一区在线观看麻豆| 久久久精品免费免费| 91在线丨porny丨国产| 午夜精品一区二区三区三上悠亚| 日韩三级视频中文字幕| 成人永久免费视频| 亚洲一区二区三区自拍| 在线不卡中文字幕| 国产成人综合网| 亚洲精品免费电影| 欧美一区二区美女| av成人免费在线| 免费在线成人网| 国产精品色哟哟网站| 欧美日韩中文一区| 国产一区二区三区精品欧美日韩一区二区三区 | 久久成人18免费观看| 国产精品久久久久久久浪潮网站| 欧美日韩一级黄| 国产99精品国产| 午夜婷婷国产麻豆精品| 中文字幕成人av| 3d动漫精品啪啪一区二区竹菊| 东方欧美亚洲色图在线| 亚洲成国产人片在线观看| 久久久久久久久一| 欧美另类久久久品| 成人涩涩免费视频| 麻豆精品在线看| 亚洲精品国产视频| 国产无人区一区二区三区| 欧美日韩视频不卡| 91在线免费看| 国产精品资源网| 人人超碰91尤物精品国产| 国产精品成人免费| 久久久久久久久久久久久夜| 欧美视频一区二区| 97se狠狠狠综合亚洲狠狠| 韩国午夜理伦三级不卡影院| 日韩精品电影在线观看| 亚洲免费看黄网站| 国产精品久久久久影院亚瑟| 欧美xfplay| 91精品国产综合久久久久久| 欧美亚洲自拍偷拍| 99久久精品一区二区| 国产精品资源网站| 精品一区二区三区免费毛片爱 | 国产精品剧情在线亚洲| 日韩视频中午一区| 日韩三级中文字幕| 欧美一区二区成人6969| 欧美日韩黄色影视| 欧美精品自拍偷拍| 欧美日韩一卡二卡三卡| 欧美中文字幕久久| 欧美性生活一区| 欧美中文字幕一二三区视频| 欧美自拍偷拍午夜视频| 欧美在线播放高清精品| 91国模大尺度私拍在线视频| 欧美亚洲动漫制服丝袜| 色综合中文字幕国产 | 欧美bbbbb| 蜜桃av噜噜一区二区三区小说| 亚洲va欧美va人人爽| 亚洲国产精品一区二区久久恐怖片 | 欧美r级在线观看| 精品欧美乱码久久久久久| 日韩精品一区二区三区视频在线观看| 欧美一级视频精品观看| 日韩久久久精品| 久久久国产精品麻豆| 国产精品成人一区二区三区夜夜夜 | 精品久久久久99| 久久久综合视频| 国产精品色呦呦| 亚洲自拍偷拍麻豆| 青青草91视频| 国产一区二区三区久久久| 成人精品一区二区三区中文字幕 | 亚洲色欲色欲www| 亚洲一级二级在线| 青青青爽久久午夜综合久久午夜| 久久99精品国产.久久久久久| 福利电影一区二区三区| 91麻豆精品一区二区三区| 欧美色综合影院| 久久久久国产精品厨房| 日韩久久一区二区| 亚瑟在线精品视频| 国产激情视频一区二区在线观看 | 成人性视频网站| 欧美探花视频资源| 久久午夜电影网| 亚洲码国产岛国毛片在线| 午夜亚洲国产au精品一区二区| 久久狠狠亚洲综合| 色综合中文字幕国产 | 欧美人伦禁忌dvd放荡欲情| 精品少妇一区二区三区视频免付费| 欧美激情在线一区二区| 亚洲午夜av在线| 国产一区 二区| 欧美色偷偷大香| 欧美激情一区二区三区| 一区二区成人在线| 国产精品亚洲专一区二区三区| 色婷婷亚洲综合| 久久久久久久久蜜桃| 亚洲午夜久久久久中文字幕久| 国产综合一区二区| 欧美丝袜丝交足nylons图片| 久久久影视传媒| 视频精品一区二区| 色婷婷综合久久久中文字幕| 欧美大片在线观看| 午夜电影网亚洲视频| 99精品视频在线播放观看| www成人在线观看| 午夜精品一区二区三区电影天堂 | 日韩一区二区三区视频在线 | 国产精品麻豆欧美日韩ww| 日本不卡视频在线| 欧美视频中文字幕| 中文字幕亚洲一区二区av在线| 黄页网站大全一区二区| 欧美挠脚心视频网站| 夜夜嗨av一区二区三区四季av| 成人黄色小视频| 久久久一区二区三区捆绑**| 日韩高清在线电影| 欧美日本不卡视频| 亚洲成人黄色小说| 欧美专区日韩专区| 亚洲黄一区二区三区| av激情亚洲男人天堂| 国产精品久久久久久福利一牛影视 | 国产精品污污网站在线观看 | 久久99国产精品久久99果冻传媒| 欧美精品亚洲一区二区在线播放| 亚洲欧美日韩精品久久久久| 成人午夜在线免费| 亚洲国产精品av|