⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntf_estlayers.cpp

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // LINE_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // Geometry    int         nGeomId;        poFeature->SetGeometryDirectly(poReader->ProcessGeometry(papoGroup[1],                                                             &nGeomId));    // GEOM_ID    poFeature->SetField( 2, nGeomId );    // Attributes    poReader->ApplyAttributeValues( poFeature, papoGroup,                                    "FC", 1, "OM", 3, "RN", 4, "TR", 5,                                    "RI", 6, "LC", 7, "RC", 8, "LD", 9,                                    "RD", 10,                                     NULL );    return poFeature;}/************************************************************************//*                      TranslateMeridian2Point()                       *//************************************************************************/static OGRFeature *TranslateMeridian2Point( NTFFileReader *poReader,                                            OGRNTFLayer *poLayer,                                            NTFRecord **papoGroup ){    if( CSLCount((char **) papoGroup) < 2        || papoGroup[0]->GetType() != NRT_POINTREC        || papoGroup[1]->GetType() != NRT_GEOMETRY )        return NULL;            OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // POINT_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // Geometry    int         nGeomId;        poFeature->SetGeometryDirectly(poReader->ProcessGeometry(papoGroup[1],                                                             &nGeomId));    // GEOM_ID    poFeature->SetField( 1, nGeomId );    // Attributes    poReader->ApplyAttributeValues( poFeature, papoGroup,                                    "FC", 2, "PN", 3, "OD", 4, "PO", 5,                                     "JN", 6, "RT", 7, "SN", 7, "SI", 8,                                     "PN", 9, "PI", 10, "NM", 11, "DA", 12,                                     "WA", 13, "HT", 14,                                    NULL );    return poFeature;}/************************************************************************//*                       TranslateMeridian2Line()                       *//************************************************************************/static OGRFeature *TranslateMeridian2Line( NTFFileReader *poReader,                                           OGRNTFLayer *poLayer,                                           NTFRecord **papoGroup ){    if( CSLCount((char **) papoGroup) < 2        || papoGroup[0]->GetType() != NRT_LINEREC        || papoGroup[1]->GetType() != NRT_GEOMETRY )        return NULL;            OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // LINE_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // Geometry    int         nGeomId;        poFeature->SetGeometryDirectly(poReader->ProcessGeometry(papoGroup[1],                                                             &nGeomId));    // GEOM_ID    poFeature->SetField( 2, nGeomId );    // Attributes    poReader->ApplyAttributeValues( poFeature, papoGroup,                                    "FC", 1, "OD", 3, "PO", 4, "RN", 5,                                     "TR", 6, "PN", 7, "RI", 8, "LC", 9,                                    "RC", 10, "LD", 11, "RD", 12, "WI", 14,                                    NULL );    return poFeature;}/************************************************************************//*                       TranslateStrategiNode()                        *//*                                                                      *//*      Also used for Meridian, Oscar and BaseData.GB nodes.            *//************************************************************************/static OGRFeature *TranslateStrategiNode( NTFFileReader *poReader,                                          OGRNTFLayer *poLayer,                                          NTFRecord **papoGroup ){    if( CSLCount((char **) papoGroup) != 1         || papoGroup[0]->GetType() != NRT_NODEREC )        return NULL;            OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // NODE_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // GEOM_ID_OF_POINT    poFeature->SetField( 1, atoi(papoGroup[0]->GetField( 9, 14 )) );    // NUM_LINKS    int         nNumLinks = atoi(papoGroup[0]->GetField( 15, 18 ));        if( nNumLinks > MAX_LINK )    {        CPLError( CE_Failure, CPLE_AppDefined,                   "MAX_LINK exceeded in ntf_estlayers.cpp." );        return poFeature;    }        poFeature->SetField( 2, nNumLinks );    // DIR    int         i, anList[MAX_LINK];    for( i = 0; i < nNumLinks; i++ )        anList[i] = atoi(papoGroup[0]->GetField( 19+i*12, 19+i*12 ));    poFeature->SetField( 3, nNumLinks, anList );    // GEOM_ID_OF_POINT    for( i = 0; i < nNumLinks; i++ )        anList[i] = atoi(papoGroup[0]->GetField( 19+i*12+1, 19+i*12+6 ));    poFeature->SetField( 4, nNumLinks, anList );    // LEVEL    for( i = 0; i < nNumLinks; i++ )        anList[i] = atoi(papoGroup[0]->GetField( 19+i*12+11, 19+i*12+11 ));    poFeature->SetField( 5, nNumLinks, anList );        // ORIENT (optional)    if( EQUAL(poFeature->GetDefnRef()->GetFieldDefn(6)->GetNameRef(),              "ORIENT") )    {        double  adfList[MAX_LINK];        for( i = 0; i < nNumLinks; i++ )            adfList[i] =                atoi(papoGroup[0]->GetField( 19+i*12+7, 19+i*12+10 )) * 0.1;        poFeature->SetField( 6, nNumLinks, adfList );    }    return poFeature;}/************************************************************************//*                       TranslateStrategiText()                        *//*                                                                      *//*      Also used for Meridian, BaseData and Generic text.              *//************************************************************************/static OGRFeature *TranslateStrategiText( NTFFileReader *poReader,                                          OGRNTFLayer *poLayer,                                          NTFRecord **papoGroup ){    if( CSLCount((char **) papoGroup) < 4        || papoGroup[0]->GetType() != NRT_TEXTREC        || papoGroup[1]->GetType() != NRT_TEXTPOS         || papoGroup[2]->GetType() != NRT_TEXTREP         || papoGroup[3]->GetType() != NRT_GEOMETRY )        return NULL;            OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // POINT_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // FONT    poFeature->SetField( 2, atoi(papoGroup[2]->GetField( 9, 12 )) );    // TEXT_HT    poFeature->SetField( 3, atoi(papoGroup[2]->GetField( 13, 15 )) * 0.1 );    // DIG_POSTN    poFeature->SetField( 4, atoi(papoGroup[2]->GetField( 16, 16 )) );    // ORIENT    poFeature->SetField( 5, atoi(papoGroup[2]->GetField( 17, 20 )) * 0.1 );    // TEXT_HT_GROUND    poFeature->SetField( 7, poFeature->GetFieldAsDouble(3)                         * poReader->GetPaperToGround() );    // Geometry    poFeature->SetGeometryDirectly(poReader->ProcessGeometry(papoGroup[3]));    // Attributes    poReader->ApplyAttributeValues( poFeature, papoGroup,                                    "FC", 1, "TX", 6,                                    NULL );    return poFeature;}/************************************************************************//*                      TranslateStrategiPoint()                        *//************************************************************************/static OGRFeature *TranslateStrategiPoint( NTFFileReader *poReader,                                           OGRNTFLayer *poLayer,                                           NTFRecord **papoGroup ){    if( CSLCount((char **) papoGroup) < 2        || papoGroup[0]->GetType() != NRT_POINTREC        || papoGroup[1]->GetType() != NRT_GEOMETRY )        return NULL;            OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // POINT_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // Geometry    int         nGeomId;        poFeature->SetGeometryDirectly(poReader->ProcessGeometry(papoGroup[1],                                                             &nGeomId));    // GEOM_ID    poFeature->SetField( 10, nGeomId );    // Attributes    poReader->ApplyAttributeValues( poFeature, papoGroup,                                    "FC", 1, "PN", 2, "NU", 3, "RB", 4,                                    "RU", 5, "AN", 6, "AO", 7, "CM", 8,                                    "UN", 9,                                     NULL );    return poFeature;}/************************************************************************//*                       TranslateStrategiLine()                        *//************************************************************************/static OGRFeature *TranslateStrategiLine( NTFFileReader *poReader,                                          OGRNTFLayer *poLayer,                                          NTFRecord **papoGroup ){    if( CSLCount((char **) papoGroup) < 2        || papoGroup[0]->GetType() != NRT_LINEREC        || papoGroup[1]->GetType() != NRT_GEOMETRY )        return NULL;            OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // LINE_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // Geometry    int         nGeomId;        poFeature->SetGeometryDirectly(poReader->ProcessGeometry(papoGroup[1],                                                             &nGeomId));    // GEOM_ID    poFeature->SetField( 3, nGeomId );    // Attributes    poReader->ApplyAttributeValues( poFeature, papoGroup,                                    "FC", 1,                                    "PN", 2,                                    NULL );    return poFeature;}/************************************************************************//*                      TranslateLandrangerPoint()                      *//************************************************************************/static OGRFeature *TranslateLandrangerPoint( NTFFileReader *poReader,                                             OGRNTFLayer *poLayer,                                             NTFRecord **papoGroup ){    if( CSLCount((char **) papoGroup) != 2        || papoGroup[0]->GetType() != NRT_POINTREC        || papoGroup[1]->GetType() != NRT_GEOMETRY )        return NULL;            OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // POINT_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // FEAT_CODE    poFeature->SetField( 1, papoGroup[0]->GetField( 17, 20 ) );    // HEIGHT    poFeature->SetField( 2, atoi(papoGroup[0]->GetField( 11, 16 )) );        // Geometry    poFeature->SetGeometryDirectly(poReader->ProcessGeometry(papoGroup[1]));    return poFeature;}/************************************************************************//*                      TranslateLandrangerLine()                       *//************************************************************************/static OGRFeature *TranslateLandrangerLine( NTFFileReader *poReader,                                            OGRNTFLayer *poLayer,                                            NTFRecord **papoGroup ){    if( CSLCount((char **) papoGroup) != 2        || papoGroup[0]->GetType() != NRT_LINEREC        || papoGroup[1]->GetType() != NRT_GEOMETRY )        return NULL;            OGRFeature  *poFeature = new OGRFeature( poLayer->GetLayerDefn() );    // LINE_ID    poFeature->SetField( 0, atoi(papoGroup[0]->GetField( 3, 8 )) );    // FEAT_CODE    poFeature->SetField( 1, papoGroup[0]->GetField( 17, 20 ) );    // HEIGHT    poFeature->SetField( 2, atoi(papoGroup[0]->GetField( 11, 16 )) );    // Geometry    poFeature->SetGeometryDirectly(poReader->ProcessGeometry(papoGroup[1]));    return poFeature;}/************************************************************************//*                       TranslateProfilePoint()                        *//************************************************************************/static OGRFeature *TranslateProfilePoint( NTFFileReader *poReader,                                          OGRNTFLayer *poLayer,                                          NTFRecord **papoGroup )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -