Skip to content

Commit

Permalink
Fixed intermittent half cell offset
Browse files Browse the repository at this point in the history
  • Loading branch information
maartenplieger committed Oct 2, 2024
1 parent 88aedd8 commit 270e43e
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 43 deletions.
7 changes: 1 addition & 6 deletions adagucserverEC/GenericDataWarper/CGenericDataWarper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ int CGenericDataWarper::render(CImageWarper *warper, void *_sourceData, CGeoPara
useStridingProjection = true;
}

double halfCell = warperState.useHalfCellOffset ? 0.5 : 0;
double halfCell = useHalfCellOffset ? 0.5 : 0;

size_t dataSize = (dataWidth + 1) * (dataHeight + 1);

Expand Down Expand Up @@ -299,15 +299,10 @@ int CGenericDataWarper::render(CImageWarper *warper, void *_sourceData, CGeoPara
double sX = double(x % projStrideFactor) / double(projStrideFactor);
double sY = double(y % projStrideFactor) / double(projStrideFactor);
double x1 = pxStrided[pS] * (1 - sX) + pxStrided[pS + 1] * sX;
;
double x2 = pxStrided[pS + dataWidthStrided] * (1 - sX) + pxStrided[pS + 1 + dataWidthStrided] * sX;
;
px[p] = x1 * (1 - sY) + x2 * sY;

double y1 = pyStrided[pS] * (1 - sY) + pyStrided[pS + dataWidthStrided] * sY;
;
double y2 = pyStrided[pS + 1] * (1 - sY) + pyStrided[pS + dataWidthStrided + 1] * sY;
;
py[p] = y1 * (1 - sX) + y2 * sX;
}
}
Expand Down
4 changes: 3 additions & 1 deletion adagucserverEC/GenericDataWarper/CGenericDataWarper.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ struct GDWWarperState {
void *sourceData;
int sourceDataPX, sourceDataPY, sourceDataWidth, sourceDataHeight;
double tileDx, tileDy;
bool useHalfCellOffset;
};

class CGenericDataWarper {
Expand All @@ -23,6 +22,9 @@ class CGenericDataWarper {

public:
GDWWarperState warperState;
bool useHalfCellOffset;
CGenericDataWarper() { useHalfCellOffset = false; }

template <typename T>
int render(CImageWarper *warper, void *_sourceData, CGeoParams *sourceGeoParams, CGeoParams *destGeoParams, void *drawFunctionSettings,
void (*drawFunction)(int, int, T, void *drawFunctionSettings, void *genericDataWarper));
Expand Down
2 changes: 1 addition & 1 deletion adagucserverEC/GenericDataWarper/CImgWarpGeneric.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ void CImgWarpGeneric::render(CImageWarper *warper, CDataSource *dataSource, CDra
sourceGeo.CRS = dataSource->nativeProj4;

CGenericDataWarper genericDataWarper;
genericDataWarper.warperState.useHalfCellOffset = true;

switch (dataType) {
case CDF_CHAR:
genericDataWarper.render<char>(warper, sourceData, &sourceGeo, drawImage->Geo, &settings, &gdwDrawFunction);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
time;variable;index;id;name;numsamples;min;mean;max;std
None;testdata;12;Belgium;12;45565;0.273369;0.318862;0.341040;0.022567
None;testdata;41;Germany;41;186852;0.115642;0.214597;0.341040;0.063268
None;testdata;43;Denmark;43;1835;0.115642;0.132648;0.139212;0.010565
None;testdata;55;France;55;25312;0.233212;0.307796;0.338476;0.024821
None;testdata;57;United Kingdom;57;37638;0.155166;0.197454;0.233212;0.022359
None;testdata;97;Luxembourg;97;426;0.331169;0.340901;0.341040;0.001163
None;testdata;117;Netherlands;117;67418;0.165929;0.229668;0.304120;0.041050
None;testdata;12;Belgium;12;45565;0.299820;0.336828;0.355911;0.014057
None;testdata;41;Germany;41;186852;0.115642;0.215609;0.345581;0.064156
None;testdata;43;Denmark;43;1835;0.115642;0.116580;0.139212;0.004607
None;testdata;55;France;55;25312;0.319451;0.335930;0.355911;0.013890
None;testdata;57;United Kingdom;57;37638;0.175515;0.225335;0.319451;0.030358
None;testdata;97;Luxembourg;97;426;0.345581;0.345581;0.345581;0.000000
None;testdata;117;Netherlands;117;67418;0.165981;0.248482;0.331169;0.044804
Loading

0 comments on commit 270e43e

Please sign in to comment.