32 #include "gdal_alg_priv.h"
40 template <
class Accessors>
struct GDALGeoLoc
42 static void LoadGeolocFinish(GDALGeoLocTransformInfo *psTransform);
44 static bool GenerateBackMap(GDALGeoLocTransformInfo *psTransform);
46 static bool PixelLineToXY(
const GDALGeoLocTransformInfo *psTransform,
47 const int nGeoLocPixel,
const int nGeoLocLine,
48 double &dfX,
double &dfY);
50 static bool PixelLineToXY(
const GDALGeoLocTransformInfo *psTransform,
51 const double dfGeoLocPixel,
52 const double dfGeoLocLine,
double &dfX,
55 static bool ExtractSquare(
const GDALGeoLocTransformInfo *psTransform,
56 int nX,
int nY,
double &dfX_0_0,
double &dfY_0_0,
57 double &dfX_1_0,
double &dfY_1_0,
double &dfX_0_1,
58 double &dfY_0_1,
double &dfX_1_1,
61 static int Transform(
void *pTransformArg,
int bDstToSrc,
int nPointCount,
62 double *padfX,
double *padfY,
double * ,
68 bool GDALGeoLocExtractSquare(
const GDALGeoLocTransformInfo *psTransform,
int nX,
69 int nY,
double &dfX_0_0,
double &dfY_0_0,
70 double &dfX_1_0,
double &dfY_1_0,
double &dfX_0_1,
71 double &dfY_0_1,
double &dfX_1_1,
double &dfY_1_1);
73 void GDALInverseBilinearInterpolation(
const double x,
const double y,
74 const double x0,
const double y0,
75 const double x1,
const double y1,
76 const double x2,
const double y2,
77 const double x3,
const double y3,
78 double &i,
double &j);
88 static double ShiftGeoX(
const GDALGeoLocTransformInfo *psTransform,
89 double dfXRef,
double dfX)
91 if (!psTransform->bGeographicSRSWithMinus180Plus180LongRange)
96 if (dfXRef < -170 && dfX > 170)
98 if (dfXRef > 170 && dfX < -170)