Hello Andreas,

thanks for the patch.

The POSTGIS (i.e. POLYGON) and RASTER layers are fine in any zoom or pan level. The LINE layer is ok if the BBOX has not been paned to far of center (for the "ortho" projection) and if extremly zoomed in the poles are cut.

It looks like that POLYGON and LINE Layers are treated a little bit differently.

If you like here is the test site with the patch included.

Zoomed in, plus poles cut out in LINE layer:
http://www.iup.uni-bremen.de/warehouse/cgi-bin/laura?BBOX=-2500000,-2500000,2500000,2500000&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:0816&STYLES=&TIME=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

Half a LINE layer missing when BBOX to far off center:
http://www.iup.uni-bremen.de/warehouse/cgi-bin/laura?BBOX=-6500000,-6500000,2500000,2500000&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:0816&STYLES=&TIME=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

Regards
Heiko




Am 18.12.2013 16:25, schrieb Eichner, Andreas - SID-NLKM:

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:[email protected]]
Gesendet: Mittwoch, 18. Dezember 2013 12:19
An: Eichner, Andreas - SID-NLKM; [email protected]
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:[email protected]]
Gesendet: Dienstag, 17. Dezember 2013 21:01
An: Eichner, Andreas - SID-NLKM; [email protected];
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:[email protected]]
Gesendet: Dienstag, 17. Dezember 2013 16:46
An: Eichner, Andreas - SID-NLKM; [email protected]
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: [email protected]
[mailto:mapserver-
users-
[email protected]] Im Auftrag von Heiko Schröter
Gesendet: Dienstag, 17. Dezember 2013 14:09
An: [email protected]
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.


--
----------------------------------------------------------------
--



_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to