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

📄 mitab_spatialref.cpp

📁 mitab,读取MapInfo的地图文件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{78, "Oman",                        6, -346, -1,   224, 0, 0, 0, 0, 0},
{79, "OSGB_1936",                   9, 375,  -111, 431, 0, 0, 0, 0, 0},
{80, "Pico_De_Las_Nieves",          4, -307, -92,  127, 0, 0, 0, 0, 0},
{81, "Pitcairn_Astro_1967",         4, 185,  165,  42,  0, 0, 0, 0, 0},
{82, "Provisional_South_American",  4, -288, 175,  -376,0, 0, 0, 0, 0},
{83, "Puerto_Rico",                 7, 11,   72,   -101,0, 0, 0, 0, 0},
{84, "Qatar_National",              4, -128, -283, 22,  0, 0, 0, 0, 0},
{85, "Qornoq",                      4, 164,  138, -189, 0, 0, 0, 0, 0},
{86, "Reunion",                     4, 94,   -948,-1262,0, 0, 0, 0, 0},
{87, "Monte_Mario",                 4, -225, -65, 9,    0, 0, 0, 0, 0},
{88, "Santo_Dos",                   4, 170,  42,  84,   0, 0, 0, 0, 0},
{89, "Sao_Braz",                    4, -203, 141, 53,   0, 0, 0, 0, 0},
{90, "Sapper_Hill_1943",            4, -355, 16,  74,   0, 0, 0, 0, 0},
{91, "Schwarzeck",                  14,616,  97,  -251, 0, 0, 0, 0, 0},
{92, "South_American_Datum_1969",   24,-57,  1,   -41,  0, 0, 0, 0, 0},
{93, "South_Asia",                  19,7,    -10, -26,  0, 0, 0, 0, 0},
{94, "Southeast_Base",              4, -499, -249,314,  0, 0, 0, 0, 0},
{95, "Southwest_Base",              4, -104, 167, -38,  0, 0, 0, 0, 0},
{96, "Timbalai_1948",               11,-689, 691, -46,  0, 0, 0, 0, 0},
{97, "Tokyo",                       10,-128, 481, 664,  0, 0, 0, 0, 0},
{98, "Tristan_Astro_1968",          4, -632, 438, -609, 0, 0, 0, 0, 0},
{99, "Viti_Levu_1916",              6, 51,   391, -36,  0, 0, 0, 0, 0},
{100, "Wake_Entiwetok_1960",        23,101,  52,  -39,  0, 0, 0, 0, 0},
{101, "WGS_60",                     26,0,    0,   0,    0, 0, 0, 0, 0},
{102, "WGS_66",                     27,0,    0,   0,    0, 0, 0, 0, 0},
{103, "WGS_1972",                   1, 0,    8,   10,   0, 0, 0, 0, 0},
{104, "WGS_1984",                   28,0,    0,   0,    0, 0, 0, 0, 0},
{105, "Yacare",                     4, -155, 171, 37,   0, 0, 0, 0, 0},
{106, "Zanderij",                   4, -265, 120, -358, 0, 0, 0, 0, 0},
{107, "NTF",                        30,-168, -60, 320,  0, 0, 0, 0, 0},
{108, "European_Datum_1987",        4, -83,  -96, -113, 0, 0, 0, 0, 0},
{109, "Netherlands_Bessel",         10,593,  26,  478,  0, 0, 0, 0, 0},
{110, "Belgium_Hayford",            4, 81,   120, 129,  0, 0, 0, 0, 0},
{111, "NWGL_10",                    1, -1,   15,  1,    0, 0, 0, 0, 0},
{112, "Rikets_koordinatsystem_1990",10,498,  -36, 568,  0, 0, 0, 0, 0},
{113, "Lisboa_DLX",                 4, -303, -62, 105,  0, 0, 0, 0, 0},
{114, "Melrica_1973_D73",           4, -223, 110, 37,   0, 0, 0, 0, 0},
{115, "Euref_98",                   0, 0,    0,   0,    0, 0, 0, 0, 0},
{116, "GDA94",                      0, 0,    0,   0,    0, 0, 0, 0, 0},
{117, "NZGD2000",                   0, 0,    0,   0,    0, 0, 0, 0, 0},
{118, "America_Samoa",              7, -115, 118, 426,  0, 0, 0, 0, 0},
{119, "Antigua_Astro_1965",         6, -270, 13,  62,   0, 0, 0, 0, 0},
{120, "Ayabelle_Lighthouse",        6, -79, -129, 145,  0, 0, 0, 0, 0},
{121, "Bukit_Rimpah",               10,-384, 664, -48,  0, 0, 0, 0, 0},
{122, "Estonia_1937",               10,374, 150,  588,  0, 0, 0, 0, 0},
{123, "Dabola",                     6, -83, 37,   124,  0, 0, 0, 0, 0},
{124, "Deception_Island",           6, 260, 12,   -147, 0, 0, 0, 0, 0},
{125, "Fort_Thomas_1955",           6, -7, 215,   225,  0, 0, 0, 0, 0},
{126, "Graciosa_base_1948",         4, -104, 167, -38,  0, 0, 0, 0, 0},
{127, "Herat_North",                4, -333, -222,114,  0, 0, 0, 0, 0},
{128, "Hermanns_Kogel",             10,682, -203, 480,  0, 0, 0, 0, 0},
{129, "Indian",                     50,283, 682,  231,  0, 0, 0, 0, 0},
{130, "Indian_1954",                11,217, 823,  299,  0, 0, 0, 0, 0},
{131, "Indian_1960",                11,198, 881,  317,  0, 0, 0, 0, 0},
{132, "Indian_1975",                11,210, 814,  289,  0, 0, 0, 0, 0},
{133, "Indonesian_Datum_1974",      4, -24, -15,  5,    0, 0, 0, 0, 0},
{134, "ISTS061_Astro_1968",         4, -794, 119, -298, 0, 0, 0, 0, 0},
{135, "Kusaie_Astro_1951",          4, 647, 1777, -1124,0, 0, 0, 0, 0},
{136, "Leigon",                     6, -130, 29,  364,  0, 0, 0, 0, 0},
{137, "Montserrat_Astro_1958",      6, 174, 359,  365,  0, 0, 0, 0, 0},
{138, "Mporaloko",                  6, -74, -130, 42,   0, 0, 0, 0, 0},
{139, "North_Sahara_1959",          6, -186, -93, 310,  0, 0, 0, 0, 0},
{140, "Observatorio_Met_1939",      4, -425, -169,81,   0, 0, 0, 0, 0},
{141, "Point_58",                   6, -106, -129,165,  0, 0, 0, 0, 0},
{142, "Pointe_Noire",               6, -148, 51,  -291, 0, 0, 0, 0, 0},
{143, "Porto_Santo_1936",           4, -499, -249,314,  0, 0, 0, 0, 0},
{144, "Selvagem_Grande_1938",       4, -289, -124,60,   0, 0, 0, 0, 0},
{145, "Sierra_Leone_1960",          6, -88,  4,   101,  0, 0, 0, 0, 0},
{146, "S_JTSK_Ferro",               10, 589, 76,  480,  0, 0, 0, 0, 0},
{147, "Tananarive_1925",            4, -189, -242,-91,  0, 0, 0, 0, 0},
{148, "Voirol_1874",                6, -73,  -247,227,  0, 0, 0, 0, 0},
{149, "Virol_1960",                 6, -123, -206,219,  0, 0, 0, 0, 0},
{150, "Hartebeesthoek94",           0, 0,    0,   0,    0, 0, 0, 0, 0},
{151, "ATS77",                      51, 0, 0, 0, 0, 0, 0, 0, 0},
{152, "JGD2000",                    0, 0, 0, 0, 0, 0, 0, 0, 0},
{1000,"DHDN_Potsdam_Rauenberg",     10,582,  105, 414, -1.04, -0.35, 3.08, 8.3, 0},
{1001,"Pulkovo_1942",               3, 24,   -123, -94, -0.02, 0.25, 0.13, 1.1, 0},
{1002,"NTF_Paris_Meridian",         30,-168, -60, 320, 0, 0, 0, 0, 2.337229166667},
{1003,"Switzerland_CH_1903",        10,660.077,13.551, 369.344, 0.804816, 0.577692, 0.952236, 5.66,0},
{1004,"Hungarian_Datum_1972",       21,-56,  75.77, 15.31, -0.37, -0.2, -0.21, -1.01, 0},
{1005,"Cape_7_Parameter",           28,-134.73,-110.92, -292.66, 0, 0, 0, 1, 0},
{1006,"AGD84_7_Param_Aust",         2, -117.763,-51.51, 139.061, -0.292, -0.443, -0.277, -0.191, 0},
{1007,"AGD66_7_Param_ACT",          2, -129.193,-41.212, 130.73, -0.246, -0.374, -0.329, -2.955, 0},
{1008,"AGD66_7_Param_TAS",          2, -120.271,-64.543, 161.632, -0.2175, 0.0672, 0.1291, 2.4985, 0},
{1009,"AGD66_7_Param_VIC_NSW",      2, -119.353,-48.301, 139.484, -0.415, -0.26, -0.437, -0.613, 0},
{1010,"NZGD_7_Param_49",            4, 59.47, -5.04, 187.44, -0.47, 0.1, -1.024, -4.5993, 0},
{1011,"Rikets_Tri_7_Param_1990",    10,419.3836, 99.3335, 591.3451, -0.850389, -1.817277, 7.862238, -0.99496, 0},
{1012,"Russia_PZ90",                52, -1.08,-0.27,-0.9,0, 0, -0.16,-0.12, 0},
{1013,"Russia_SK42",                52, 23.92,-141.27,-80.9, 0, -0.35,-0.82, -0.12, 0},
{1014,"Russia_SK95",                52, 24.82,-131.21,-82.66,0,0,-0.16,-0.12, 0},
{1015,"Tokyo",                      10, -146.414, 507.337, 680.507,0,0,0,0,0},
{1016,"Finnish_KKJ",                4, -96.062, -82.428, -121.754, -4.801, -0.345, 1.376, 1.496, 0},

