bool OperationHelperRaster::resample(IRasterCoverage& raster1, IRasterCoverage& raster2, ExecutionContext *ctx) { if ( !raster1.isValid()) return false; IGeoReference commonGeoref = raster1->georeference(); if ( ctx->_masterGeoref != sUNDEF) { if(!commonGeoref.prepare(ctx->_masterGeoref)) return false; } if (raster1->georeference()!= commonGeoref ){ Resource res; res.prepare(); QString expr = QString("%3=resample(%1,%2,nearestneighbour)").arg(raster1->resource().url().toString()).arg(commonGeoref->resource().url().toString()).arg(res.name()); ExecutionContext ctxLocal; SymbolTable symtabLocal; if(!commandhandler()->execute(expr,&ctxLocal,symtabLocal)) return false; QVariant var = symtabLocal.getValue(res.name()); raster1 = var.value<IRasterCoverage>(); } if ( raster2.isValid() && raster2->georeference()!= commonGeoref ){ Resource res; res.prepare(); QString expr = QString("%3=resample(%1,%2,nearestneighbour)").arg(raster2->resource().url().toString()).arg(commonGeoref->resource().url().toString()).arg(res.name()); ExecutionContext ctxLocal; SymbolTable symtabLocal; if(!commandhandler()->execute(expr,&ctxLocal,symtabLocal)) return false; QVariant var = symtabLocal.getValue(res.name()); IRasterCoverage outRaster = var.value<IRasterCoverage>(); raster2.assign(outRaster); } return true; }
IRasterCoverage OperationHelperRaster::resample(const IRasterCoverage& sourceRaster, const IGeoReference& targetGrf) { if (!sourceRaster.isValid() || !targetGrf.isValid()) return IRasterCoverage(); Resource res; res.prepare(); QString expr = QString("%3=resample(%1,%2,nearestneighbour)").arg(sourceRaster->resource().url().toString()).arg(targetGrf->resource().url().toString()).arg(res.name()); ExecutionContext ctxLocal; SymbolTable symtabLocal; if (!commandhandler()->execute(expr, &ctxLocal, symtabLocal)) return false; QVariant var = symtabLocal.getValue(res.name()); return var.value<IRasterCoverage>(); }