AW: [mapserver-users] Getting an image scaled to pixels

Eichner, Andreas - SID-NLKM Andreas.Eichner at sid.sachsen.de
Thu Mar 8 23:16:47 PST 2012


You might try:

mapserverMap.setConfigOption("MS_NONSQUARE", "YES");

this is basically what that WMS server code does to enable non-square pixels.

HTH
 

> -----Ursprüngliche Nachricht-----
> Von: mapserver-users-bounces at lists.osgeo.org 
> [mailto:mapserver-users-bounces at lists.osgeo.org] Im Auftrag von Stuart
> Gesendet: Freitag, 9. März 2012 01:33
> An: mapserver-users at lists.osgeo.org
> Betreff: [mapserver-users] Getting an image scaled to pixels
> 
> Hi,
> 
> I have a csharp application using map_script that I am using to cut up
> an ECW file into tiles for display on a Bing map. The issue I am
> having is that each tile slightly overlaps others above and below it.
> The procedure I am using is as follows:
> 
> I load the basic map file below add the projection and units from
> within a csharp application:
> 
>    mapserverMap = new mapObj(mapOutputPath + mapFileName);
>    mapserverMap.setWKTProjection("+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 +nadgrids=@null
> +no_defs ");
>    mapserverMap.setSize(256, 256);
>    mapserverMap.units = MS_UNITS.MS_DD ;
> 
> 
> I then use the csharp application to add a single RASTER layer
> 
>    layerObj layer = new layerObj(mapserverMap);
>    Console.WriteLine(mapserverMap.layerorder);
>    layer.name = ecwName;
>    layer.type = MS_LAYER_TYPE.MS_LAYER_RASTER;
>    layer.status = mapscript.MS_ON;
>    layer.sizeunits = (int)MS_UNITS.MS_PIXELS;
> 
>    var extentdoubles = GetPlanExtentFromDB(ecwName, 
> planConnectionString);
>    layer.setExtent(extentdoubles[0], extentdoubles[1],
> extentdoubles[2], extentdoubles[3]);
> 
>    layer.data = mapOutputPath + ecwName + ".ecw";
> 
> I have identified the issue is when for each quadKey I set the
> mapserverMap extent to the bounding box of the quadKey MapServer
> changes the latitudes of its extent to fit the map size (256 x 256)
> 
> e.g. for quadKey 31121320312020 i set the MapServer extent to:
> 
>    maxX
>    152.95166015625
>    maxY
>    -30.334953881988554
>    minX
>    152.9296875
>    minY
>    -30.353916372297036
> 
> Then after setting the extent if I ask MapServer for its 
> extent it returns:
> 
>    mapserverMap.extent
>    {OSGeo.MapServer.rectObj}
>        maxx: 152.95166015625
>        maxy: -30.333448799017795
>        minx: 152.9296875
>        miny: -30.355421455267795
> 
> Notice the Longitudes are the same but the Latitudes (minY, maxY) have
> been stretched.
> 
> So my question is that when I set mapserverMap object to the bounding
> box I want it to be set to the latitude and longitude given and
> stretched to fit the map size (256 x 256) rather than MapServer
> modifying the latitudes to fit the map size.
> 
> Any help would be appreciated.
> 
> Stuart
> 
> --
> 
> Here is the starting map file
> 
> MAP
>        NAME MyMap
> 
>        DEBUG ON
>        IMAGECOLOR 128 155 155
> 
>        UNITS DD
>        RESOLUTION 96
>        TRANSPARENT OFF
>        CONFIG   "PROJ_LIB"  "/ms4w/proj/nad/"
>        CONFIG "CPL_DEBUG" "ON"
>        SYMBOLSET ./etc/symbols.sym
>        IMAGETYPE png
>        FONTSET ./etc/fonts.txt
> 
> END
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
> 



More information about the MapServer-users mailing list