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

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

?? ogr_srs_xml.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
/******************************************************************************
 * $Id: ogr_srs_xml.cpp 10646 2007-01-18 02:38:10Z warmerdam $
 *
 * Project:  OpenGIS Simple Features Reference Implementation
 * Purpose:  OGRSpatialReference interface to OGC XML (014r4).
 * Author:   Frank Warmerdam, warmerdam@pobox.com
 *
 ******************************************************************************
 * Copyright (c) 2001, 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 "ogr_spatialref.h"
#include "ogr_p.h"
#include "cpl_minixml.h"

/************************************************************************/
/*                              parseURN()                              */
/*                                                                      */
/*      Parses requested sections out of URN.  The passed in URN        */
/*      *is* altered but the returned values point into the             */
/*      original string.                                                */
/************************************************************************/

static int parseURN( char *pszURN, 
                     char **ppszObjectType, 
                     char **ppszAuthority, 
                     char **ppszCode,
                     char **ppszVersion = NULL )

{
    int  i;

    if( ppszObjectType != NULL )
        *ppszObjectType = "";
    if( ppszAuthority != NULL )
        *ppszAuthority = "";
    if( ppszCode != NULL )
        *ppszCode = "";
    if( ppszVersion != NULL )
        *ppszVersion = "";

/* -------------------------------------------------------------------- */
/*      Verify prefix.                                                  */
/* -------------------------------------------------------------------- */
    if( !EQUALN(pszURN,"urn:ogc:def:",12) )
        return FALSE;

/* -------------------------------------------------------------------- */
/*      Extract object type                                             */
/* -------------------------------------------------------------------- */
    if( ppszObjectType != NULL )
        *ppszObjectType = (char *) pszURN + 12;

    i = 12;
    while( pszURN[i] != ':' && pszURN[i] != '\0' )
        i++;

    if( pszURN[i] == '\0' )
        return FALSE;

    pszURN[i] = '\0';
    i++;

/* -------------------------------------------------------------------- */
/*      Extract authority                                               */
/* -------------------------------------------------------------------- */
    if( ppszAuthority != NULL )
        *ppszAuthority = (char *) pszURN + i;

    while( pszURN[i] != ':' && pszURN[i] != '\0' )
        i++;

    if( pszURN[i] == '\0' )
        return FALSE;

    pszURN[i] = '\0';
    i++;

/* -------------------------------------------------------------------- */
/*      Extract version                                                 */
/* -------------------------------------------------------------------- */
    if( ppszVersion != NULL )
        *ppszVersion = (char *) pszURN + i;

    while( pszURN[i] != ':' && pszURN[i] != '\0' )
        i++;

    if( pszURN[i] == '\0' )
        return FALSE;

    pszURN[i] = '\0';
    i++;

/* -------------------------------------------------------------------- */
/*      Extract code.                                                   */
/* -------------------------------------------------------------------- */
    if( ppszCode != NULL )
        *ppszCode = (char *) pszURN + i;
    
    return TRUE;
}

/************************************************************************/
/*                               addURN()                               */
/************************************************************************/

static void addURN( CPLXMLNode *psTarget, 
                    const char *pszAuthority, 
                    const char *pszObjectType, 
                    int nCode,
                    const char *pszVersion = "" )

{
    char szURN[200];

    if( pszVersion == NULL )
        pszVersion = "";

    CPLAssert( strlen(pszAuthority)+strlen(pszObjectType) < sizeof(szURN)-30 );

    sprintf( szURN, "urn:ogc:def:%s:%s:%s:", 
             pszObjectType, pszAuthority, pszVersion );
    
    if( nCode != 0 )
        sprintf( szURN + strlen(szURN), "%d", nCode );
    
    CPLCreateXMLNode(
        CPLCreateXMLNode( psTarget, CXT_Attribute, "xlink:href" ),
        CXT_Text, szURN );
}

/************************************************************************/
/*                         AddValueIDWithURN()                          */
/*                                                                      */
/*      Adds element of the form <ElementName                           */
/*      xlink:href="urn_without_id">id</ElementName>"                   */
/************************************************************************/

