Skip to content

Commit bf471d4

Browse files
committed
cpp
1 parent 5a81418 commit bf471d4

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

src/RcppModule.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,7 @@ RCPP_MODULE(spat){
998998
.method("sampleRowColRaster", &SpatRaster::sampleRowColRaster)
999999
.method("sampleRegularValues", &SpatRaster::sampleRegularValues)
10001000
.method("sampleRowColValues", &SpatRaster::sampleRowColValues)
1001+
.method("sampleRowCol", &SpatRaster::sampleRowCol)
10011002
.method("sampleRandomRaster", &SpatRaster::sampleRandomRaster)
10021003
.method("sampleRandomValues", &SpatRaster::sampleRandomValues)
10031004
.method("scale", &SpatRaster::scale)

src/sample.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,31 @@ std::vector<std::vector<double>> SpatRaster::sampleRowColValues(size_t nr, size_
300300
}
301301

302302

303+
std::vector<double> SpatRaster::sampleRowCol(size_t nr, size_t nc) {
304+
305+
std::vector<double> out;
306+
if (!source[0].hasValues) return (out);
307+
if ((nr == 0) || (nc ==0)) {
308+
return(out);
309+
}
310+
nr = std::min(nr, nrow());
311+
nc = std::min(nc, ncol());
312+
313+
std::vector<int_64> rows, cols;
314+
315+
double d = nrow()/nr;
316+
for (size_t i=0; i<nr; i++) {
317+
rows.push_back((i + .5) * d);
318+
}
319+
d = ncol()/nc;
320+
for (size_t i=0; i<nc; i++) {
321+
cols.push_back((i + .5) * d);
322+
}
323+
return cellFromRowColCombine(rows, cols);
324+
}
325+
326+
327+
303328
std::vector<size_t> sample_replace(size_t size, size_t N, unsigned seed){
304329
std::default_random_engine gen(seed);
305330
std::uniform_int_distribution<> U(0, N-1);

src/spatRaster.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,7 @@ class SpatRaster {
829829
SpatRaster sampleRowColRaster(size_t nr, size_t nc, bool warn);
830830
SpatRaster sampleRandomRaster(double size, bool replace, unsigned seed);
831831
std::vector<std::vector<double>> sampleRegularValues(double size, SpatOptions &opt);
832+
std::vector<double> sampleRowCol(size_t nr, size_t nc);
832833
std::vector<std::vector<double>> sampleRowColValues(size_t nr, size_t nc, SpatOptions &opt);
833834

834835
std::vector<std::vector<double>> sampleRandomValues(double size, bool replace, unsigned seed);

0 commit comments

Comments
 (0)