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

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

?? gml2ogrgeometry.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
        // Find outer ring.
        psChild = FindBareXMLChild( psNode, "outerBoundaryIs" );
        if( psChild == NULL || psChild->psChild == NULL )
        {
            CPLError( CE_Failure, CPLE_AppDefined, 
                      "Missing outerBoundaryIs property on Polygon." );
            delete poPolygon;
            return NULL;
        }

        // Translate outer ring and add to polygon.
        poRing = (OGRLinearRing *) 
            GML2OGRGeometry_XMLNode( psChild->psChild );
        if( poRing == NULL )
        {
            delete poPolygon;
            return NULL;
        }

        if( !EQUAL(poRing->getGeometryName(),"LINEARRING") )
        {
            CPLError( CE_Failure, CPLE_AppDefined, 
                      "Got %.500s geometry as outerBoundaryIs instead of LINEARRING.",
                      poRing->getGeometryName() );
            delete poPolygon;
            delete poRing;
            return NULL;
        }

        poPolygon->addRingDirectly( poRing );

        // Find all inner rings 
        for( psChild = psNode->psChild; 
             psChild != NULL;
             psChild = psChild->psNext ) 
        {
            if( psChild->eType == CXT_Element
                && EQUAL(BareGMLElement(psChild->pszValue),"innerBoundaryIs") )
            {
                poRing = (OGRLinearRing *) 
                    GML2OGRGeometry_XMLNode( psChild->psChild );
                if( !EQUAL(poRing->getGeometryName(),"LINEARRING") )
                {
                    CPLError( CE_Failure, CPLE_AppDefined, 
                              "Got %.500s geometry as innerBoundaryIs instead of LINEARRING.",
                              poRing->getGeometryName() );
                    delete poPolygon;
                    delete poRing;
                    return NULL;
                }

                poPolygon->addRingDirectly( poRing );
            }
        }

        return poPolygon;
    }

/* -------------------------------------------------------------------- */
/*      LinearRing                                                      */
/* -------------------------------------------------------------------- */
    if( EQUAL(pszBaseGeometry,"LinearRing") )
    {
        OGRLinearRing   *poLinearRing = new OGRLinearRing();
        
        if( !ParseGMLCoordinates( psNode, poLinearRing ) )
        {
            delete poLinearRing;
            return NULL;
        }

        return poLinearRing;
    }

/* -------------------------------------------------------------------- */
/*      LineString                                                      */
/* -------------------------------------------------------------------- */
    if( EQUAL(pszBaseGeometry,"LineString") )
    {
        OGRLineString   *poLine = new OGRLineString();
        
        if( !ParseGMLCoordinates( psNode, poLine ) )
        {
            delete poLine;
            return NULL;
        }

        return poLine;
    }

/* -------------------------------------------------------------------- */
/*      PointType                                                       */
/* -------------------------------------------------------------------- */
    if( EQUAL(pszBaseGeometry,"PointType") 
        || EQUAL(pszBaseGeometry,"Point") )
    {
        OGRPoint *poPoint = new OGRPoint();
        
        if( !ParseGMLCoordinates( psNode, poPoint ) )
        {
            delete poPoint;
            return NULL;
        }

        return poPoint;
    }

/* -------------------------------------------------------------------- */
/*      Box                                                             */
/* -------------------------------------------------------------------- */
    if( EQUAL(pszBaseGeometry,"BoxType") || EQUAL(pszBaseGeometry,"Box") )
    {
        OGRLineString  oPoints;

        if( !ParseGMLCoordinates( psNode, &oPoints ) )
            return NULL;

        if( oPoints.getNumPoints() < 2 )
            return NULL;

        OGRLinearRing *poBoxRing = new OGRLinearRing();
        OGRPolygon *poBoxPoly = new OGRPolygon();

        poBoxRing->setNumPoints( 5 );
        poBoxRing->setPoint( 
            0, oPoints.getX(0), oPoints.getY(0), oPoints.getZ(0) );
        poBoxRing->setPoint( 
            1, oPoints.getX(1), oPoints.getY(0), oPoints.getZ(0) );
        poBoxRing->setPoint( 
            2, oPoints.getX(1), oPoints.getY(1), oPoints.getZ(1) );
        poBoxRing->setPoint( 
            3, oPoints.getX(0), oPoints.getY(1), oPoints.getZ(0) );
        poBoxRing->setPoint( 
            4, oPoints.getX(0), oPoints.getY(0), oPoints.getZ(0) );

        poBoxPoly->addRingDirectly( poBoxRing );

        return poBoxPoly;
    }

