Cogs.Core
RasterLevel.h
1#pragma once
2
3#include <vector>
4
5#include "../GeodeticExtent.h"
6#include "../Extent.h"
7
8namespace Cogs
9{
10 class RasterSource;
11 struct RasterTileRegion;
12 struct RasterTileIdentifier;
13
14 class COGSTERRAIN_API RasterLevel
15 {
16 public:
18 int level,
19 GeodeticExtent extent,
20 float noData,
21 int longitudePosts,
22 int latitudePosts,
23 int longitudePostsPerTile,
24 int latitudePostsPerTile,
25 double postDeltaLongitude,
26 double postDeltaLatitude);
27
28 RasterLevel(const RasterLevel & rasterLevel) = default;
29
30 RasterSource * getSource(void) const { return source; }
31 int getLevel(void) const { return level; }
32
33 const GeodeticExtent & getGeoExtent(void) const { return extent;}
34
35 float getNoData() const { return noData; }
36
37 int getLongitudePosts(void) const { return longitudePosts; }
38 int getLatitudePosts(void) const { return latitudePosts; }
39 int getLongitudePostsPerTile(void) const { return longitudePostsPerTile; }
40 int getLatitudePostsPerTile(void) const { return latitudePostsPerTile; }
41
42 double getPostDeltaLongitude(void) const { return postDeltaLongitude; }
43 double getPostDeltaLatitude(void) const { return postDeltaLatitude; }
44
45 double longitudeToIndex(double longitude) const;
46 double latitudeToIndex(double latitude) const;
47 double indexToLongitude(int longitudeIndex) const;
48 double indexToLatitude(int latitudeIndex) const;
49
50 void getTilesInExtent(const Extent & extent, std::vector<RasterTileIdentifier> & ids, std::vector<Extent> & extents) const;
51 void getTilesInExtent(const Extent & extent, std::vector<RasterTileRegion> & results) const;
52
53 bool isTileIndexValid(int x, int y) const
54 {
55 bool xValid = x >= 0 && x < (longitudePosts / longitudePostsPerTile);
56 bool yValid = y >= 0 && y < (latitudePosts / latitudePostsPerTile);
57
58 return xValid && yValid;
59 }
60
61 const Extent & getIndexExtent() const { return indexExtent; }
62
63 private:
64 RasterSource * source;
65 int level;
66 GeodeticExtent extent;
67 Extent indexExtent;
68 float noData;
69
70 int longitudePosts;
71 int latitudePosts;
72
73 int longitudePostsPerTile;
74 int latitudePostsPerTile;
75
76 double postDeltaLongitude;
77 double postDeltaLatitude;
78 };
79}
80
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
Raster index extent.
Definition: Extent.h:7
Extent in terrain reference system coordinates.