geo_normalize.c

来自「支持各种栅格图像和矢量图像读取的库」· C语言 代码 · 共 1,719 行 · 第 1/5 页

C
1,719
字号
        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0 )            dfNatOriginLong = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey,                        &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0 )            dfNatOriginLat = 0.0;        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,                       &dfNatOriginScale, 0, 1 ) == 0 )            dfNatOriginScale = 1.0;                    /* notdef: should transform to decimal degrees at this point */        psDefn->ProjParm[0] = dfNatOriginLat;        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;        psDefn->ProjParm[1] = dfNatOriginLong;        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;        psDefn->ProjParm[4] = dfNatOriginScale;        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;        psDefn->ProjParm[5] = dfFalseEasting;        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;        psDefn->ProjParm[6] = dfFalseNorthing;        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;        psDefn->nParms = 7;        break;/* -------------------------------------------------------------------- */      case CT_LambertConfConic_1SP:      case CT_Mercator:      case CT_ObliqueStereographic:      case CT_TransverseMercator:      case CT_TransvMercator_SouthOriented:/* -------------------------------------------------------------------- */        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0 )            dfNatOriginLong = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey,                        &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0 )            dfNatOriginLat = 0.0;        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,                       &dfNatOriginScale, 0, 1 ) == 0 )            dfNatOriginScale = 1.0;                    /* notdef: should transform to decimal degrees at this point */        psDefn->ProjParm[0] = dfNatOriginLat;        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;        psDefn->ProjParm[1] = dfNatOriginLong;        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;        psDefn->ProjParm[4] = dfNatOriginScale;        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;        psDefn->ProjParm[5] = dfFalseEasting;        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;        psDefn->ProjParm[6] = dfFalseNorthing;        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;        psDefn->nParms = 7;        break;/* -------------------------------------------------------------------- */      case CT_ObliqueMercator: /* hotine *//* -------------------------------------------------------------------- */        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0 )            dfNatOriginLong = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey,                        &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0 )            dfNatOriginLat = 0.0;        if( GTIFKeyGet(psGTIF, ProjAzimuthAngleGeoKey,                        &dfAzimuth, 0, 1 ) == 0 )            dfAzimuth = 0.0;        if( GTIFKeyGet(psGTIF, ProjRectifiedGridAngleGeoKey,                       &dfRectGridAngle, 0, 1 ) == 0 )            dfRectGridAngle = 90.0;        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,                       &dfNatOriginScale, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,                          &dfNatOriginScale, 0, 1 ) == 0 )            dfNatOriginScale = 1.0;                    /* notdef: should transform to decimal degrees at this point */        psDefn->ProjParm[0] = dfNatOriginLat;        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;        psDefn->ProjParm[1] = dfNatOriginLong;        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;        psDefn->ProjParm[2] = dfAzimuth;        psDefn->ProjParmId[2] = ProjAzimuthAngleGeoKey;        psDefn->ProjParm[3] = dfRectGridAngle;        psDefn->ProjParmId[3] = ProjRectifiedGridAngleGeoKey;        psDefn->ProjParm[4] = dfNatOriginScale;        psDefn->ProjParmId[4] = ProjScaleAtCenterGeoKey;        psDefn->ProjParm[5] = dfFalseEasting;        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;        psDefn->ProjParm[6] = dfFalseNorthing;        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;        psDefn->nParms = 7;        break;/* -------------------------------------------------------------------- */      case CT_CassiniSoldner:      case CT_Polyconic:/* -------------------------------------------------------------------- */        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0 )            dfNatOriginLong = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey,                        &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0 )            dfNatOriginLat = 0.0;        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,                       &dfNatOriginScale, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,                          &dfNatOriginScale, 0, 1 ) == 0 )            dfNatOriginScale = 1.0;                    /* notdef: should transform to decimal degrees at this point */        psDefn->ProjParm[0] = dfNatOriginLat;        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;        psDefn->ProjParm[1] = dfNatOriginLong;        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;        psDefn->ProjParm[4] = dfNatOriginScale;        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;        psDefn->ProjParm[5] = dfFalseEasting;        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;        psDefn->ProjParm[6] = dfFalseNorthing;        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;        psDefn->nParms = 7;        break;/* -------------------------------------------------------------------- */      case CT_AzimuthalEquidistant:      case CT_MillerCylindrical:      case CT_Equirectangular:      case CT_Gnomonic:      case CT_LambertAzimEqualArea:      case CT_Orthographic:/* -------------------------------------------------------------------- */        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0 )            dfNatOriginLong = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey,                        &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0 )            dfNatOriginLat = 0.0;        /* notdef: should transform to decimal degrees at this point */        psDefn->ProjParm[0] = dfNatOriginLat;        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;        psDefn->ProjParm[1] = dfNatOriginLong;        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;        psDefn->ProjParm[5] = dfFalseEasting;        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;        psDefn->ProjParm[6] = dfFalseNorthing;        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;        psDefn->nParms = 7;        break;/* -------------------------------------------------------------------- */      case CT_Robinson:      case CT_Sinusoidal:      case CT_VanDerGrinten:/* -------------------------------------------------------------------- */        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0 )            dfNatOriginLong = 0.0;        /* notdef: should transform to decimal degrees at this point */        psDefn->ProjParm[1] = dfNatOriginLong;        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;        psDefn->ProjParm[5] = dfFalseEasting;        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;        psDefn->ProjParm[6] = dfFalseNorthing;        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;        psDefn->nParms = 7;        break;/* -------------------------------------------------------------------- */      case CT_PolarStereographic:/* -------------------------------------------------------------------- */        if( GTIFKeyGet(psGTIF, ProjStraightVertPoleLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0 )            dfNatOriginLong = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey,                        &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0 )            dfNatOriginLat = 0.0;        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,                       &dfNatOriginScale, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,                          &dfNatOriginScale, 0, 1 ) == 0 )            dfNatOriginScale = 1.0;                    /* notdef: should transform to decimal degrees at this point */        psDefn->ProjParm[0] = dfNatOriginLat;        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;;        psDefn->ProjParm[1] = dfNatOriginLong;        psDefn->ProjParmId[1] = ProjStraightVertPoleLongGeoKey;        psDefn->ProjParm[4] = dfNatOriginScale;        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;        psDefn->ProjParm[5] = dfFalseEasting;        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;        psDefn->ProjParm[6] = dfFalseNorthing;        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;        psDefn->nParms = 7;        break;/* -------------------------------------------------------------------- */      case CT_LambertConfConic_2SP:/* -------------------------------------------------------------------- */        if( GTIFKeyGet(psGTIF, ProjStdParallel1GeoKey,                        &dfStdParallel1, 0, 1 ) == 0 )            dfStdParallel1 = 0.0;        if( GTIFKeyGet(psGTIF, ProjStdParallel2GeoKey,                        &dfStdParallel2, 0, 1 ) == 0 )            dfStdParallel1 = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0 )            dfNatOriginLong = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey,                        &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey,                           &dfNatOriginLat, 0, 1 ) == 0 )            dfNatOriginLat = 0.0;        /* notdef: should transform to decimal degrees at this point */        psDefn->ProjParm[0] = dfNatOriginLat;        psDefn->ProjParmId[0] = ProjFalseOriginLatGeoKey;        psDefn->ProjParm[1] = dfNatOriginLong;        psDefn->ProjParmId[1] = ProjFalseOriginLongGeoKey;        psDefn->ProjParm[2] = dfStdParallel1;        psDefn->ProjParmId[2] = ProjStdParallel1GeoKey;        psDefn->ProjParm[3] = dfStdParallel2;        psDefn->ProjParmId[3] = ProjStdParallel2GeoKey;        psDefn->ProjParm[5] = dfFalseEasting;        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;        psDefn->ProjParm[6] = dfFalseNorthing;        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;        psDefn->nParms = 7;        break;/* -------------------------------------------------------------------- */      case CT_AlbersEqualArea:      case CT_EquidistantConic:/* -------------------------------------------------------------------- */        if( GTIFKeyGet(psGTIF, ProjStdParallel1GeoKey,                        &dfStdParallel1, 0, 1 ) == 0 )            dfStdParallel1 = 0.0;        if( GTIFKeyGet(psGTIF, ProjStdParallel2GeoKey,                        &dfStdParallel2, 0, 1 ) == 0 )            dfStdParallel2 = 0.0;        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey,                        &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey,                           &dfNatOriginLong, 0, 1 ) == 0            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey,                       

⌨️ 快捷键说明

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