/* -------------------------------------------------------------------- */
/*      MultiPolygon                                                    */
/* -------------------------------------------------------------------- */
    if( EQUAL(pszBaseGeometry,"MultiPolygon") )
    {
        CPLXMLNode *psChild;
        OGRMultiPolygon *poMPoly = new OGRMultiPolygon();

        // Find all inner rings 
        for( psChild = psNode->psChild; 
             psChild != NULL;
             psChild = psChild->psNext ) 
        {
            if( psChild->eType == CXT_Element
                && EQUAL(BareGMLElement(psChild->pszValue),"polygonMember") )
            {
                OGRPolygon *poPolygon;

                poPolygon = (OGRPolygon *) 
                    GML2OGRGeometry_XMLNode( psChild->psChild );

                if( poPolygon == NULL )
                {
                    delete poMPoly;
                    return NULL;
                }

                if( !EQUAL(poPolygon->getGeometryName(),"POLYGON") )
                {
                    CPLError( CE_Failure, CPLE_AppDefined, 
                              "Got %.500s geometry as polygonMember instead of MULTIPOLYGON.",
                              poPolygon->getGeometryName() );
                    delete poPolygon;
                    delete poMPoly;
                    return NULL;
                }

                poMPoly->addGeometryDirectly( poPolygon );
            }
        }

        return poMPoly;
    }

/* -------------------------------------------------------------------- */
/*      MultiPoint                                                      */
/* -------------------------------------------------------------------- */
    if( EQUAL(pszBaseGeometry,"MultiPoint") )
    {
        CPLXMLNode *psChild;
        OGRMultiPoint *poMP = new OGRMultiPoint();

        // collect points.
        for( psChild = psNode->psChild; 
             psChild != NULL;
             psChild = psChild->psNext ) 
        {
            if( psChild->eType == CXT_Element
                && EQUAL(BareGMLElement(psChild->pszValue),"pointMember") )
            {
                OGRPoint *poPoint;

                poPoint = (OGRPoint *) 
                    GML2OGRGeometry_XMLNode( psChild->psChild );
                if( poPoint == NULL 
                    || wkbFlatten(poPoint->getGeometryType()) != wkbPoint )
                {
                    CPLError( CE_Failure, CPLE_AppDefined, 
                              "Got %.500s geometry as pointMember instead of MULTIPOINT",
                              poPoint ? poPoint->getGeometryName() : "NULL" );
                    delete poPoint;
                    delete poMP;
                    return NULL;
                }

                poMP->addGeometryDirectly( poPoint );
            }
        }

        return poMP;
    }

/* -------------------------------------------------------------------- */
/*      MultiLineString                                                 */
/* -------------------------------------------------------------------- */
    if( EQUAL(pszBaseGeometry,"MultiLineString") )
    {
        CPLXMLNode *psChild;
        OGRMultiLineString *poMP = new OGRMultiLineString();

        // collect lines
        for( psChild = psNode->psChild; 
             psChild != NULL;
             psChild = psChild->psNext ) 
        {
            if( psChild->eType == CXT_Element
                && EQUAL(BareGMLElement(psChild->pszValue),"lineStringMember") )
            {
                OGRGeometry *poGeom;

                poGeom = GML2OGRGeometry_XMLNode( psChild->psChild );
                if( poGeom == NULL 
                    || wkbFlatten(poGeom->getGeometryType()) != wkbLineString )
                {
                    CPLError( CE_Failure, CPLE_AppDefined, 
                              "Got %.500s geometry as Member instead of LINESTRING.",
                              poGeom ? poGeom->getGeometryName() : "NULL" );
                    delete poGeom;
                    delete poMP;
                    return NULL;
                }

                poMP->addGeometryDirectly( poGeom );
            }
        }

        return poMP;
    }

