Hi,

I've found a projection weirdness in php_mapscript vs. Mapserver, and
i'd appreciate any hint (i'm pretty desperate already :-/ )..

i'm using php_mapscript to load a mapfile, and put a marker on the map.
The map (and background raster) is in the (in)famous "Google"
projection, while marker data is in WGS84.

During debugging i noticed that using the _same_ coordinates and
projection, i get two different marker positions on the map, depending
whether i reproject the marker "manually" using php_mapscript or
via Mapserver itself...

The attached example (also available at
http://map.timatio.com/trace_icon_32.87_9.33_260x150_TEST.jpg ) shows
the problem - the "upper" marker is reprojected using Mapserver, and the
"lower" using php_mapscript, even though they use the same coordinates and projection. The further away from the equator, the
larger the offset becomes (you can play around with the lat/long
parameters after "_icon_" in the above URL).

The respective lines of code look like this (i _think_ the projection is
absolutely identical for both cases - compare the mapscript lines with
the mapfile below..):

     // manual reprojection - weirdness avoidance
     $in_proj = ms_newProjectionObj("proj=longlat, ellps=WGS84,
datum=WGS84, no_defs");
     $out_proj = ms_newProjectionObj("proj=merc, a=6378137, b=6378137,
lat_ts=0.0, lon_0=0.0, x_0=0.0, y_0=0, k=1.0, units=m, [EMAIL PROTECTED],
no_defs");
     $centerpoint = ms_newPointObj();
     $centerpoint->setXY($args['lon'], $args['lat']);
     $centerpoint->project($in_proj, $out_proj);

     ...

     // set marker in "manually" projected layer
     $center_layer = $map->getLayerByName("center");
     $point = ms_newPointObj();
     $point->setXY($centerpoint->x, $centerpoint->y);
     $line = ms_newLineObj();
     $line->add($point);
     $shp = ms_newShapeObj(MS_SHAPE_POINT);
     $shp->add($line);
     $center_layer->addFeature($shp);

     // set marker for "mapserver projected" layer
     $centertest_layer = $map->getLayerByName("centertest");
     $pointtest = ms_newPointObj();
     $pointtest->setXY($args['lon'], $args['lat']);
     $linetest = ms_newLineObj();
     $linetest->add($pointtest);
     $shptest = ms_newShapeObj(MS_SHAPE_POINT);
     $shptest->add($linetest);
     $centertest_layer->addFeature($shptest);

And the mapfile looks like this:

#
# Start of map file
#

NAME micromap
STATUS ON
SIZE 176 116
UNITS meters
DEBUG ON
OUTPUTFORMAT
   NAME jpeg
   FORMATOPTION "QUALITY=95"
   FORMATOPTION "INTERLACE=OFF"
   DRIVER "GD/JPEG"
END
PROJECTION
   "proj=merc"
   "a=6378137"
   "b=6378137"
   "lat_ts=0.0"
   "lon_0=0.0"
   "x_0=0.0"
   "y_0=0"
   "k=1.0"
   "units=m"
   "[EMAIL PROTECTED]"
   "no_defs"
END
EXTENT -300000 -200000 300000 200000
SHAPEPATH "/data/gis/NE2/"
IMAGECOLOR 204 221 238
IMAGETYPE png24

FONTSET /data/gis/brd/fonts.list

SYMBOL
   NAME "punkterl"
   TYPE PIXMAP
   IMAGE assets/punkterl.png
LAYER
   NAME "NE2_modis3"
   STATUS ON
   TILEINDEX "/data/gis/NE2/NE2-modis3-tileindex.shp"
   TILEITEM "Location"
   TYPE RASTER
END

LAYER
   NAME "centertest"
   STATUS on
   TYPE point
   TRANSFORM true
   POSTLABELCACHE true
   PROJECTION
     "proj=latlong"
     "datum=WGS84"
     "ellps=WGS84"
     "no_defs"
   END
   CLASS
     STYLE
       SYMBOL "punkterl"
     END
     LABEL
       ANGLE 0
       SIZE 9
       COLOR 0 0 0
       TYPE truetype
       FONT dejavu
       POSITION uc
       OFFSET 0 2
       FORCE true
       BUFFER 3
       MINFEATURESIZE 10
     END
   END
   TRANSPARENCY alpha
END

LAYER
   NAME "center"
   STATUS on
   TYPE point
   TRANSFORM true
   POSTLABELCACHE true
   CLASS
     STYLE
       SYMBOL "punkterl"
     END
     LABEL
       ANGLE 0
       SIZE 9
       COLOR 0 0 0
       TYPE truetype
       FONT dejavu
       POSITION uc
       OFFSET 0 2
       FORCE true
       BUFFER 3
       MINFEATURESIZE 10
     END
   END
   TRANSPARENCY alpha
END

END


Notice that the projection is (imho) absolutely identical - The
"correct" reprojection seems to be the "manual" reprojection - it aligns
with the background map that was reprojected with gdalwarp...

Mapserver version is 4.10, proj version is 4.4.9d-2 - I do appreciate
any hints on what i could be doing wrong..

thanks,

Alex

<<inline: trace_icon_32.87_9.33_260x150_TEST.jpg>>

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

Reply via email to