📄 mitab_spatialref.cpp
字号:
{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 + -