/* -------------------------------------------------------------------- */
/*      GeometryCollection                                              */
/* -------------------------------------------------------------------- */
    if( EQUAL(pszBaseGeometry,"GeometryCollection") )
    {
        CPLXMLNode *psChild;
        OGRGeometryCollection *poGC = new OGRGeometryCollection();

        // collect geoms
        for( psChild = psNode->psChild; 
             psChild != NULL;
             psChild = psChild->psNext ) 
        {
            if( psChild->eType == CXT_Element
                && EQUAL(BareGMLElement(psChild->pszValue),"geometryMember") )
            {
                OGRGeometry *poGeom;

                poGeom = GML2OGRGeometry_XMLNode( psChild->psChild );
                if( poGeom == NULL )
                {
                    CPLError( CE_Failure, CPLE_AppDefined, 
                              "Failed to get geometry in geometryMember" );
                    delete poGeom;
                    delete poGC;
                    return NULL;
                }

                poGC->addGeometryDirectly( poGeom );
            }
        }

        return poGC;
    }

    CPLError( CE_Failure, CPLE_AppDefined, 
              "Unrecognised geometry type <%.500s>.", 
              pszBaseGeometry );

    return NULL;
}

/************************************************************************/
/*                      OGR_G_CreateFromGMLTree()                       */
/************************************************************************/

OGRGeometryH OGR_G_CreateFromGMLTree( const CPLXMLNode *psTree )

{
    return (OGRGeometryH) GML2OGRGeometry_XMLNode( (CPLXMLNode *) psTree );
}

/************************************************************************/
/*                        OGR_G_CreateFromGML()                         */
/************************************************************************/

OGRGeometryH OGR_G_CreateFromGML( const char *pszGML )

