Hmm. I don't follow? The revision would be this: float GDALSlopeHydroAlg (float* afWin, float fDstNoDataValue, void* pData)
{ // Hydrologic Slope is the max // local slope btw center cell and adjacent cells const double radiansToDegrees = 180.0 / M_PI; GDALSlopeAlgData* psData = (GDALSlopeAlgData*)pData; double key; float pafLocalMin = afWin[0]; float pafLocalMax = afWin[0]; for ( int k = 1; k < 9; k++) { if (afWin[k] < pafLocalMin) { pafLocalMin=afWin[k]; } if (afWin[k] > pafLocalMax) { pafLocalMax=afWin[k]; } } key = afWin[4] - pafLocalMin; if (psData->slopeFormat == 1) return (float) (atan(sqrt(key) / (2*psData->scale)) * radiansToDegrees); else return (float) (100*(sqrt(key) / (2*psData->scale))); } But, clearly I'm not understanding something about the window. Steve On Thu, Dec 15, 2011 at 10:05 PM, Joaquim Luis <jl...@ualg.pt> wrote: > > >> float pafLocalMin = afWin[0]; >> float pafLocalMax = afWin[0]; >> >> for ( int k = 1; k < 9; k++) >> { >> if (afWin[k] < pafLocalMin) >> { >> pafLocalMin=afWin[k]; >> } >> >> if (afWin[k] > pafLocalMax) >> { >> pafLocalMax=afWin[k]; >> } >> >> } >> >> > key = afWin[4] - pafLocalMin; >> >> if (key < 0) >> { >> key = afWin[4] - pafLocalMax; >> } >> >> > Stephen > > 'key' can never be negative because pafLocalMin is computed from 'afWin' > alone. The min val it can have is 0, when the minimum value is the central > node itself. > > Joaquim >
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev