[gdal-dev] Re: Slope in gdaldem
Stephen Mather
mather.stephen at gmail.com
Thu Dec 15 21:49:09 EST 2011
Here's what I've settled on. Let me know your thoughts. The algorithm now
correctly calculates angle to lowest nearby point. If it's a local minima,
it instead calculates angle to the nearest high point, which will be a
negative number, so if the user wants to nullify these or use them in
additional processing steps they can. How does adding code to gdal work?
Best,
Steve
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 (key < 0)
{
key = afWin[4] - pafLocalMax;
}
if (psData->slopeFormat == 1)
return (float) (atan(sqrt(key) / (2*psData->scale)) *
radiansToDegrees);
else
return (float) (100*(sqrt(key) / (2*psData->scale)));
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20111215/b587f230/attachment.html
More information about the gdal-dev
mailing list