00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "qgsaspectfilter.h"
00019
00020 QgsAspectFilter::QgsAspectFilter( const QString& inputFile, const QString& outputFile, const QString& outputFormat ) :
00021 QgsDerivativeFilter( inputFile, outputFile, outputFormat )
00022 {
00023
00024 }
00025
00026 QgsAspectFilter::~QgsAspectFilter()
00027 {
00028
00029 }
00030
00031 float QgsAspectFilter::processNineCellWindow(
00032 float* x11, float* x21, float* x31,
00033 float* x12, float* x22, float* x32,
00034 float* x13, float* x23, float* x33 )
00035 {
00036 float derX = calcFirstDerX( x11, x21, x31, x12, x22, x32, x13, x23, x33 );
00037 float derY = calcFirstDerY( x11, x21, x31, x12, x22, x32, x13, x23, x33 );
00038
00039 if ( derX == mOutputNodataValue ||
00040 derY == mOutputNodataValue ||
00041 ( derX == 0.0 && derY == 0.0 ) )
00042 {
00043 return mOutputNodataValue;
00044 }
00045 else
00046 {
00047 return 180.0 + atan2( derX, derY ) * 180.0 / M_PI;
00048 }
00049 }
00050