[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