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

📄 tigercompletechain.cpp

📁 支持各种栅格图像和矢量图像读取的库
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************** * $Id: tigercompletechain.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  TIGER/Line Translator * Purpose:  Implements TigerCompleteChain, providing access to RT1 and *           related files. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, Frank Warmerdam * * 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_tiger.h"#include "cpl_conv.h"CPL_CVSID("$Id: tigercompletechain.cpp 10646 2007-01-18 02:38:10Z warmerdam $");static TigerFieldInfo rt1_2002_fields[] = {  // fieldname    fmt  type OFTType      beg  end  len  bDefine bSet bWrite  { "MODULE",     ' ', ' ', OFTString,     0,   0,   8,       1,   0,     0 },  { "TLID",       'R', 'N', OFTInteger,    6,  15,  10,       1,   1,     1 },  { "SIDE1",      'R', 'N', OFTInteger,   16,  16,   1,       1,   1,     1 },  { "SOURCE",     'L', 'A', OFTString,    17,  17,   1,       1,   1,     1 },  { "FEDIRP",     'L', 'A', OFTString,    18,  19,   2,       1,   1,     1 },  { "FENAME",     'L', 'A', OFTString,    20,  49,  30,       1,   1,     1 },  { "FETYPE",     'L', 'A', OFTString,    50,  53,   4,       1,   1,     1 },  { "FEDIRS",     'L', 'A', OFTString,    54,  55,   2,       1,   1,     1 },  { "CFCC",       'L', 'A', OFTString,    56,  58,   3,       1,   1,     1 },  { "FRADDL",     'R', 'A', OFTString,    59,  69,  11,       1,   1,     1 },  { "TOADDL",     'R', 'A', OFTString,    70,  80,  11,       1,   1,     1 },  { "FRADDR",     'R', 'A', OFTString,    81,  91,  11,       1,   1,     1 },  { "TOADDR",     'R', 'A', OFTString,    92, 102,  11,       1,   1,     1 },  { "FRIADDL",    'L', 'A', OFTString,   103, 103,   1,       1,   1,     1 },  { "TOIADDL",    'L', 'A', OFTString,   104, 104,   1,       1,   1,     1 },  { "FRIADDR",    'L', 'A', OFTString,   105, 105,   1,       1,   1,     1 },  { "TOIADDR",    'L', 'A', OFTString,   106, 106,   1,       1,   1,     1 },  { "ZIPL",       'L', 'N', OFTInteger,  107, 111,   5,       1,   1,     1 },  { "ZIPR",       'L', 'N', OFTInteger,  112, 116,   5,       1,   1,     1 },  { "AIANHHFPL",  'L', 'N', OFTInteger,  117, 121,   5,       1,   1,     1 },  { "AIANHHFPR",  'L', 'N', OFTInteger,  122, 126,   5,       1,   1,     1 },  { "AIHHTLIL",   'L', 'A', OFTString,   127, 127,   1,       1,   1,     1 },  { "AIHHTLIR",   'L', 'A', OFTString,   128, 128,   1,       1,   1,     1 },  { "CENSUS1",    'L', 'A', OFTString,   129, 129,   1,       1,   1,     1 },  { "CENSUS2",    'L', 'A', OFTString,   130, 130,   1,       1,   1,     1 },  { "STATEL",     'L', 'N', OFTInteger,  131, 132,   2,       1,   1,     1 },  { "STATER",     'L', 'N', OFTInteger,  133, 134,   2,       1,   1,     1 },  { "COUNTYL",    'L', 'N', OFTInteger,  135, 137,   3,       1,   1,     1 },  { "COUNTYR",    'L', 'N', OFTInteger,  138, 140,   3,       1,   1,     1 },  { "COUSUBL",    'L', 'N', OFTInteger,  141, 145,   5,       1,   1,     1 },  { "COUSUBR",    'L', 'N', OFTInteger,  146, 150,   5,       1,   1,     1 },  { "SUBMCDL",    'L', 'N', OFTInteger,  151, 155,   5,       1,   1,     1 },  { "SUBMCDR",    'L', 'N', OFTInteger,  156, 160,   5,       1,   1,     1 },  { "PLACEL",     'L', 'N', OFTInteger,  161, 165,   5,       1,   1,     1 },  { "PLACER",     'L', 'N', OFTInteger,  166, 170,   5,       1,   1,     1 },  { "TRACTL",     'L', 'N', OFTInteger,  171, 176,   6,       1,   1,     1 },  { "TRACTR",     'L', 'N', OFTInteger,  177, 182,   6,       1,   1,     1 },  { "BLOCKL",     'L', 'N', OFTInteger,  183, 186,   4,       1,   1,     1 },  { "BLOCKR",     'L', 'N', OFTInteger,  187, 190,   4,       1,   1,     1 }};static TigerRecordInfo rt1_2002_info =  {    rt1_2002_fields,    sizeof(rt1_2002_fields) / sizeof(TigerFieldInfo),    228  };static TigerFieldInfo rt1_fields[] = {  // fieldname    fmt  type OFTType      beg  end   len  bDefine bSet bWrite  { "MODULE",     ' ', ' ', OFTString,     0,   0,   8,       1,   0,     0 },  { "TLID",       'R', 'N', OFTInteger,    6,  15,  10,       1,   1,     1 },  { "SIDE1",      'R', 'N', OFTInteger,   16,  16,   1,       1,   1,     1 },  { "SOURCE",     'L', 'A', OFTString,    17,  17,   1,       1,   1,     1 },  { "FEDIRP",     'L', 'A', OFTString,    18,  19,   2,       1,   1,     1 },  { "FENAME",     'L', 'A', OFTString,    20,  49,  30,       1,   1,     1 },  { "FETYPE",     'L', 'A', OFTString,    50,  53,   4,       1,   1,     1 },  { "FEDIRS",     'L', 'A', OFTString,    54,  55,   2,       1,   1,     1 },  { "CFCC",       'L', 'A', OFTString,    56,  58,   3,       1,   1,     1 },  { "FRADDL",     'R', 'A', OFTString,    59,  69,  11,       1,   1,     1 },  { "TOADDL",     'R', 'A', OFTString,    70,  80,  11,       1,   1,     1 },  { "FRADDR",     'R', 'A', OFTString,    81,  91,  11,       1,   1,     1 },  { "TOADDR",     'R', 'A', OFTString,    92, 102,  11,       1,   1,     1 },  { "FRIADDL",    'L', 'A', OFTInteger,  103, 103,   1,       1,   1,     1 },  { "TOIADDL",    'L', 'A', OFTInteger,  104, 104,   1,       1,   1,     1 },  { "FRIADDR",    'L', 'A', OFTInteger,  105, 105,   1,       1,   1,     1 },  { "TOIADDR",    'L', 'A', OFTInteger,  106, 106,   1,       1,   1,     1 },  { "ZIPL",       'L', 'N', OFTInteger,  107, 111,   5,       1,   1,     1 },  { "ZIPR",       'L', 'N', OFTInteger,  112, 116,   5,       1,   1,     1 },  { "FAIRL",      'L', 'N', OFTInteger,  117, 121,   5,       1,   1,     1 },  { "FAIRR",      'L', 'N', OFTInteger,  122, 126,   5,       1,   1,     1 },  { "TRUSTL",     'L', 'A', OFTString,   127, 127,   1,       1,   1,     1 },  { "TRUSTR",     'L', 'A', OFTString,   128, 128,   1,       1,   1,     1 },  { "CENSUS1",    'L', 'A', OFTString,   129, 129,   1,       1,   1,     1 },  { "CENSUS2",    'L', 'A', OFTString,   130, 130,   1,       1,   1,     1 },  { "STATEL",     'L', 'N', OFTInteger,  131, 132,   2,       1,   1,     1 },  { "STATER",     'L', 'N', OFTInteger,  133, 134,   2,       1,   1,     1 },  { "COUNTYL",    'L', 'N', OFTInteger,  135, 137,   3,       1,   1,     1 },  { "COUNTYR",    'L', 'N', OFTInteger,  138, 140,   3,       1,   1,     1 },  { "FMCDL",      'L', 'N', OFTInteger,  141, 145,   5,       1,   1,     1 },  { "FMCDR",      'L', 'N', OFTInteger,  146, 150,   5,       1,   1,     1 },  { "FSMCDL",     'L', 'N', OFTInteger,  151, 155,   5,       1,   1,     1 },  { "FSMCDR",     'L', 'N', OFTInteger,  156, 160,   5,       1,   1,     1 },  { "FPLL",       'L', 'N', OFTInteger,  161, 165,   5,       1,   1,     1 },  { "FPLR",       'L', 'N', OFTInteger,  166, 170,   5,       1,   1,     1 },  { "CTBNAL",     'L', 'N', OFTInteger,  171, 176,   6,       1,   1,     1 },  { "CTBNAR",     'L', 'N', OFTInteger,  177, 182,   6,       1,   1,     1 },  { "BLKL",       'L', 'N', OFTString,   183, 186,   4,       1,   1,     1 },  { "BLKR",       'L', 'N', OFTString,   187, 190,   4,       1,   1,     1 }}; static TigerRecordInfo rt1_info =  {    rt1_fields,    sizeof(rt1_fields) / sizeof(TigerFieldInfo),    228  };static TigerRecordInfo rt2_info =  {    NULL,       // RT2 is handled specially in the code below; the only    0,          // thing from this structure that is used is:    208         // <--- nRecordLength  };static TigerFieldInfo rt3_2000_Redistricting_fields[] = {  // fieldname    fmt  type OFTType       beg  end  len  bDefine bSet bWrite  { "TLID",       'R', 'N', OFTInteger,     6,  15,  10,       0,   0,     1 },  { "STATE90L",   'L', 'N', OFTInteger,    16,  17,   2,       1,   1,     1 },  { "STATE90R",   'L', 'N', OFTInteger,    18,  19,   2,       1,   1,     1 },  { "COUN90L",    'L', 'N', OFTInteger,    20,  22,   3,       1,   1,     1 },  { "COUN90R",    'L', 'N', OFTInteger,    23,  25,   3,       1,   1,     1 },  { "FMCD90L",    'L', 'N', OFTInteger,    26,  30,   5,       1,   1,     1 },  { "FMCD90R",    'L', 'N', OFTInteger,    31,  35,   5,       1,   1,     1 },  { "FPL90L",     'L', 'N', OFTInteger,    36,  40,   5,       1,   1,     1 },  { "FPL90R",     'L', 'N', OFTInteger,    41,  45,   5,       1,   1,     1 },  { "CTBNA90L",   'L', 'N', OFTInteger,    46,  51,   6,       1,   1,     1 },  { "CTBNA90R",   'L', 'N', OFTInteger,    52,  57,   6,       1,   1,     1 },  { "AIR90L",     'L', 'N', OFTInteger,    58,  61,   4,       1,   1,     1 },  { "AIR90R",     'L', 'N', OFTInteger,    62,  65,   4,       1,   1,     1 },  { "TRUST90L",   'L', 'A', OFTString,     66,  66,   1,       1,   1,     1 },  { "TRUST90R",   'L', 'A', OFTString,     67,  67,   1,       1,   1,     1 },  { "BLK90L",     'L', 'A', OFTString,     70,  73,   4,       1,   1,     1 },  { "BLK90R",     'L', 'A', OFTString,     74,  77,   4,       1,   1,     1 },  { "AIRL",       'L', 'N', OFTInteger,    78,  81,   4,       1,   1,     1 },  { "AIRR",       'L', 'N', OFTInteger,    82,  85,   4,       1,   1,     1 },  { "ANRCL",      'L', 'N', OFTInteger,    86,  90,   5,       1,   1,     1 },  { "ANRCR",      'L', 'N', OFTInteger,    91,  95,   5,       1,   1,     1 },  { "AITSCEL",    'L', 'N', OFTInteger,    96,  98,   3,       1,   1,     1 },  { "AITSCER",    'L', 'N', OFTInteger,    99, 101,   3,       1,   1,     1 },  { "AITSL",      'L', 'N', OFTInteger,   102, 106,   5 ,      1,   1,     1 },  { "AITSR",      'L', 'N', OFTInteger,   107, 111,   5,       1,   1,     1 }};static TigerRecordInfo rt3_2000_Redistricting_info  =  {    rt3_2000_Redistricting_fields,    sizeof(rt3_2000_Redistricting_fields) / sizeof(TigerFieldInfo),    111  };static TigerFieldInfo rt3_fields[] = {  // fieldname    fmt  type OFTType       beg  end  len  bDefine bSet bWrite  { "TLID",       'R', 'N', OFTInteger,     6,  15,  10,       0,   0,     1 },  { "STATE90L",   'L', 'N', OFTInteger,    16,  17,   2,       1,   1,     1 },  { "STATE90R",   'L', 'N', OFTInteger,    18,  19,   2,       1,   1,     1 },  { "COUN90L",    'L', 'N', OFTInteger,    20,  22,   3,       1,   1,     1 },  { "COUN90R",    'L', 'N', OFTInteger,    23,  25,   3,       1,   1,     1 },  { "FMCD90L",    'L', 'N', OFTInteger,    26,  30,   5,       1,   1,     1 },  { "FMCD90R",    'L', 'N', OFTInteger,    31,  35,   5,       1,   1,     1 },  { "FPL90L",     'L', 'N', OFTInteger,    36,  40,   5,       1,   1,     1 },  { "FPL90R",     'L', 'N', OFTInteger,    41,  45,   5,       1,   1,     1 },  { "CTBNA90L",   'L', 'N', OFTInteger,    46,  51,   6,       1,   1,     1 },  { "CTBNA90R",   'L', 'N', OFTInteger,    52,  57,   6,       1,   1,     1 },  { "AIR90L",     'L', 'N', OFTInteger,    58,  61,   4,       1,   1,     1 },  { "AIR90R",     'L', 'N', OFTInteger,    62,  65,   4,       1,   1,     1 },  { "TRUST90L",   'L', 'A', OFTInteger,    66,  66,   1,       1,   1,     1 },  { "TRUST90R",   'L', 'A', OFTInteger,    67,  67,   1,       1,   1,     1 },  { "BLK90L",     'L', 'A', OFTString,     70,  73,   4,       1,   1,     1 },  { "BLK90R",     'L', 'A', OFTString,     74,  77,   4,       1,   1,     1 },  { "AIRL",       'L', 'N', OFTInteger,    78,  81,   4,       1,   1,     1 },  { "AIRR",       'L', 'N', OFTInteger,    82,  85,   4,       1,   1,     1 },   { "VTDL",       'L', 'A', OFTString,    104, 107,   4,       1,   1,     1 },  { "VTDR",       'L', 'A', OFTString,    108, 111,   4,       1,   1,     1 }};static TigerRecordInfo rt3_info =  {    rt3_fields,    sizeof(rt3_fields) / sizeof(TigerFieldInfo),    111  };/************************************************************************//*                         TigerCompleteChain()                         *//************************************************************************/TigerCompleteChain::TigerCompleteChain( OGRTigerDataSource * poDSIn,                                        const char * pszPrototypeModule ){    poDS = poDSIn;    poFeatureDefn = new OGRFeatureDefn( "CompleteChain" );    poFeatureDefn->Reference();    poFeatureDefn->SetGeomType( wkbLineString );    if (poDS->GetVersion() >= TIGER_2002) {      psRT1Info = &rt1_2002_info;      bUsingRT3 = FALSE;    } else {      psRT1Info = &rt1_info;      bUsingRT3 = TRUE;    }    psRT2Info = &rt2_info;    nRT1RecOffset = 0;    if (poDS->GetVersion() >= TIGER_2000_Redistricting) {      psRT3Info = &rt3_2000_Redistricting_info;    } else {      psRT3Info = &rt3_info;    }    fpRT3 = NULL;    panShapeRecordId = NULL;    fpShape = NULL;        /* -------------------------------------------------------------------- */    /*      Fields from type 1 record.                                      */    /* -------------------------------------------------------------------- */    AddFieldDefns( psRT1Info, poFeatureDefn );    /* -------------------------------------------------------------------- */    /*      Fields from type 3 record.  Eventually we should verify that    */    /*      a .RT3 file is available before adding these fields.            */    /* -------------------------------------------------------------------- */    if( bUsingRT3 ) {      AddFieldDefns( psRT3Info, poFeatureDefn );    }}/************************************************************************//*                        ~TigerCompleteChain()                         *//************************************************************************/TigerCompleteChain::~TigerCompleteChain()

⌨️ 快捷键说明

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