{-1, NULL,                          0, 0, 0, 0, 0, 0, 0, 0, 0}
};

/* -------------------------------------------------------------------- */
/*      This table was hand entered from Appendix I of the mapinfo 6    */
/*      manuals.                                                        */
/* -------------------------------------------------------------------- */

MapInfoSpheroidInfo asSpheroidInfoList[] =
{
{ 9,"Airy 1930",                                6377563.396,    299.3249646},
{13,"Airy 1930 (modified for Ireland 1965",     6377340.189,    299.3249646},
{51,"ATS77 (Average Terrestrial System 1977)",  6378135,        298.257},
{ 2,"Australian",                               6378160.0,      298.25},
{10,"Bessel 1841",                              6377397.155,    299.1528128},
{35,"Bessel 1841 (modified for NGO 1948)",      6377492.0176,   299.15281},
{14,"Bessel 1841 (modified for Schwarzeck)",    6377483.865,    299.1528128},
{36,"Clarke 1858",                              6378293.639,    294.26068},
{ 7,"Clarke 1866",                              6378206.4,      294.9786982},
{ 8,"Clarke 1866 (modified for Michigan)",      6378450.047484481,294.9786982},
{ 6,"Clarke 1880",                              6378249.145,    293.465},
{15,"Clarke 1880 (modified for Arc 1950)",      6378249.145326, 293.4663076},
{30,"Clarke 1880 (modified for IGN)",           6378249.2,      293.4660213},
{37,"Clarke 1880 (modified for Jamaica)",       6378249.136,    293.46631},
{16,"Clarke 1880 (modified for Merchich)",      6378249.2,      293.46598},
{38,"Clarke 1880 (modified for Palestine)",     6378300.79,     293.46623},
{39,"Everest (Brunei and East Malaysia)",       6377298.556,    300.8017},
{11,"Everest (India 1830)",                     6377276.345,    300.8017},
{40,"Everest (India 1956)",                     6377301.243,    300.80174},
{50,"Everest (Pakistan)",                       6377309.613,    300.8017},
{17,"Everest (W. Malaysia and Singapore 1948)", 6377304.063,    300.8017},
{48,"Everest (West Malaysia 1969)",             6377304.063,    300.8017},
{18,"Fischer 1960",                             6378166.0,      298.3},
{19,"Fischer 1960 (modified for South Asia)",   6378155.0,      298.3},
{20,"Fischer 1968",                             6378150.0,      298.3},
{21,"GRS 67",                                   6378160.0,      298.247167427},
{ 0,"GRS 80",                                   6378137.0,      298.257222101},
{ 5,"Hayford",                                  6378388.0,      297.0},
{22,"Helmert 1906",                             6378200.0,      298.3},
{23,"Hough",                                    6378270.0,      297.0},
{31,"IAG 75",                                   6378140.0,      298.257222},
{41,"Indonesian",                               6378160.0,      298.247},
{ 4,"International 1924",                       6378388.0,      297.0},
{49,"Irish (WOFO)",                             6377542.178,    299.325},
{ 3,"Krassovsky",                               6378245.0,      298.3},
{32,"MERIT 83",                                 6378137.0,      298.257},
{33,"New International 1967",                   6378157.5,      298.25},
{42,"NWL 9D",                                   6378145.0,      298.25},
{43,"NWL 10D",                                  6378135.0,      298.26},
{44,"OSU86F",                                   6378136.2,      298.25722},
{45,"OSU91A",                                   6378136.3,      298.25722},
{46,"Plessis 1817",                             6376523.0,      308.64},
{52,"PZ90",                                     6378136.0,      298.257839303},
{24,"South American",                           6378160.0,      298.25},
{12,"Sphere",                                   6370997.0,      0.0},
{47,"Struve 1860",                              6378297.0,      294.73},
{34,"Walbeck",                                  6376896.0,      302.78},
{25,"War Office",                               6378300.583,    296.0},
{26,"WGS 60",                                   6378165.0,      298.3},
{27,"WGS 66",                                   6378145.0,      298.25},
{ 1,"WGS 72",                                   6378135.0,      298.26},
{28,"WGS 84",                                   6378137.0,      298.257223563},
{29,"WGS 84 (MAPINFO Datum 0)",                 6378137.01,     298.257223563},
{-1,NULL,                                       0.0,            0.0}
};
 