{
    if( pszGML == NULL || strlen(pszGML) == 0 )
    {
        CPLError( CE_Failure, CPLE_AppDefined, 
                  "GML Geometry is empty in GML2OGRGeometry()." );
        return NULL;
    }

/* -------------------------------------------------------------------- */
/*      Try to parse the XML snippet using the MiniXML API.  If this    */
/*      fails, we assume the minixml api has already posted a CPL       */
/*      error, and just return NULL.                                    */
/* -------------------------------------------------------------------- */
    CPLXMLNode *psGML = CPLParseXMLString( pszGML );

    if( psGML == NULL )
        return NULL;

/* -------------------------------------------------------------------- */
/*      Convert geometry recursively.                                   */
/* -------------------------------------------------------------------- */
    OGRGeometry *poGeometry;

    poGeometry = GML2OGRGeometry_XMLNode( psGML );

    CPLDestroyXMLNode( psGML );
    
    return (OGRGeometryH) poGeometry;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区欧美在线观看| 欧美一卡2卡三卡4卡5免费| 日本一区二区免费在线观看视频| 日韩高清不卡一区二区三区| 日韩一区二区中文字幕| 理论片日本一区| 久久久国际精品| 99精品视频中文字幕| 一区二区三区波多野结衣在线观看| 日本精品一区二区三区高清| 午夜精品久久久久久不卡8050| 欧美二区三区的天堂| 久久成人免费日本黄色| 国产亚洲午夜高清国产拍精品| av色综合久久天堂av综合| 亚洲精品乱码久久久久久久久 | 亚洲图片另类小说| 欧美日韩一区国产| 精品亚洲成av人在线观看| 国产精品免费免费| 欧美日韩亚洲综合一区| 国产精品一区二区果冻传媒| 亚洲欧洲中文日韩久久av乱码| 91精品国产综合久久久久| 国产精品小仙女| 一区二区三区四区不卡视频 | 国产原创一区二区三区| 亚洲欧洲三级电影| 日韩三级中文字幕| 972aa.com艺术欧美| 久久精品国产一区二区三区免费看| 国产精品污污网站在线观看| 欧美日韩国产首页在线观看| 国模一区二区三区白浆| 樱花草国产18久久久久| 精品久久久久久久人人人人传媒 | 91国产成人在线| 精品一区二区免费视频| 亚洲精品乱码久久久久久黑人 | 日本aⅴ精品一区二区三区| 国产精品欧美久久久久无广告| 欧美绝品在线观看成人午夜影视| 国产福利一区在线观看| 午夜a成v人精品| 亚洲色图视频网| 久久综合av免费| 欧美日韩aaaaaa| 91精品91久久久中77777| 国产在线日韩欧美| 日韩高清在线电影| 亚洲一区在线观看免费| 国产精品久久精品日日| 欧美va在线播放| 欧美丰满一区二区免费视频| 色婷婷综合激情| 成人黄色小视频在线观看| 久久不见久久见中文字幕免费| 亚洲香蕉伊在人在线观| 综合久久国产九一剧情麻豆| 国产亚洲一区字幕| 久久女同互慰一区二区三区| 777午夜精品视频在线播放| 91久久精品一区二区三| 91影视在线播放| www..com久久爱| 国产高清视频一区| 国产成人精品一区二| 国产福利91精品一区二区三区| 久久精品国产**网站演员| 日韩av网站在线观看| 天堂影院一区二区| 五月综合激情婷婷六月色窝| 亚洲综合色婷婷| 亚洲一区二区视频在线| 亚洲一区av在线| 午夜精品福利一区二区三区av| 亚洲一二三区视频在线观看| 亚洲综合图片区| 午夜久久久久久久久| 亚洲第四色夜色| 免费一级片91| 国产在线国偷精品免费看| 国产乱码精品1区2区3区| 国产成人av一区二区三区在线| 国产91丝袜在线播放0| 懂色av中文一区二区三区| 95精品视频在线| 欧美日韩一区中文字幕| 日韩一区二区三区视频在线| 日韩精品中文字幕一区| 久久久亚洲综合| 成人免费在线视频| 夜夜嗨av一区二区三区四季av| 亚洲第一福利视频在线| 美女一区二区视频| 丁香五精品蜜臀久久久久99网站| 成人sese在线| 精品婷婷伊人一区三区三| 日韩一区二区三区高清免费看看| 亚洲精品一区二区三区在线观看| 久久久天堂av| 一区二区三区丝袜| 美女网站色91| 波多野洁衣一区| 欧美午夜电影网| 欧美mv和日韩mv国产网站| 国产精品久久一级| 午夜久久久久久久久久一区二区| 精品午夜久久福利影院| 成人app在线观看| 欧美日韩高清一区二区| 国产区在线观看成人精品| 一区二区三区国产| 国产在线看一区| 欧美性一二三区| 国产偷国产偷精品高清尤物| 亚洲精品中文字幕乱码三区| 蜜桃视频在线观看一区| 成人avav影音| 日韩欧美不卡一区| 亚洲人成影院在线观看| 美女一区二区三区在线观看| 色综合色狠狠天天综合色| 欧美一区二区三级| 亚洲欧美日韩在线| 国产资源精品在线观看| 欧美日韩色综合| 欧美激情自拍偷拍| 日本美女一区二区三区| 99在线精品视频| 久久新电视剧免费观看| 亚洲国产一二三| caoporn国产一区二区| 日韩欧美国产综合| 夜夜亚洲天天久久| 99久久婷婷国产综合精品电影| 日韩天堂在线观看| 亚洲综合一区二区三区| www.av亚洲| 欧美国产亚洲另类动漫| 久久机这里只有精品| 欧美视频在线播放| 亚洲免费观看视频| 成人免费黄色在线| 国产欧美va欧美不卡在线| 裸体在线国模精品偷拍| 欧美日本国产视频| 一区二区不卡在线播放 | 亚洲免费成人av| 成人高清在线视频| 久久久久久久久久久99999| 午夜精品爽啪视频| 欧美综合色免费| 亚洲精品高清视频在线观看| 成人精品国产一区二区4080| 久久嫩草精品久久久精品一| 麻豆精品久久精品色综合| 88在线观看91蜜桃国自产| 亚洲444eee在线观看| 欧美日韩综合在线免费观看| 亚洲影院在线观看| 欧美日韩国产高清一区| 偷拍一区二区三区四区| 欧美伦理电影网| 五月婷婷欧美视频| 91麻豆精品国产自产在线 | 久久精品72免费观看| 日韩你懂的在线播放| 免费视频最近日韩| 日韩欧美国产电影| 国内精品久久久久影院一蜜桃| 精品播放一区二区| 国内外成人在线视频| 久久久久国产精品免费免费搜索| 狠狠色综合播放一区二区| 26uuu国产在线精品一区二区| 国产在线一区观看| 国产亚洲欧洲997久久综合| 国产99精品国产| 亚洲欧洲综合另类| 欧美日本视频在线| 紧缚奴在线一区二区三区| 久久久久久毛片| 成人免费av在线| 亚洲精品欧美专区| 欧美福利一区二区| 国产成人av电影在线| 亚洲欧美怡红院| 欧美人妖巨大在线| 国产一区二区不卡老阿姨| 国产精品美女www爽爽爽| 色综合网色综合| 日本不卡的三区四区五区| 精品国产乱码久久久久久久久| 国产精品1024久久| 一区二区三区四区亚洲| 欧美成人aa大片| 99精品一区二区| 美女网站色91| 亚洲视频中文字幕|