Add new api to retreive a list of SGBuckets within a bounding rectangle

This commit is contained in:
Peter Sadrozinski
2013-03-03 11:57:38 -05:00
committed by Christian Schmitt
parent 67efc1f68f
commit 0bc8005100
2 changed files with 19 additions and 0 deletions

View File

@@ -345,4 +345,13 @@ void sgBucketDiff( const SGBucket& b1, const SGBucket& b2, int *dx, int *dy ) {
#endif
}
void sgGetBuckets( const SGGeod& min, const SGGeod& max, std::vector<SGBucket>& list ) {
double lon, lat, span;
for (lat = min.getLatitudeDeg(); lat <= max.getLatitudeDeg(); lat += SG_BUCKET_SPAN) {
span = sg_bucket_span( lat );
for (lon = min.getLongitudeDeg(); lon <= max.getLongitudeDeg(); lon += span) {
list.push_back( SGBucket(lon , lat) );
}
}
}

View File

@@ -42,6 +42,7 @@
#include <cstdio> // sprintf()
#include <ostream>
#include <string>
#include <vector>
/**
* standard size of a bucket in degrees (1/8 of a degree)
@@ -322,6 +323,15 @@ SGBucket sgBucketOffset( double dlon, double dlat, int x, int y );
void sgBucketDiff( const SGBucket& b1, const SGBucket& b2, int *dx, int *dy );
/**
* \relates SGBucket
* retrieve a list of buckets in the given bounding box
* @param min min lon,lat of bounding box in degrees
* @param max max lon,lat of bounding box in degrees
* @param list standard vector of buckets within the bounding box
*/
void sgGetBuckets( const SGGeod& min, const SGGeod& max, std::vector<SGBucket>& list );
/**
* Write the bucket lon, lat, x, and y to the output stream.
* @param out output stream