~ubuntu-branches/ubuntu/wily/qgis/wily

« back to all changes in this revision

Viewing changes to src/analysis/raster/qgsruggednessfilter.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Johan Van de Wauw
  • Date: 2010-07-11 20:23:24 UTC
  • mfrom: (3.1.4 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100711202324-5ktghxa7hracohmr
Tags: 1.4.0+12730-3ubuntu1
* Merge from Debian unstable (LP: #540941).
* Fix compilation issues with QT 4.7
* Add build-depends on libqt4-webkit-dev 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
                          qgsruggednessfilter.cpp  -  description
 
3
                          -----------------------
 
4
    begin                : August 7th, 2009
 
5
    copyright            : (C) 2009 by Marco Hugentobler
 
6
    email                : marco dot hugentobler at karto dot baug dot ethz dot ch
 
7
 ***************************************************************************/
 
8
 
 
9
/***************************************************************************
 
10
 *                                                                         *
 
11
 *   This program is free software; you can redistribute it and/or modify  *
 
12
 *   it under the terms of the GNU General Public License as published by  *
 
13
 *   the Free Software Foundation; either version 2 of the License, or     *
 
14
 *   (at your option) any later version.                                   *
 
15
 *                                                                         *
 
16
 ***************************************************************************/
 
17
 
 
18
#include "qgsruggednessfilter.h"
 
19
 
 
20
QgsRuggednessFilter::QgsRuggednessFilter( const QString& inputFile, const QString& outputFile, const QString& outputFormat ): QgsNineCellFilter( inputFile, outputFile, outputFormat )
 
21
{
 
22
 
 
23
}
 
24
 
 
25
QgsRuggednessFilter::QgsRuggednessFilter(): QgsNineCellFilter( "", "", "" )
 
26
{
 
27
 
 
28
}
 
29
 
 
30
 
 
31
QgsRuggednessFilter::~QgsRuggednessFilter()
 
32
{
 
33
 
 
34
}
 
35
 
 
36
float QgsRuggednessFilter::processNineCellWindow( float* x11, float* x21, float* x31, \
 
37
    float* x12, float* x22, float* x32, float* x13, float* x23, float* x33 )
 
38
{
 
39
  //the formula would be that easy without nodata values...
 
40
  /*
 
41
    //return *x22; //test: write the raster value of the middle cell
 
42
    float diff1 = *x11 - *x22;
 
43
    float diff2 = *x21 - *x22;
 
44
    float diff3 = *x31 - *x22;
 
45
    float diff4 = *x12 - *x22;
 
46
    float diff5 = *x32 - *x22;
 
47
    float diff6 = *x13 - *x22;
 
48
    float diff7 = *x23 - *x22;
 
49
    float diff8 = *x33 - *x22;
 
50
    return sqrt(diff1 * diff1 + diff2 * diff2 + diff3 * diff3 + diff4 * diff4 + diff5 * diff5 + diff6 * diff6 + diff7 * diff7 + diff8 * diff8);
 
51
   */
 
52
 
 
53
  if ( *x22 == mInputNodataValue )
 
54
  {
 
55
    return mOutputNodataValue;
 
56
  }
 
57
 
 
58
  double sum = 0;
 
59
  if ( *x11 != mInputNodataValue )
 
60
  {
 
61
    sum += ( *x11 - *x22 ) * ( *x11 - *x22 );
 
62
  }
 
63
  if ( *x21 != mInputNodataValue )
 
64
  {
 
65
    sum += ( *x21 - *x22 ) * ( *x21 - *x22 );
 
66
  }
 
67
  if ( *x31 != mInputNodataValue )
 
68
  {
 
69
    sum += ( *x31 - *x22 ) * ( *x31 - *x22 );
 
70
  }
 
71
  if ( *x12 != mInputNodataValue )
 
72
  {
 
73
    sum += ( *x12 - *x22 ) * ( *x12 - *x22 );
 
74
  }
 
75
  if ( *x32 != mInputNodataValue )
 
76
  {
 
77
    sum += ( *x32 - *x22 ) * ( *x32 - *x22 );
 
78
  }
 
79
  if ( *x13 != mInputNodataValue )
 
80
  {
 
81
    sum += ( *x13 - *x22 ) * ( *x13 - *x22 );
 
82
  }
 
83
  if ( *x23 != mInputNodataValue )
 
84
  {
 
85
    sum += ( *x23 - *x22 ) * ( *x23 - *x22 );
 
86
  }
 
87
  if ( *x33 != mInputNodataValue )
 
88
  {
 
89
    sum += ( *x33 - *x22 ) * ( *x33 - *x22 );
 
90
  }
 
91
 
 
92
  return sqrt( sum );
 
93
}
 
94