[mapserver-users] Why $map->scaledenom returns -1 ?

Lime, Steve D (MNIT) Steve.Lime at state.mn.us
Fri Jun 20 09:26:12 PDT 2014


One more thing is needed to compute scale: map units. Try setting that in your mapfile (e.g. UNITS METERS), then make sure you set a proper map extent and map size via PHP and things should work.

Steve

From: mapserver-users-bounces at lists.osgeo.org [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Vladimir
Sent: Thursday, June 19, 2014 3:17 AM
To: mapserver-users
Subject: Re: [mapserver-users] Why $map->scaledenom returns -1 ?

Hi Steve

Yes it is WMS request from OL3:
http://localhost/map,php?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=rayon&CRS=EPSG%3A3857&STYLES=&MAP_RESOLUTION=135&WIDTH=2025&HEIGHT=1125&BBOX=1950071.7561607715%2C1681030.6423115395%2C15158390.243839229%2C9018985.35768846

I considered MapServer captures width, height and extent from GetMap request  parameters.
But either
$request->loadparams()
or

foreach ($_GET as $key => $value)
{
$request->setparameter($key, $value);
}
don't  calculate them and scaledenom=-1 as result.

Is there another unknown method for me?

Now this works only with additional extracting from $_GET:

foreach ($_GET as $key => $value)
{
$request->setparameter($key, $value);
}
if(!empty($_GET['BBOX']) && !empty($_GET['WIDTH']) && !empty($_GET['HEIGHT']))
{
$extentArray=explode(',',$_GET['BBOX']);
$minX=$extentArray[0];
$minY=$extentArray[1];
$maxX=$extentArray[2];
$maxY=$extentArray[3];
$width=(int)$_GET['WIDTH'];
$height=(int)$_GET['HEIGHT'];
$map->setSize($width,$height);
$map->setExtent($minX,$minY,$maxX,$maxY);
$map->preparequery();
$scale=$map->scaledenom;
}
Can't understand what's wrong. Any idea ?

Best regards
Vladimir


Tue, 17 Jun 2014 14:29:53 +0000 от "Lime, Steve D (MNIT)" <Steve.Lime at state.mn.us<mailto:Steve.Lime at state.mn.us>>:

This is a WMS request? I’d think MapServer would populate width, height and extent for you. What are the values for those parameters if you don’t set them explicitly?



Steve



From: mapserver-users-bounces at lists.osgeo.org<mailto:mapserver-users-bounces at lists.osgeo.org> [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Vladimir
Sent: Tuesday, June 17, 2014 6:57 AM
To: mapserver-users
Subject: Re: [mapserver-users] Why $map->scaledenom returns -1 ?



Hello Steve.

Thank you very much for the thought.

I use OpenLayers 3 on client side whose query string contains:
&WIDTH=2025&HEIGHT=1125&BBOX=5252151,2C3515519,11856310613,7184496

and futher scaledenom is computed:

$extentArray=explode(',',$_GET['BBOX']);
$minX=$extentArray[0];
$minY=$extentArray[1];
$maxX=$extentArray[2];
$maxY=$extentArray[3];
$width=(int)$_GET['WIDTH'];
$height=(int)$_GET['HEIGHT'];
$map->setExtent($minX,$minY,$maxX,$maxY);
$map->setSize($width,$height);
$map->preparequery();
$scale=$map->scaledenom;

It works for me, but I am not sure that is standard method.
Can this be used?

Best regards
Vladimir

16  2014, 15:43 UTC от "Lime, Steve D (MNIT)" <Steve.Lime at state.mn.us<//e.mail.ru/compose/?mailto=mailto%3aSteve.Lime at state.mn.us>>:

Scale can only be computed if there is a map extent and map size set. Are you doing so?



Steve



From: mapserver-users-bounces at lists.osgeo.org<//e.mail.ru/compose/?mailto=mailto%3amapserver%2dusers%2dbounces at lists.osgeo.org> [mailto:mapserver-users-bounces at lists.osgeo.org<//e.mail.ru/compose/?mailto=mailto%3amapserver%2dusers%2dbounces at lists.osgeo.org>] On Behalf Of Vladimir
Sent: Monday, June 16, 2014 1:12 AM
To: mapserver-users
Subject: [mapserver-users] Why $map->scaledenom returns -1 ?



Hello list

I stuck on the scaledenom definition in my PHPMapScript v. 6.4.1.
The current scaledenom  required to embed in SQL-statement, but
$map->scaledenom returns -1. Tons of googling got nothing. Please help!

 phpscript.php ---------------------------------------------------------------------------------------------

        $map = ms_newMapobj("/srv/www/htdocs/tez/design/mapfile.map");
        $request = ms_newOwsrequestObj();
        if(!empty($_GET)){
            foreach ($_GET as $key => $value) {
                $request->setparameter($key, $value);
            }
        }

        $map->preparequery();
        $map->scaledenom;//returns -1

        $rayonLayer = $map->getLayerByName("rayon");
        $rayonLayer->set("data","geom from (select id, name, geom from location
        where ST_Intersects(geom, !BOX!)) as subquery using unique id using srid=3857");

        ms_ioinstallstdouttobuffer();
        $map->owsDispatch($request);

        $contenttype = ms_iostripstdoutbuffercontenttype();
        header('Content-type:'.$contenttype);
        ms_iogetStdoutBufferBytes();
        ms_ioresethandlers();


mapfile.map---------------------------------------------------------------------------------------------

MAP
    NAME    "Map"
    OUTPUTFORMAT
        NAME 'AGG'
        DRIVER AGG/PNG
        IMAGEMODE RGB
    END #OUTPUTFORMAT
    STATUS        ON
    FONTSET    "fonts/fonts.list"
    CONFIG    "PROJ_LIB" "/usr/lib/proj/"
    WEB
        METADATA
            wms_title    "Map"
            wms_abstract    "Map"
            wms_onlineresource    "http://localhost/phpscript.php"
            wms_srs    "EPSG:3857"
            wms_enable_request        "*"
            wms_encoding    "utf-8"
        END # end METADATA
    END # end WEB
    PROJECTION
        "init=epsg:3857"
    END # end PROJECTION
    LAYER
        NAME    "rayon"
        STATUS        ON
        CONNECTIONTYPE    postgis
        CONNECTION    "user=ms_viewer password=1 dbname=ms_db host=localhost"
        TYPE    POLYGON
        LABELITEM    "name"
        CLASS
            NAME    "rayons"
                STYLE
                    OUTLINECOLOR    255 0 0
                    OUTLINEWIDTH    5
                END # end STYLE
        END # end CLASS
        PROJECTION
            "init=epsg:3857"
        END # end PROJECTION
        METADATA
            wms_title    "rayon"
            wms_abstract    "rayon"
            wms_srs    "EPSG:3857"
            wms_include_items    "all"
        END # end METADATA
    END # end LAYER
END # end MAP
---------------------------------------------------------------------------------------------

Best regards


--
Vladimir



________________________________

--
Vladimir


--
Vladimir
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20140620/cd4590cb/attachment.htm>


More information about the MapServer-users mailing list