static CPLXMLNode *
AddValueIDWithURN( CPLXMLNode *psTarget, 
                   const char *pszElement,
                   const char *pszAuthority, 
                   const char *pszObjectType, 
                   int nCode,
                   const char *pszVersion = "" )
    
{
    CPLXMLNode *psElement;

    psElement = CPLCreateXMLNode( psTarget, CXT_Element, pszElement );
    addURN( psElement, pszAuthority, pszObjectType, nCode, pszVersion );

    return psElement;
}

/************************************************************************/
/*                          addAuthorityIDBlock()                          */
/*                                                                      */
/*      Creates a structure like:                                       */
/*      <srsId>                                                         */
/*        <name codeSpace="urn">code</name>                             */
/*      </srsId>                                                        */
/************************************************************************/
static CPLXMLNode *addAuthorityIDBlock( CPLXMLNode *psTarget, 
                                     const char *pszElement,
                                     const char *pszAuthority, 
                                     const char *pszObjectType, 
                                     int nCode,
                                     const char *pszVersion = "" )

{
    char szURN[200];

/* -------------------------------------------------------------------- */
/*      Prepare partial URN without the actual code.                    */
/* -------------------------------------------------------------------- */
    if( pszVersion == NULL )
        pszVersion = "";

    CPLAssert( strlen(pszAuthority)+strlen(pszObjectType) < sizeof(szURN)-30 );

    sprintf( szURN, "urn:ogc:def:%s:%s:%s:", 
             pszObjectType, pszAuthority, pszVersion );
    
/* -------------------------------------------------------------------- */
/*      Prepare the base name, eg. <srsID>.                             */
/* -------------------------------------------------------------------- */
    CPLXMLNode *psElement = 
        CPLCreateXMLNode( psTarget, CXT_Element, pszElement );

/* -------------------------------------------------------------------- */
/*      Prepare the name element.                                       */
/* -------------------------------------------------------------------- */
    CPLXMLNode * psName = 
        CPLCreateXMLNode( psElement, CXT_Element, "gml:name" );

/* -------------------------------------------------------------------- */
/*      Prepare the codespace attribute.                                */
/* -------------------------------------------------------------------- */
    CPLCreateXMLNode(
        CPLCreateXMLNode( psName, CXT_Attribute, "gml:codeSpace" ),
        CXT_Text, szURN );

/* -------------------------------------------------------------------- */
/*      Attach code value to name node.                                 */
/* -------------------------------------------------------------------- */
    char szCode[32];
    sprintf( szCode, "%d", nCode );

    CPLCreateXMLNode( psName, CXT_Text, szCode );

    return psElement;
}
    

/************************************************************************/
/*                              addGMLId()                              */
/************************************************************************/

static void addGMLId( CPLXMLNode *psParent )

{
    CPLXMLNode *psId;
    static int nNextGMLId = 1;
    char   szIdText[40];

    sprintf( szIdText, "ogrcrs%d", nNextGMLId++ );
    
    psId = 
        CPLCreateXMLNode( 
            CPLCreateXMLNode( psParent, CXT_Attribute, "gml:id" ),
            CXT_Text, szIdText );
}

/************************************************************************/
/*                        exportAuthorityToXML()                        */
/************************************************************************/

static CPLXMLNode *exportAuthorityToXML( const OGR_SRSNode *poAuthParent,
                                         const char *pszTagName,
                                         CPLXMLNode *psXMLParent,
                                         const char *pszObjectType,
                                         int bUseSubName = TRUE )

{
    const OGR_SRSNode *poAuthority;

/* -------------------------------------------------------------------- */
/*      Get authority node from parent.                                 */
/* -------------------------------------------------------------------- */
    if( poAuthParent->FindChild( "AUTHORITY" ) == -1 )
        return NULL;

    poAuthority = poAuthParent->GetChild( 
        poAuthParent->FindChild( "AUTHORITY" ));

/* -------------------------------------------------------------------- */
/*      Create identification.                                          */
/* -------------------------------------------------------------------- */
    const char *pszCode, *pszCodeSpace, *pszEdition;

    pszCode = poAuthority->GetChild(1)->GetValue();
    pszCodeSpace = poAuthority->GetChild(0)->GetValue();
    pszEdition = NULL;

    if( bUseSubName )
        return addAuthorityIDBlock( psXMLParent, pszTagName, pszCodeSpace, 
                                 pszObjectType, atoi(pszCode), pszEdition );
    else
        return AddValueIDWithURN( psXMLParent, pszTagName, pszCodeSpace, 
                                  pszObjectType, atoi(pszCode), pszEdition );
                              
}

