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
|