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

📄 tigercompletechain.cpp

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************** * $Id: tigercompletechain.cpp,v 1.20 2004/10/05 19:30:44 fwarmerdam Exp $ * * Project:  TIGER/Line Translator * Purpose:  Implements TigerCompleteChain, providing access to RT1 and *           related files. * Author:   Frank Warmerdam, warmerda@home.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. ****************************************************************************** * * $Log: tigercompletechain.cpp,v $ * Revision 1.20  2004/10/05 19:30:44  fwarmerdam * Added bug fix for a "full" shape record at the end of the .RT2 file. * http://bugzilla.remotesensing.org/show_bug.cgi?id=628 * * Revision 1.19  2004/02/12 16:00:03  warmerda * failure to open shapefile is no longer an error, just a warning * * Revision 1.18  2004/02/12 06:39:16  warmerda * added preliminary support for some GDT quirks * * Revision 1.17  2004/02/03 05:46:00  warmerda * fixed problem with chains at EOF without shape points being dropped * * Revision 1.16  2004/01/13 17:23:49  warmerda * recover more gracefully from RT2 open errors * * Revision 1.15  2003/10/15 19:09:46  warmerda * fixed memory leak of panShapeRecordId array * * Revision 1.14  2003/01/11 15:29:55  warmerda * expanded tabs * * Revision 1.13  2003/01/04 23:21:56  mbp * Minor bug fixes and field definition changes.  Cleaned * up and commented code written for TIGER 2002 support. * * Revision 1.12  2002/12/28 21:45:05  warmerda * oncall uses spaces instead of zero for null vertices in .RT2 file * * Revision 1.11  2002/12/26 00:20:19  mbp * re-organized code to hold TIGER-version details in TigerRecordInfo structs; * first round implementation of TIGER_2002 support * * Revision 1.10  2001/07/19 16:05:49  warmerda * clear out tabs * * Revision 1.9  2001/07/18 04:55:16  warmerda * added CPL_CSVID * * Revision 1.8  2001/07/04 23:25:32  warmerda * first round implementation of writer * * Revision 1.7  2001/07/04 05:40:35  warmerda * upgraded to support FILE, and Tiger2000 schema * * Revision 1.6  2001/07/04 03:08:21  warmerda * fixed FRADDL width * * Revision 1.5  2001/01/19 21:15:20  warmerda * expanded tabs * * Revision 1.4  2000/01/13 05:18:11  warmerda * added support for multiple versions * * Revision 1.3  1999/12/22 15:38:15  warmerda * major update * * Revision 1.2  1999/11/04 21:14:31  warmerda * various improvements, and TestCapability() * * Revision 1.1  1999/10/07 18:19:21  warmerda * New * */#include "ogr_tiger.h"#include "cpl_conv.h"CPL_CVSID("$Id: tigercompletechain.cpp,v 1.20 2004/10/05 19:30:44 fwarmerdam Exp $");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->SetGeomType( wkbLineString );    if (poDS->GetVersion() >= TIGER_2002) {

⌨️ 快捷键说明

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