Skip to content

Commit

Permalink
vectorize warp suggest
Browse files Browse the repository at this point in the history
  • Loading branch information
mdsumner committed Jul 5, 2023
1 parent 3a89e04 commit 953896c
Showing 1 changed file with 25 additions and 20 deletions.
45 changes: 25 additions & 20 deletions inst/include/gdalwarpgeneral/gdalwarpgeneral.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,34 +14,19 @@ namespace gdalwarpgeneral{
using namespace Rcpp;



List gdal_suggest_warp(CharacterVector dsn, CharacterVector target_crs) {


List out(dsn.size());
for (int i = 0; i < dsn.size(); i++) {
GDALDataset* poSrcDS = (GDALDataset*) gdalraster::gdalH_open_dsn(dsn[0], 0);
double adfGeoTransform[6];
List gdal_suggest_warp(GDALDataset* poSrcDS, void *pfnTransformerArg) {
double adfGeoTransform[6];
poSrcDS->GetGeoTransform( adfGeoTransform );

int nXSize, nYSize;
double adfExtent[4];

GDALTransformerFunc pfnTransformer;
pfnTransformer = GDALGenImgProjTransform;

void *pfnTransformerArg = nullptr;
pfnTransformerArg =
GDALCreateGenImgProjTransformer( poSrcDS,
nullptr,
nullptr,
target_crs[0],
FALSE, 0.0, 1 );
GDALSuggestedWarpOutput2(poSrcDS, pfnTransformer, pfnTransformerArg,
adfGeoTransform, &nXSize, &nYSize, adfExtent,
0);
if (!(poSrcDS == nullptr)) {
GDALClose(poSrcDS);
}
IntegerVector dimension(2);
dimension[0] = nXSize;
dimension[1] = nYSize;
Expand All @@ -52,11 +37,31 @@ List gdal_suggest_warp(CharacterVector dsn, CharacterVector target_crs) {
extent[2] = adfExtent[1];
extent[3] = adfExtent[3];


List out_i(2);
out_i[0] = extent;
out_i[1] = dimension;
out[i] = out_i;
return out_i;
}

List gdal_suggest_warp(CharacterVector dsn, CharacterVector target_crs) {
List out(dsn.size());
for (int i = 0; i < dsn.size(); i++) {
GDALDataset* poSrcDS = (GDALDataset*) gdalraster::gdalH_open_dsn(dsn[0], 0);
GDALTransformerFunc pfnTransformer;
pfnTransformer = GDALGenImgProjTransform;

void *pfnTransformerArg = nullptr;
pfnTransformerArg =
GDALCreateGenImgProjTransformer( poSrcDS,
nullptr,
nullptr,
target_crs[0],
FALSE, 0.0, 1 );

out[i] = gdal_suggest_warp(poSrcDS, pfnTransformerArg);
if (!(poSrcDS == nullptr)) {
GDALClose(poSrcDS);
}
}
return out;
}
Expand Down

0 comments on commit 953896c

Please sign in to comment.