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

📄 tigerpolygon.cpp

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** * $Id: tigerpolygon.cpp,v 1.13 2003/08/27 02:26:03 warmerda Exp $ * * Project:  TIGER/Line Translator * Purpose:  Implements TigerPolygon, providing access to .RTA 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: tigerpolygon.cpp,v $ * Revision 1.13  2003/08/27 02:26:03  warmerda * fixed bug with UGA, BLKGRP and VTF fields in 2002 RTS redistricting format * * Revision 1.12  2003/08/18 14:47:53  warmerda * upgraded with *untested* TIGER 2003 support * * Revision 1.11  2003/01/14 01:35:30  mbp * Corrected a few field lengths * * Revision 1.10  2003/01/11 15:29:55  warmerda * expanded tabs * * Revision 1.9  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.8  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.7  2001/07/19 16:05:49  warmerda * clear out tabs * * Revision 1.6  2001/07/18 04:55:16  warmerda * added CPL_CSVID * * Revision 1.5  2001/07/04 23:25:32  warmerda * first round implementation of writer * * Revision 1.4  2001/07/04 05:40:35  warmerda * upgraded to support FILE, and Tiger2000 schema * * Revision 1.3  2001/01/19 21:15:20  warmerda * expanded tabs * * Revision 1.2  2000/01/13 05:18:11  warmerda * added support for multiple versions * * Revision 1.1  1999/12/22 15:37:59  warmerda * New * */#include "ogr_tiger.h"#include "cpl_conv.h"CPL_CVSID("$Id: tigerpolygon.cpp,v 1.13 2003/08/27 02:26:03 warmerda Exp $");static TigerFieldInfo rtA_2002_fields[] = {  // fieldname    fmt  type OFTType      beg  end  len  bDefine bSet bWrite  { "MODULE",     ' ', ' ', OFTString,     0,   0,   8,       1,   0,     0 },  { "FILE",       'L', 'N', OFTInteger,    6,  10,   5,       1,   1,     1 },  { "CENID",      'L', 'A', OFTString,    11,  15,   5,       1,   1,     1 },  { "POLYID",     'R', 'N', OFTInteger,   16,  25,  10,       1,   1,     1 },  { "STATECU",    'L', 'N', OFTInteger,   26,  27,   2,       1,   1,     1 },  { "COUNTYCU",   'L', 'N', OFTInteger,   28,  30,   3,       1,   1,     1 },  { "TRACT",      'L', 'N', OFTInteger,   31,  36,   6,       1,   1,     1 },  { "BLOCK",      'L', 'N', OFTInteger,   37,  40,   4,       1,   1,     1 },  { "BLOCKSUFCU", 'L', 'A', OFTString,    41,  41,   1,       1,   1,     1 },  { "RS_A1",      'L', 'A', OFTString,    42,  42,   1,       1,   1,     1 },  { "AIANHHFPCU", 'L', 'N', OFTInteger,   43,  47,   5,       1,   1,     1 },  { "AIANHHCU",   'L', 'N', OFTInteger,   48,  51,   4,       1,   1,     1 },  { "AIHHTLICU",  'L', 'A', OFTString,    52,  52,   1,       1,   1,     1 },  { "ANRCCU",     'L', 'N', OFTInteger,   53,  57,   5,       1,   1,     1 },  { "AITSCECU",   'L', 'N', OFTInteger,   58,  60,   3,       1,   1,     1 },  { "AITSCU",     'L', 'N', OFTInteger,   61,  65,   5,       1,   1,     1 },  { "CONCITCU",   'L', 'N', OFTInteger,   66,  70,   5,       1,   1,     1 },  { "COUSUBCU",   'L', 'N', OFTInteger,   71,  75,   5,       1,   1,     1 },  { "SUBMCDCU",   'L', 'N', OFTInteger,   76,  80,   5,       1,   1,     1 },  { "PLACECU",    'L', 'N', OFTInteger,   81,  85,   5,       1,   1,     1 },  { "SDELMCU",    'L', 'A', OFTString,    86,  90,   5,       1,   1,     1 },  { "SDSECCU",    'L', 'A', OFTString,    91,  95,   5,       1,   1,     1 },  { "SDUNICU",    'L', 'A', OFTString,    96, 100,   5,       1,   1,     1 },  { "MSACMSACU",  'L', 'N', OFTInteger,  101, 104,   4,       1,   1,     1 },  { "PMSACU",     'L', 'N', OFTInteger,  105, 108,   4,       1,   1,     1 },  { "NECMACU",    'L', 'N', OFTInteger,  109, 112,   4,       1,   1,     1 },  { "CDCU",       'R', 'N', OFTInteger,  113, 114,   2,       1,   1,     1 },  { "RS_A2",      'L', 'A', OFTString,   115, 119,   5,       1,   1,     1 },  { "RS_A3",      'R', 'A', OFTString,   120, 122,   3,       1,   1,     1 },  { "RS_A4",      'R', 'A', OFTString,   123, 128,   6,       1,   1,     1 },  { "RS_A5",      'R', 'A', OFTString,   129, 131,   3,       1,   1,     1 },  { "RS_A6",      'R', 'A', OFTString,   132, 134,   3,       1,   1,     1 },  { "RS_A7",      'R', 'A', OFTString,   135, 139,   5,       1,   1,     1 },  { "RS_A8",      'R', 'A', OFTString,   140, 145,   6,       1,   1,     1 },  { "RS_A9",      'L', 'A', OFTString,   146, 151,   6,       1,   1,     1 },  { "RS_A10",     'L', 'A', OFTString,   152, 157,   6,       1,   1,     1 },  { "RS_A11",     'L', 'A', OFTString,   158, 163,   6,       1,   1,     1 },  { "RS_A12",     'L', 'A', OFTString,   164, 169,   6,       1,   1,     1 },  { "RS_A13",     'L', 'A', OFTString,   170, 175,   6,       1,   1,     1 },  { "RS_A14",     'L', 'A', OFTString,   176, 181,   6,       1,   1,     1 },  { "RS_A15",     'L', 'A', OFTString,   182, 186,   5,       1,   1,     1 },  { "RS_A16",     'L', 'A', OFTString,   187, 187,   1,       1,   1,     1 },  { "RS_A17",     'L', 'A', OFTString,   188, 193,   6,       1,   1,     1 },  { "RS_A18",     'L', 'A', OFTString,   194, 199,   6,       1,   1,     1 },  { "RS_A19",     'L', 'A', OFTString,   200, 210,  11,       1,   1,     1 },};static TigerRecordInfo rtA_2002_info =  {    rtA_2002_fields,    sizeof(rtA_2002_fields) / sizeof(TigerFieldInfo),    210  };static TigerFieldInfo rtA_2003_fields[] = {  // fieldname    fmt  type OFTType      beg  end  len  bDefine bSet bWrite  { "MODULE",     ' ', ' ', OFTString,     0,   0,   8,       1,   0,     0 },  { "FILE",       'L', 'N', OFTInteger,    6,  10,   5,       1,   1,     1 },  { "CENID",      'L', 'A', OFTString,    11,  15,   5,       1,   1,     1 },  { "POLYID",     'R', 'N', OFTInteger,   16,  25,  10,       1,   1,     1 },  { "STATECU",    'L', 'N', OFTInteger,   26,  27,   2,       1,   1,     1 },  { "COUNTYCU",   'L', 'N', OFTInteger,   28,  30,   3,       1,   1,     1 },  { "TRACT",      'L', 'N', OFTInteger,   31,  36,   6,       1,   1,     1 },  { "BLOCK",      'L', 'N', OFTInteger,   37,  40,   4,       1,   1,     1 },  { "BLOCKSUFCU", 'L', 'A', OFTString,    41,  41,   1,       1,   1,     1 },  { "RS_A1",      'L', 'A', OFTString,    42,  42,   1,       1,   1,     1 },  { "AIANHHFPCU", 'L', 'N', OFTInteger,   43,  47,   5,       1,   1,     1 },  { "AIANHHCU",   'L', 'N', OFTInteger,   48,  51,   4,       1,   1,     1 },  { "AIHHTLICU",  'L', 'A', OFTString,    52,  52,   1,       1,   1,     1 },  { "ANRCCU",     'L', 'N', OFTInteger,   53,  57,   5,       1,   1,     1 },  { "AITSCECU",   'L', 'N', OFTInteger,   58,  60,   3,       1,   1,     1 },  { "AITSCU",     'L', 'N', OFTInteger,   61,  65,   5,       1,   1,     1 },  { "CONCITCU",   'L', 'N', OFTInteger,   66,  70,   5,       1,   1,     1 },  { "COUSUBCU",   'L', 'N', OFTInteger,   71,  75,   5,       1,   1,     1 },  { "SUBMCDCU",   'L', 'N', OFTInteger,   76,  80,   5,       1,   1,     1 },  { "PLACECU",    'L', 'N', OFTInteger,   81,  85,   5,       1,   1,     1 },  { "SDELMCU",    'L', 'A', OFTString,    86,  90,   5,       1,   1,     1 },  { "SDSECCU",    'L', 'A', OFTString,    91,  95,   5,       1,   1,     1 },  { "SDUNICU",    'L', 'A', OFTString,    96, 100,   5,       1,   1,     1 },  { "RS_A20",     'L', 'A', OFTString,   101, 104,   4,       1,   1,     1 },  { "RS_A21",     'L', 'A', OFTString,   105, 108,   4,       1,   1,     1 },  { "RS_A22",     'L', 'A', OFTString,   109, 112,   4,       1,   1,     1 },  { "CDCU",       'R', 'N', OFTInteger,  113, 114,   2,       1,   1,     1 },  { "ZCTA5CU",    'L', 'A', OFTString,   115, 119,   5,       1,   1,     1 },  { "ZCTA3CU",    'R', 'A', OFTString,   120, 122,   3,       1,   1,     1 },  { "RS_A4",      'R', 'A', OFTString,   123, 128,   6,       1,   1,     1 },  { "RS_A5",      'R', 'A', OFTString,   129, 131,   3,       1,   1,     1 },  { "RS_A6",      'R', 'A', OFTString,   132, 134,   3,       1,   1,     1 },  { "RS_A7",      'R', 'A', OFTString,   135, 139,   5,       1,   1,     1 },  { "RS_A8",      'R', 'A', OFTString,   140, 145,   6,       1,   1,     1 },  { "RS_A9",      'L', 'A', OFTString,   146, 151,   6,       1,   1,     1 },  { "CBSACU",     'L', 'A', OFTInteger,  152, 156,   5,       1,   1,     1 },  { "CSACU",      'L', 'A', OFTInteger,  157, 159,   3,       1,   1,     1 },  { "NECTACU",    'L', 'A', OFTInteger,  160, 164,   5,       1,   1,     1 },  { "CNECTACU",   'L', 'A', OFTInteger,  165, 167,   3,       1,   1,     1 },  { "METDIVCU",   'L', 'A', OFTInteger,  168, 172,   5,       1,   1,     1 },  { "NECTADIVCU", 'L', 'A', OFTInteger,  173, 177,   5,       1,   1,     1 },  { "RS_A14",     'L', 'A', OFTString,   178, 181,   4,       1,   1,     1 },  { "RS_A15",     'L', 'A', OFTString,   182, 186,   5,       1,   1,     1 },  { "RS_A16",     'L', 'A', OFTString,   187, 187,   1,       1,   1,     1 },  { "RS_A17",     'L', 'A', OFTString,   188, 193,   6,       1,   1,     1 },  { "RS_A18",     'L', 'A', OFTString,   194, 199,   6,       1,   1,     1 },  { "RS_A19",     'L', 'A', OFTString,   200, 210,  11,       1,   1,     1 },};static TigerRecordInfo rtA_2003_info =  {    rtA_2003_fields,    sizeof(rtA_2003_fields) / sizeof(TigerFieldInfo),    210  };static TigerFieldInfo rtA_fields[] = {  // fieldname    fmt  type OFTType      beg  end  len  bDefine bSet bWrite  { "MODULE",     ' ', ' ', OFTString,     0,   0,   8,       1,   0,     0 },  { "FILE",       'L', 'N', OFTString,     6,  10,   5,       1,   1,     1 },  { "STATE",      'L', 'N', OFTInteger,    6,   7,   2,       1,   1,     1 },  { "COUNTY",     'L', 'N', OFTInteger,    8,  10,   3,       1,   1,     1 },  { "CENID",      'L', 'A', OFTString,    11,  15,   5,       1,   1,     1 },  { "POLYID",     'R', 'N', OFTInteger,   16,  25,  10,       1,   1,     1 },  { "FAIR",       'L', 'N', OFTInteger,   26,  30,   5,       1,   1,     1 },  { "FMCD",       'L', 'N', OFTInteger,   31,  35,   5,       1,   1,     1 },  { "FPL",        'L', 'N', OFTInteger,   36,  40,   5,       1,   1,     1 },  { "CTBNA90",    'L', 'N', OFTInteger,   41,  46,   6,       1,   1,     1 },  { "BLK90",      'L', 'A', OFTString,    47,  50,   4,       1,   1,     1 },  { "CD106",      'L', 'N', OFTInteger,   51,  52,   2,       1,   1,     1 },  { "CD108",      'L', 'N', OFTInteger,   53,  54,   2,       1,   1,     1 },  { "SDELM",      'L', 'A', OFTString,    55,  59,   5,       1,   1,     1 },  { "SDSEC",      'L', 'N', OFTString,    65,  69,   5,       1,   1,     1 },  { "SDUNI",      'L', 'A', OFTString,    70,  74,   5,       1,   1,     1 },  { "TAZ",        'R', 'A', OFTString,    75,  80,   6,       1,   1,     1 },  { "UA",         'L', 'N', OFTInteger,   81,  84,   4,       1,   1,     1 },  { "URBFLAG",    'L', 'A', OFTString,    85,  85,   1,       1,   1,     1 },  { "CTPP",       'L', 'A', OFTString,    86,  89,   4,       1,   1,     1 },  { "STATE90",    'L', 'N', OFTInteger,   90,  91,   2,       1,   1,     1 },  { "COUN90",     'L', 'N', OFTInteger,   92,  94,   3,       1,   1,     1 },  { "AIR90",      'L', 'N', OFTInteger,   95,  98,   4,       1,   1,     1 }};static TigerRecordInfo rtA_info =  {    rtA_fields,    sizeof(rtA_fields) / sizeof(TigerFieldInfo),    98  };static TigerFieldInfo rtS_2002_fields[] = {  // fieldname    fmt  type OFTType      beg  end  len  bDefine bSet bWrite  { "FILE",       'L', 'N', OFTInteger,    6,  10,   5,       0,   0,     1 },  { "CENID",      'L', 'A', OFTString,    11,  15,   5,       0,   0,     1 },  { "POLYID",     'R', 'N', OFTInteger,   16,  25,  10,       0,   0,     1 },  { "STATE",      'L', 'N', OFTInteger,   26,  27,   2,       1,   1,     1 },  { "COUNTY",     'L', 'N', OFTInteger,   28,  30,   3,       1,   1,     1 },  { "TRACT",      'L', 'N', OFTInteger,   31,  36,   6,       0,   0,     1 },  { "BLOCK",      'L', 'N', OFTInteger,   37,  40,   4,       0,   0,     1 },  { "BLKGRP",     'L', 'N', OFTInteger,   41,  41,   1,       1,   1,     1 },  { "AIANHHFP",   'L', 'N', OFTInteger,   42,  46,   5,       1,   1,     1 },  { "AIANHH",     'L', 'N', OFTInteger,   47,  50,   4,       1,   1,     1 },  { "AIHHTLI",    'L', 'A', OFTString,    51,  51,   1,       1,   1,     1 },  { "ANRC",       'L', 'N', OFTInteger,   52,  56,   5,       1,   1,     1 },  { "AITSCE",     'L', 'N', OFTInteger,   57,  59,   3,       1,   1,     1 },  { "AITS",       'L', 'N', OFTInteger,   60,  64,   5,       1,   1,     1 },  { "CONCIT",     'L', 'N', OFTInteger,   65,  69,   5,       1,   1,     1 },  { "COUSUB",     'L', 'N', OFTInteger,   70,  74,   5,       1,   1,     1 },  { "SUBMCD",     'L', 'N', OFTInteger,   75,  79,   5,       1,   1,     1 },  { "PLACE",      'L', 'N', OFTInteger,   80,  84,   5,       1,   1,     1 },  { "SDELM",      'L', 'N', OFTInteger,   85,  89,   5,       1,   1,     1 },  { "SDSEC",      'L', 'N', OFTInteger,   90,  94,   5,       1,   1,     1 },  { "SDUNI",      'L', 'N', OFTInteger,   95,  99,   5,       1,   1,     1 },  { "MSACMSA",    'L', 'N', OFTInteger,  100, 103,   4,       1,   1,     1 },  { "PMSA",       'L', 'N', OFTInteger,  104, 107,   4,       1,   1,     1 },  { "NECMA",      'L', 'N', OFTInteger,  108, 111,   4,       1,   1,     1 },  { "CD106",      'L', 'N', OFTInteger,  112, 113,   2,       1,   1,     1 },  // Note: spec has CD106 with 'R', but sample data file (08005) seems to  // have been written with 'L', so I'm using 'L' here.  mbp Tue Dec 24 19:03:40 2002  { "CD108",      'R', 'N', OFTInteger,  114, 115,   2,       1,   1,     1 },  { "PUMA5",      'L', 'N', OFTInteger,  116, 120,   5,       1,   1,     1 },  { "PUMA1",      'L', 'N', OFTInteger,  121, 125,   5,       1,   1,     1 },  { "ZCTA5",      'L', 'A', OFTString,   126, 130,   5,       1,   1,     1 },  { "ZCTA3",      'L', 'A', OFTString,   131, 133,   3,       1,   1,     1 },  { "TAZ",        'L', 'A', OFTString,   134, 139,   6,       1,   1,     1 },  { "TAZCOMB",    'L', 'A', OFTString,   140, 145,   6,       1,   1,     1 },  { "UA",         'L', 'N', OFTInteger,  146, 150,   5,       1,   1,     1 },  { "UR",         'L', 'A', OFTString,   151, 151,   1,       1,   1,     1 },  { "VTD",        'R', 'A', OFTString,   152, 157,   6,       1,   1,     1 },  { "SLDU",       'R', 'A', OFTString,   158, 160,   3,       1,   1,     1 },  { "SLDL",       'R', 'A', OFTString,   161, 163,   3,       1,   1,     1 },  { "UGA",        'L', 'A', OFTString,   164, 168,   5,       1,   1,     1 },};static TigerRecordInfo rtS_2002_info =  {    rtS_2002_fields,    sizeof(rtS_2002_fields) / sizeof(TigerFieldInfo),    168  };static TigerFieldInfo rtS_2000_Redistricting_fields[] = {  { "FILE",       'L', 'N', OFTString,     6,  10,   5,       0,   0,     1 },  { "STATE",      'L', 'N', OFTInteger,    6,   7,   2,       0,   0,     1 },  { "COUNTY",     'L', 'N', OFTInteger,    8,  10,   3,       0,   0,     1 },  { "CENID",      'L', 'A', OFTString,    11,  15,   5,       0,   0,     1 },  { "POLYID",     'R', 'N', OFTInteger,   16,  25,  10,       0,   0,     1 },  { "WATER",      'L', 'N', OFTString,    26,  26,   1,       1,   1,     1 },  { "CMSAMSA",    'L', 'N', OFTInteger,   27,  30,   4,       1,   1,     1 },  { "PMSA",       'L', 'N', OFTInteger,   31,  34,   4,       1,   1,     1 },  { "AIANHH",     'L', 'N', OFTInteger,   35,  39,   5,       1,   1,     1 },  { "AIR",        'L', 'N', OFTInteger,   40,  43,   4,       1,   1,     1 },  { "TRUST",      'L', 'A', OFTString,    44,  44,   1,       1,   1,     1 },  { "ANRC",       'L', 'A', OFTInteger,   45,  46,   2,       1,   1,     1 },  { "STATECU",    'L', 'N', OFTInteger,   47,  48,   2,       1,   1,     1 },  { "COUNTYCU",   'L', 'N', OFTInteger,   49,  51,   3,       1,   1,     1 },  { "FCCITY",     'L', 'N', OFTInteger,   52,  56,   5,       1,   1,     1 },  { "FMCD",       'L', 'N', OFTInteger,   57,  61,   5,       0,   0,     1 },  { "FSMCD",      'L', 'N', OFTInteger,   62,  66,   5,       1,   1,     1 },  { "PLACE",      'L', 'N', OFTInteger,   67,  71,   5,       1,   1,     1 },  { "CTBNA00",    'L', 'N', OFTInteger,   72,  77,   6,       1,   1,     1 },  { "BLK00",      'L', 'N', OFTString,    78,  81,   4,       1,   1,     1 },  { "RS10",       'R', 'N', OFTInteger,   82,  82,   0,       0,   1,     1 },  { "CDCU",       'L', 'N', OFTInteger,   83,  84,   2,       1,   1,     1 },

⌨️ 快捷键说明

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