Subversion Repositories public iLand

Rev

Rev 697 | Rev 779 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 697 Rev 717
Line 54... Line 54...
54
public:
54
public:
55
    LayeredGrid(const Grid<T>& grid) { mGrid = &grid; }
55
    LayeredGrid(const Grid<T>& grid) { mGrid = &grid; }
56
    LayeredGrid() { mGrid = 0; }
56
    LayeredGrid() { mGrid = 0;  }
57
    QRectF cellRect(const QPoint &p) const { return mGrid->cellRect(p); }
57
    QRectF cellRect(const QPoint &p) const { return mGrid->cellRect(p); }
58
    QRectF metricRect() const { return mGrid->metricRect(); }
58
    QRectF metricRect() const { return mGrid->metricRect(); }
-
 
59
    float cellsize() const { return mGrid->cellsize(); }
59
    int sizeX() const { return mGrid->sizeX(); }
60
    int sizeX() const { return mGrid->sizeX(); }
60
    int sizeY() const { return mGrid->sizeY();}
61
    int sizeY() const { return mGrid->sizeY();}
61
62
62
    virtual double value(const T& data, const int index) const = 0;
63
    virtual double value(const T& data, const int index) const = 0;
63
    double value(const T* ptr, const int index) const { return value(mGrid->constValueAtIndex(mGrid->indexOf(ptr)), index);  }
64
    double value(const T* ptr, const int index) const { return value(mGrid->constValueAtIndex(mGrid->indexOf(ptr)), index);  }
Line 71... Line 72...
71
                                                                  rMax=qMax(rMax, value(i,index));}}
72
                                                                  rMax=qMax(rMax, value(i,index));}}
72
73
73
protected:
74
protected:
74
    const Grid<T> *mGrid;
75
    const Grid<T> *mGrid;
75
};
76
};
-
 
77
-
 
78
void modelToWorld(const Vector3D &From, Vector3D &To);
-
 
79
-
 
80
/** translate
-
 
81

-
 
82
  */
-
 
83
template <class T>
-
 
84
    QString gridToESRIRaster(const LayeredGrid<T> &grid, const QString name)
-
 
85
{
-
 
86
        int index = grid.names().indexOf(name);
-
 
87
        if (index<0)
-
 
88
            return QString();
-
 
89
        Vector3D model(grid.metricRect().left(), grid.metricRect().top(), 0.);
-
 
90
        Vector3D world;
-
 
91
        modelToWorld(model, world);
-
 
92
        QString result = QString("ncols %1\r\nnrows %2\r\nxllcorner %3\r\nyllcorner %4\r\ncellsize %5\r\nNODATA_value %6\r\n")
-
 
93
                                .arg(grid.sizeX())
-
 
94
                                .arg(grid.sizeY())
-
 
95
                                .arg(world.x(),0,'f').arg(world.y(),0,'f')
-
 
96
                                .arg(grid.cellsize()).arg(-9999);
-
 
97
-
 
98
        QString res;
-
 
99
        QTextStream ts(&res);
-
 
100
        QChar sep = QChar(' ');
-
 
101
        for (int y=grid.sizeY()-1;y>=0;--y){
-
 
102
            for (int x=0;x<grid.sizeX();x++){
-
 
103
                ts << grid.value(x,y,index) << sep;
-
 
104
            }
-
 
105
            ts << "\r\n";
-
 
106
        }
-
 
107
-
 
108
        return result + res;
-
 
109
}
-
 
110
76
111
77
#endif // LAYEREDGRID_H
112
#endif // LAYEREDGRID_H