/**********************************************************************
 *                   TABFile::GetSpatialRef()
 *
 * Returns a reference to an OGRSpatialReference for this dataset.
 * If the projection parameters have not been parsed yet, then we will
 * parse them before returning.
 *
 * The returned object is owned and maintained by this TABFile and
 * should not be modified or freed by the caller.
 *
 * Returns NULL if the SpatialRef cannot be accessed.
 **********************************************************************/
OGRSpatialReference *TABFile::GetSpatialRef()
{
    if (m_eAccessMode != TABRead)
    {
        CPLError(CE_Failure, CPLE_NotSupported,
                 "GetSpatialRef() can be used only with Read access.");
        return NULL;
    }
 
    if (m_poMAPFile == NULL )
    {
        CPLError(CE_Failure, CPLE_AssertionFailed,
                 "GetSpatialRef() failed: file has not been opened yet.");
        return NULL;
    }

    /*-----------------------------------------------------------------
     * If projection params have already been processed, just use them.
     *----------------------------------------------------------------*/
    if (m_poSpatialRef != NULL)
        return m_poSpatialRef;
    

    /*-----------------------------------------------------------------
     * Fetch the parameters from the header.
     *----------------------------------------------------------------*/
    TABMAPHeaderBlock *poHeader;
    TABProjInfo     sTABProj;

    if ((poHeader = m_poMAPFile->GetHeaderBlock()) == NULL ||
        poHeader->GetProjInfo( &sTABProj ) != 0)
    {
        CPLError(CE_Failure, CPLE_FileIO,
                 "GetSpatialRef() failed reading projection parameters.");
        return NULL;
    }

    /*-----------------------------------------------------------------
     * Get the units name, and translation factor.
     *----------------------------------------------------------------*/
    const char *pszUnitsName; 
    const char *pszUnitsConv;
    double      dfConv = 1.0;

    switch( sTABProj.nUnitsId )
    {
      case 0:
        pszUnitsName = "Mile";
        pszUnitsConv = "1609.344";
        break;

      case 1:
        pszUnitsName = "Kilometer";
        pszUnitsConv = "1000.0";
        break;
            
      case 2:
        pszUnitsName = "IINCH";
        pszUnitsConv = "0.0254";
        break;
            
      case 3:
        pszUnitsName = SRS_UL_FOOT;
        pszUnitsConv = SRS_UL_FOOT_CONV;
        break;
            
      case 4:
        pszUnitsName = "IYARD";
        pszUnitsConv = "0.9144";
        break;
            
      case 5:
        pszUnitsName = "Millimeter";
        pszUnitsConv = "0.001";
        break;
            
      case 6:
        pszUnitsName = "Centimeter";
        pszUnitsConv = "0.01";
        break;
            
      case 7:
        pszUnitsName = SRS_UL_METER;
        pszUnitsConv = "1.0";
        break;
            
      case 8:
        pszUnitsName = SRS_UL_US_FOOT;
        pszUnitsConv = SRS_UL_US_FOOT_CONV;
        break;
            
      case 9:
        pszUnitsName = SRS_UL_NAUTICAL_MILE;
        pszUnitsConv = SRS_UL_NAUTICAL_MILE_CONV;
        break;
            
      case 30:
        pszUnitsName = SRS_UL_LINK;
        pszUnitsConv = SRS_UL_LINK_CONV;
        break;
            
      case 31:
        pszUnitsName = SRS_UL_CHAIN;
        pszUnitsConv = SRS_UL_CHAIN_CONV;
        break;
            
      case 32:
        pszUnitsName = SRS_UL_ROD;
        pszUnitsConv = SRS_UL_ROD_CONV;
        break;
            

⌨️ 快捷键说明

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