[fdo-dev] Raster SetBounds()

Frank Warmerdam warmerdam at pobox.com
Thu Oct 5 12:35:22 EDT 2006


Traian Stanev wrote:
> 
> Hi Frank,
> 
> MapGuide shouldn't be expecting the extent of the FdoIRaster to match
> the queried extent. I looked at the sources again, and here is what
> MapGuide does:
> 
> 1. Execute a Select query of a computed identifier which contains a
> RESAMPLE function, like this (StylizationUtil.cpp):
> 
>         //Set up RESAMPLE command
>         FdoPtr<FdoExpressionCollection> funcParams =
> FdoExpressionCollection::Create();
>         FdoPtr<FdoIdentifier> rasterProp =
> FdoIdentifier::Create(geom.c_str());
>         funcParams->Add(rasterProp);
>         FdoPtr<FdoDataValue> minX = FdoDataValue::Create(extent.minx,
> FdoDataType_Double);
>         funcParams->Add(minX);
>         FdoPtr<FdoDataValue> minY = FdoDataValue::Create(extent.miny,
> FdoDataType_Double);
>         funcParams->Add(minY);
>         FdoPtr<FdoDataValue> maxX = FdoDataValue::Create(extent.maxx,
> FdoDataType_Double);
>         funcParams->Add(maxX);
>         FdoPtr<FdoDataValue> maxY = FdoDataValue::Create(extent.maxy,
> FdoDataType_Double);
>         funcParams->Add(maxY);
>         FdoPtr<FdoDataValue> height = FdoDataValue::Create(devHeight);
>         funcParams->Add(height);
>         FdoPtr<FdoDataValue> width = FdoDataValue::Create(devWidth);
>         funcParams->Add(width);
> 
>         FdoPtr<FdoFunction> clipFunc = FdoFunction::Create(L"RESAMPLE",
> funcParams);
> 
>         STRING func = clipFunc->ToString();
>         options->AddComputedProperty(L"clipped_raster", func);
> 
> 
> The RESAMPLE function is set up to request the full visible extent at a
> certain window size. So far so good.
> 
> 2. Later, when reading the FdoRaster, the RasterAdapter.cpp code in
> MapGuide does not actually expect the raster extent to equal the visible
> extent. Here is what it does:
> 
>     //first get the map data extent
>     RS_Bounds mapExt = renderer->GetBounds();
> 
>     //get the map extent of the image
>     //TODO: need to transform to destination coordinate system
>     RS_Bounds imgExt = raster->GetExtent();
> 
>     //intersect the image extent with the requested map extent
>     RS_Bounds intExt = RS_Bounds::Intersect(mapExt, imgExt);
> 
>     //if raster bounds outside map extent, don't stylize
>     if (intExt.IsValid())
>     {
>         .....
> 
> 
> 
> As long as your RESAMPLE is implemented correctly, I don't see why there
> would be a problem. Note that MapGuide reads the raster that comes out
> of the computed property (i.e. the resampled raster).

Traian,

OK, this gives me something to dig into.

Thanks!
-- 
---------------------------------------+--------------------------------------
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | President OSGeo, http://osgeo.org





More information about the Fdo-internals mailing list