[mapserver-users] Rewarping/Reprojection with GDAL and -wo EXTRA_SOURCE parameter
Eichner, Andreas - SID-NLKM
Andreas.Eichner at sid.sachsen.de
Wed Dec 18 07:25:52 PST 2013
Hello Heiko,
the problem is the way mapserver builds the source extent. A quick fix might be introducing a processing directive to force mapserver using the layer's full extent:
diff --git a/mapdraw.c b/mapdraw.c
index 992838d..7f2179e 100644
--- a/mapdraw.c
+++ b/mapdraw.c
@@ -948,6 +948,9 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image)
if(layer->transform == MS_TRUE) {
searchrect = map->extent;
#ifdef USE_PROJ
+ if (msLayerGetProcessingKey(layer, "FORCE_FULL_EXTENT"))
+ searchrect = layer->extent;
+ else
if((map->projection.numargs > 0) && (layer->projection.numargs > 0))
msProjectRect(&map->projection, &layer->projection, &searchrect); /* project the searchrect to source coords */
#endif
With this small patch you can rebuild mapserver and use
PROCESSING "FORCE_FULL_EXTENT=YES"
In a vector layer .
As said, this should be considered a quick fix. A bug should be reported on this as other parts in the code path seem to deal more nicely in such situations.
HTH
> -----Ursprüngliche Nachricht-----
> Von: Heiko Schröter [mailto:schroete at iup.physik.uni-bremen.de]
> Gesendet: Mittwoch, 18. Dezember 2013 12:19
> An: Eichner, Andreas - SID-NLKM; mapserver-users at lists.osgeo.org
> Betreff: Re: [mapserver-users] Rewarping/Reprojection with GDAL and -
> wo EXTRA_SOURCE parameter
>
> I've omitted the postgis stuff in the mapfile, because of access
> restrictions.
> In the EPSG file i have placed this dummy epsg code for reprojection:
>
> <snip>
> <0815> +proj=ortho +over +lon_0=0 +lat_0=90 +ellps=WGS84 +datum=WGS84
> +units=m +no_defs <>
> <snap>
>
>
> MAP
> NAME WELT
>
> OUTPUTFORMAT
> NAME "aggpng24"
> DRIVER AGG/PNG
> MIMETYPE "image/png"
> IMAGEMODE RGB
> EXTENSION "png"
> END
>
> STATUS ON
> SHAPEPATH "/your/shape/path/"
>
> TRANSPARENT ON
> MAXSIZE 10000
>
> # Requesting polar plot with a dummy "EPSG:0815" in epsg file
> # <0815> +proj=ortho +over +lon_0=0 +lat_0=90 +ellps=WGS84
> +datum=WGS84 +units=m +no_defs <>
> PROJECTION
> "init=epsg:4326"
> END
>
> WEB
> IMAGEPATH "/var/www/localhost/htdocs/tmpimages/"
> IMAGEURL "/tmpimages/"
> METADATA
> "ows_srs" "EPSG:4326 EPSG:0815 EPSG:0816 EPSG:3857
> EPSG:900913"
> "wms_enable_request" "*"
> END
> END
>
> LAYER
> EXTENT -180 -90 180 90
> NAME "KARTE1"
> TYPE RASTER
> STATUS OFF
> OPACITY 100
> DATA "YourMap.png"
> METADATA
> "wms_title" "karte layer"
> END
> PROJECTION
> "init=epsg:4326"
> END
>
> CLASS
> NAME "karte_class"
> OUTLINECOLOR 0 0 0
> COLOR 180 180 180
> SYMBOL 0
> END
> END # Layer
>
> LAYER
> TYPE LINE
> STATUS OFF
> EXTENT -180 -90 180 90
> NAME "GRID"
> OPACITY 50
> METADATA
> "wms_title" "grid layer"
> END
> PROJECTION
> "init=epsg:4326"
> END
> CLASS
> NAME "Graticule"
> STYLE
> COLOR 180 90 0
> MAXWIDTH 2
> MINWIDTH 2
> END
> END
> GRID
> LABELFORMAT "DD" MAXARCS 1 MININTERVAL 15 MAXINTERVAL 60
> MAXSUBDIVIDE 360
> END
> END # Layer
> END # Ende Map
>
>
>
>
>
> Am 18.12.2013 11:27, schrieb Eichner, Andreas - SID-NLKM:
> > Can you provide a simple test case, probably a MAP file with inline
> data? I've created some simple test data but I am unable to reproduce
> the problem.
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: Heiko Schröter [mailto:schroete at iup.physik.uni-bremen.de]
> >> Gesendet: Dienstag, 17. Dezember 2013 21:01
> >> An: Eichner, Andreas - SID-NLKM; mapserver-users at lists.osgeo.org;
> >> Heiko Schröter
> >> Betreff: Re: [mapserver-users] Rewarping/Reprojection with GDAL
> and -
> >> wo EXTRA_SOURCE parameter
> >>
> >> Seems not to work. Failure can be reproduced by changing BBOX
> params.
> >> I've setup a test site with three layers so you may have a look.
> >> Blue Marble = RASTER
> >> Grid = LINE
> >> Coloured Rect = POSTGIS
> >>
> >>
> >> Warping ok from epsg4326->ortho:
> >>
> >> http://www.iup.uni-bremen.de/warehouse/cgi-bin/laura?BBOX=-
> 6500000,-
> >> 6500000,6500000,6500000&FORMAT=IMAGE/PNG&FROMDAT=2006-08-
> >> 06%2000:00&HOEHE=-
> >>
> 1&LAYERS=KARTE1,WILLI,GRID&MAP=/var/www/localhost/mapserver/laura.map
> >>
> &PRODUKT=stro3_21&REQUEST=GETMAP&SERVICE=WMS&SRS=EPSG:0815&STYLES=&TI
> >> ME=2006-10-06%2000:00/2006-10-08%2023:59&TODAT=2006-08-
> >> 07%2023:59&TRANSPARENT=FALSE&VERSION=1.1.1&WIDTH=600&HEIGHT=600
> >>
> >> Warping distorted:
> >>
> >> http://www.iup.uni-bremen.de/warehouse/cgi-bin/laura?BBOX=-
> 4500000,-
> >> 4500000,4500000,4500000&FORMAT=IMAGE/PNG&FROMDAT=2006-08-
> >> 06%2000:00&HOEHE=-
> >>
> 1&LAYERS=KARTE1,WILLI,GRID&MAP=/var/www/localhost/mapserver/laura.map
> >>
> &PRODUKT=stro3_21&REQUEST=GETMAP&SERVICE=WMS&SRS=EPSG:0815&STYLES=&TI
> >> ME=2006-10-06%2000:00/2006-10-08%2023:59&TODAT=2006-08-
> >> 07%2023:59&TRANSPARENT=FALSE&VERSION=1.1.1&WIDTH=600&HEIGHT=600
> >>
> >>
> >>
> >> Am 17.12.2013 17:57, schrieb Eichner, Andreas - SID-NLKM:
> >>> Can you try if PROCESSING "POLYLINE_NO_CLIP=YES" helps on TYPE
> LINE
> >> layers?
> >>>> -----Ursprüngliche Nachricht-----
> >>>> Von: Heiko Schröter [mailto:schroete at iup.physik.uni-bremen.de]
> >>>> Gesendet: Dienstag, 17. Dezember 2013 16:46
> >>>> An: Eichner, Andreas - SID-NLKM; mapserver-users at lists.osgeo.org
> >>>> Betreff: Re: [mapserver-users] Rewarping/Reprojection with GDAL
> >> and -
> >>>> wo EXTRA_SOURCE parameter
> >>>>
> >>>> Thanks for the hint, but sorry no, does not change rewarping
> >>>> behaviour
> >>>> of POLYGON or LINE Layers.
> >>>> Distortion and missing parts do remain.
> >>>>
> >>>> The odd thing:
> >>>> The projection of all layers is ok if the BBOX equals or is
> >> greater
> >>>> than
> >>>> max extension of the map.
> >>>> i.e. BBOX=-6500000,-6500000,6500000,6500000 [proj=ortho units=m]
> >>>> By "zooming" in i.e. reducing the BBOX the RASTER layer rewarps
> >> ok,
> >>>> POLYGON and LINE layers do not.
> >>>>
> >>>>
> >>>> Am 17.12.2013 16:11, schrieb Eichner, Andreas - SID-NLKM:
> >>>>> Looks like that causes the same effect as setting
> >>>>> PROCESSING "LOAD_WHOLE_IMAGE=YES"
> >>>>>
> >>>>>> -----Ursprüngliche Nachricht-----
> >>>>>> Von: mapserver-users-bounces at lists.osgeo.org
> [mailto:mapserver-
> >>>> users-
> >>>>>> bounces at lists.osgeo.org] Im Auftrag von Heiko Schröter
> >>>>>> Gesendet: Dienstag, 17. Dezember 2013 14:09
> >>>>>> An: mapserver-users at lists.osgeo.org
> >>>>>> Betreff: [mapserver-users] Rewarping/Reprojection with GDAL
> and
> >> -
> >>>> wo
> >>>>>> EXTRA_SOURCE parameter
> >>>>>>
> >>>>>> To make use of it in mapserver a hint has been given in an old
> >>>>>> mailing
> >>>>>> thread (sorry, lost the source) to adjust the following code
> >>>> snippet
> >>>>>> in
> >>>>>> resample.c:
> >>>>>>
> >>>>>> Version: mapserver-6.4.0
> >>>>>> resample.c
> >>>>>> <snip>
> >>>>>> /* -----------------------------------------------------------
> --
> >> --
> >>>> ---
> >>>>>> -- */
> >>>>>> /* Project desired extents out by 2 pixels, and
> then
> >>>> strip
> >>>>>> to */
> >>>>>> /* available
> >>>>>> data. */
> >>>>>> /*
> >>>>>> --------------------------------------------------------------
> --
> >> --
> >>>> --
> >>>>>> */
> >>>>>> memcpy( &sOrigSrcExtent, &sSrcExtent, sizeof(sSrcExtent)
> );
> >>>>>> sSrcExtent.minx = floor(sSrcExtent.minx-1.0);
> >>>>>> sSrcExtent.maxx = ceil (sSrcExtent.maxx+1.0);
> >>>>>> sSrcExtent.miny = floor(sSrcExtent.miny-1.0);
> >>>>>> sSrcExtent.maxy = ceil (sSrcExtent.maxy+1.0);
> >>>>>> <snap>
> >>>>>>
> >>>>>> Changing the -/+1.0 to -/+1250.0, for example, warps the
> RASTER
> >>>> image
> >>>>>> correctly.
> >>>>>>
> >>>>
> >>>> --
> >>>> ----------------------------------------------------------------
> --
More information about the MapServer-users
mailing list