/************************************************************************/
/*                             addProjArg()                             */
/************************************************************************/

static void addProjArg( const OGRSpatialReference *poSRS, CPLXMLNode *psBase, 
                        const char *pszMeasureType, double dfDefault,
                        int nParameterID, const char *pszWKTName )

{
    CPLXMLNode *psNode, *psValue;

    psNode = CPLCreateXMLNode( psBase, CXT_Element, "gml:usesParameterValue" );

/* -------------------------------------------------------------------- */
/*      Handle the UOM.                                                 */
/* -------------------------------------------------------------------- */
    const char *pszUOMValue;

    if( EQUAL(pszMeasureType,"Angular") )
        pszUOMValue = "urn:ogc:def:uom:EPSG::9102";
    else
        pszUOMValue = "urn:ogc:def:uom:EPSG::9001";

    psValue = CPLCreateXMLNode( psNode, CXT_Element, "gml:value" );

    CPLCreateXMLNode( 
        CPLCreateXMLNode( psValue, CXT_Attribute, "gml:uom" ),
        CXT_Text, pszUOMValue );
    
/* -------------------------------------------------------------------- */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美黄色影院| 亚洲成人tv网| 久久精品这里都是精品| 欧美一区二区三区啪啪| 欧美丰满美乳xxx高潮www| 欧美亚洲动漫另类| 欧美日韩另类一区| 日韩美女一区二区三区| 日韩区在线观看| 久久久久免费观看| 国产精品美女视频| 成人欧美一区二区三区在线播放| 国产精品成人在线观看| 亚洲欧美国产毛片在线| 亚洲地区一二三色| 精品午夜久久福利影院| proumb性欧美在线观看| 欧美曰成人黄网| 欧美一区二区在线免费播放| 亚洲免费视频成人| 亚洲永久免费视频| 老司机免费视频一区二区 | 国产精品不卡在线| 亚洲男同1069视频| 日韩国产欧美在线播放| 国产主播一区二区三区| 99久久婷婷国产综合精品| 久久综合中文字幕| 国产精品二区一区二区aⅴ污介绍| 久久成人麻豆午夜电影| 一本一道久久a久久精品| 国产偷v国产偷v亚洲高清| 日韩理论片一区二区| 蜜臀国产一区二区三区在线播放 | 中文无字幕一区二区三区 | 欧美性大战久久| 欧美日韩在线观看一区二区 | 久久蜜桃av一区二区天堂| 中文字幕欧美国产| 亚洲高清视频的网址| 国产一区二区三区日韩| 在线看国产日韩| 欧美国产日韩精品免费观看| 五月激情六月综合| 成人av高清在线| 欧美一级精品大片| 亚洲免费伊人电影| 成人午夜又粗又硬又大| 日韩一区二区中文字幕| 亚洲一区二区三区在线| 波多野结衣中文字幕一区| 日韩三级.com| 水蜜桃久久夜色精品一区的特点| www.爱久久.com| 国产婷婷色一区二区三区| 日本欧美加勒比视频| 欧美在线制服丝袜| 国产精品久久毛片av大全日韩| 国产在线视频不卡二| 欧美浪妇xxxx高跟鞋交| 亚洲自拍偷拍网站| 91免费视频网| 中文字幕在线不卡一区二区三区| 国产在线视频一区二区| 精品少妇一区二区| 久久精品国产免费| 日韩午夜在线观看视频| 日韩电影免费在线| 欧美挠脚心视频网站| 亚洲成人777| 欧美丰满高潮xxxx喷水动漫 | 91精品国产91久久久久久最新毛片| 美女视频网站黄色亚洲| 亚洲视频免费在线观看| 中文字幕第一区二区| 欧美tickling挠脚心丨vk| 一本色道久久综合亚洲aⅴ蜜桃| 国产馆精品极品| 日韩va欧美va亚洲va久久| 亚洲尤物在线视频观看| 亚洲国产视频a| 亚洲精品免费在线观看| 成人精品免费网站| 国产精品私人影院| 91亚洲精品久久久蜜桃网站| 亚洲男人的天堂在线aⅴ视频| 风间由美性色一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 成人精品在线视频观看| 国产精品国产a级| 色婷婷久久久综合中文字幕 | www.在线成人| 亚洲精品欧美在线| 日韩一区二区精品葵司在线| 国产一区久久久| 国产精品久久久久影视| 欧日韩精品视频| 日韩国产成人精品| 中文字幕精品综合| 色婷婷亚洲婷婷| 开心九九激情九九欧美日韩精美视频电影 | 精品久久一二三区| 国产精品99久久久久久宅男| 亚洲色图欧美在线| 91精品国产免费| 成人少妇影院yyyy| 亚洲福利一区二区| 26uuu成人网一区二区三区| 99久久er热在这里只有精品15| 亚洲地区一二三色| 国产夜色精品一区二区av| 欧美三级日本三级少妇99| 国产原创一区二区三区| 亚洲高清视频在线| 久久九九全国免费| 91精品国产一区二区人妖| 成人黄色大片在线观看| 日本欧美在线看| 一区av在线播放| 国产嫩草影院久久久久| 欧美日韩国产一二三| 成人午夜视频在线| 青青草97国产精品免费观看无弹窗版 | 91麻豆精品国产91久久久资源速度 | 日本美女一区二区三区| 欧美日韩国产另类一区| 亚洲天堂a在线| 91亚洲精品久久久蜜桃网站| 国产精品久久久久久久久久久免费看| 国模一区二区三区白浆| 又紧又大又爽精品一区二区| 一区二区三区日韩精品视频| 在线免费观看日本一区| 国产精品一区二区三区四区 | 日韩理论片在线| 国产欧美日韩三区| 日韩免费成人网| 欧美一级生活片| 在线播放国产精品二区一二区四区| 成人av第一页| 成人免费毛片高清视频| 国产福利91精品一区| 九九精品一区二区| 久久99久久精品| 蜜芽一区二区三区| 日韩中文字幕一区二区三区| 一区二区在线看| 夜夜嗨av一区二区三区中文字幕| 中文字幕一区二区三区不卡| 久久久久久免费网| 国产午夜精品美女毛片视频| 精品99久久久久久| 久久免费视频色| 亚洲国产激情av| 1区2区3区欧美| 亚洲欧美日韩综合aⅴ视频| 欧美精彩视频一区二区三区| 亚洲国产精品精华液ab| 中文字幕av一区二区三区免费看 | 99久久婷婷国产综合精品电影| 成人黄页在线观看| 99国产精品国产精品久久| 一本久道久久综合中文字幕| 日本韩国一区二区| 欧美日韩一区二区三区不卡| 7777精品伊人久久久大香线蕉| 欧美日韩一卡二卡| 91精品国产黑色紧身裤美女| 日韩精品中文字幕一区二区三区| 精品女同一区二区| 国产蜜臀av在线一区二区三区| 中文字幕高清不卡| 亚洲综合丝袜美腿| 久久精品99国产精品日本| 欧美日韩在线三级| 91影视在线播放| 91影视在线播放| 久久久久久夜精品精品免费| 欧洲生活片亚洲生活在线观看| 欧美日韩精品专区| 亚洲人成伊人成综合网小说| 成人av网址在线| 中文字幕在线观看一区| 在线观看亚洲精品视频| 综合激情网...| 欧美人与禽zozo性伦| 亚州成人在线电影| 精品国产一区二区三区四区四 | 91精品啪在线观看国产60岁| 国产精品久久777777| 蜜臀国产一区二区三区在线播放 | 午夜a成v人精品| 欧美区视频在线观看| 亚洲电影视频在线| 欧美撒尿777hd撒尿| 亚洲国产美女搞黄色| 91福利视频网站| 尤物av一区二区| 欧美丝袜自拍制服另类| 亚洲电影中文字幕在线观看|