[mapserver-users] Dynamic WMS Service - Projections problem?

Jean-François Gigand jean-francois at gigand.fr
Tue Feb 8 16:32:59 EST 2011


Hi,

Have you checked the MapServer logs?

To enable it, set the env variable MS_ERRORFILE to the log file path
and MS_DEBUGLEVEL to "5".
It will detail interesting details about how your layers are built.

Jeff


2011/2/8 myOpenLayersUName <joanne.mcgraw at sympatico.ca>:
>
> First, the background...
>
> I have a WMS Service that has an "empty" point layer in it. I use it to
> display labels at dynamically generated coordinates by passing x,y within
> the request. For example:
>
> http://<domain>/ogc/mapserv?map=/path/fenceLabelWms_en.map&map.layer[fencelabel]=FEATURE
> POINTS -105.5620661354989 51.14394472618872 END TEXT "Fence 1"
> END&map.layer[fencelabel].class[0]=COLOR 255 0 0
> END&map.layer[fencelabel].class[0]=LABEL COLOR 255 0 0 SIZE 10 POSITION UR
> END&LAYERS=fencelabel&mode=map
>
>
> The entire map file is as follows:
>
> MAP
>  NAME "fenceLabelWms_en"
>  FONTSET "../../../mapserv/etc/fonts.txt"
>  SYMBOLSET "../../../mapserv/etc/symbols.sym"
>  SIZE 400 300
>  IMAGETYPE PNG
>  IMAGECOLOR 255 255 255
>  RESOLUTION 96
>  EXTENT -141.5 41.5 -51.5 83.5 # all of Canada
>  UNITS METERS
>  PROJECTION
>    "init=epsg:4269" # lat/long
>  END
>  WEB
>    METADATA
>      "wms_srs" "EPSG:42304"
>    END
>  END
>
>  OUTPUTFORMAT
>    NAME png
>    DRIVER 'GD/PNG'
>    MIMETYPE 'image/png'
>    IMAGEMODE PC256 #RGB
>    FORMATOPTION "INTERLACE=OFF"
>    EXTENSION 'png'
>    TRANSPARENT ON
>  END
>
>  LAYER
>    NAME "fencelabel"
>    STATUS ON
>    TYPE point
>    CLASS
>      SIZE 0
>      COLOR 0 0 0
>      LABEL
>        TYPE truetype
>        FONT verdana
>        ANTIALIAS false
>      END
>    END
>  END
> END
>
>
> A number of  applications use this WMS and each has its own projection but,
> as in the request above, all pass the x,y as lat/long (EPSG:4269). The MAP
> METADATA's "wms_srs" lists the supported projections (for the purposes of
> this example, I'm simplifying by only including EPSG:42304).
>
>
> So, this allows me to provide the point coordinates in lat/long, but display
> them using the projection from the application itself. For example:
>
> http://<domain>/ogc/mapserv?map=/path/fenceLabelWms_en.map&map.layer[fencelabel]=FEATURE
> POINTS -105.5620661354989 51.14394472618872 END TEXT 'Fence 1'
> END&map.layer[fencelabel].class[0]=COLOR 255 0 0
> END&map.layer[fencelabel].class[0]=LABEL COLOR 255 0 0 SIZE 10 POSITION UR
> END&LAYERS=fencelabel&FORMAT=image/png&SRS=EPSG:42304&TRANSPARENT=true&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application/vnd.ogc.se_inimage&BBOX=-2903297.000,-789911.0000,3431059.000,3959683.000&WIDTH=1219&HEIGHT=601
>
>
> Knowing this, I can define this "dynamic" layer within a WMC <Layer> tag and
> load it into an OpenLayers Map (whose projection is set to EPSG:42304 and
> extents encompass all of Canada). The WMC definition for the above layer is
> as follows (we use a batch script to set the path to the MapServer
> executable and MAP file, "fenceLabelWms_en"):
>
> <Layer queryable="0" hidden="0">
>    <Server service="OGC:WMS" version="1.1.1">
>        <OnlineResource xlink:type="simple"
> xlink:href="http://<domain>/ogc/fenceLabelWms_en?map.layer[fencelabel]=FEATURE%20POINTS%20-105.5620661354989%2051.14394472618872%20END%20TEXT%20'Fence%201'%20END&amp;map.layer[fencelabel].class[0]=COLOR%20255%20105%200%20END&amp;map.layer[fencelabel].class[0]=LABEL%20COLOR%20255%20105%200%20SIZE%2010%20POSITION%20LR%20END"/>
>    </Server>
>    <Name>fencelabel</Name>
>    <Title>Fence 1</Title>
>    <SRS>EPSG:42304</SRS>
>    <FormatList>
>        <Format current="1">image/png</Format>
>    </FormatList>
>    <Extension>
>        <ol:maxExtent minx="-2903297.000" miny="-789911.0000"
> maxx="3431059.000" maxy="3959683.000"/>
>        <ol:transparent>true</ol:transparent>
>        <ol:numZoomLevels>5</ol:numZoomLevels>
>        <ol:units>m</ol:units>
>        <ol:isBaseLayer>false</ol:isBaseLayer>
>        <ol:displayInLayerSwitcher>false</ol:displayInLayerSwitcher>
>        <ol:singleTile>true</ol:singleTile>
>    </Extension>
> </Layer>
>
>
> Okay, everything works fine up to this point. The fence label WMS is
> displayed in the OpenLayers Map correctly in relation to the other layers it
> contains, all of which have projections of EPSG:42304.
>
>
> Now, the problem ...
>
> I’d like to print the image displayed to the user. To do this, I have
> another "empty" MAP file that I use to print the WMC; the same WMC I loaded
> into OpenLayers. The entire contents of this MAP file are:
>
> MAP
>  NAME "wmsContextServer"
>  FONTSET "../../../mapserv/etc/fonts.txt"
>  SYMBOLSET "../../../mapserv/etc/symbols.sym"
>  SIZE 400 300
>  STATUS ON
>  IMAGETYPE PNG
>  IMAGECOLOR 255 255 255
>  EXTENT -2338951 -800000 3008692 3900000
>  UNITS METERS
>  CONFIG "CGI_CONTEXT_URL" "1"
>  PROJECTION
>    "init=epsg:42304"
>  END
>
>  RESOLUTION 96
>
>  REFERENCE
>    # Parameter settings NOT to change
>    STATUS          ON
>    COLOR           -1 -1 -1
>    OUTLINECOLOR    255 0 0
>    # Parameter settings that will change if you replace the default
> 'refmap.png'
>    IMAGE           "../htdocs/images/refmap.png"
>    SIZE            100 74
>    EXTENT          -2.2e+006 -712631 3.0728e+006 3.84e+006
>  END # REFERENCE
>
>  SCALEBAR
>    STATUS EMBED
>    INTERVALS 1
>    POSITION LL
>    TRANSPARENT true
>    UNITS kilometers
>    STYLE 1
>    SIZE 100 7
>    LABEL
>      SIZE small
>    END
>  END
>
>  WEB
>    INCLUDE "../../../mapserv/conf/imagepath.inc.map"
>    METADATA
>      # Used for App Page Title
>      "wms_title" "WMC Context Client"
>      "wms_connectiontimeout" "60"
>    END
>  END
>  OUTPUTFORMAT
>    NAME png
>    DRIVER 'GD/PNG'
>    MIMETYPE 'image/png'
>    IMAGEMODE RGB
>    FORMATOPTION "INTERLACE=OFF"
>    EXTENSION 'png'
>    #TRANSPARENT ON
>  END
>
>  OUTPUTFORMAT
>    NAME gif
>    DRIVER 'GD/GIF'
>    MIMETYPE 'image/gif'
>    IMAGEMODE RGB
>    FORMATOPTION "INTERLACE=OFF"
>    EXTENSION 'gif'
>  END
>
> END
>
>
> Unfortunately, the "dynamic" WMS layer doesn't appear in the output image. I
> can use the following URL to get an image of all the other layers in the WMC
> successfully, but the fence label is not shown and there is no error
> message:
>
> http://<domain>/ogc/mapserv?map=/path/wmsContextServer.map&mode=map&context=http://<domain>/contexts/WMCwFenceLabels.xml&layers=all
>
>
>
> I'm guessing MapServer is getting a blank image when it's assembling the
> layers for the output image and I'm further guessing that this is the result
> of the projections somehow getting out of whack somewhere along the line.
> I'm thinking that the point is being evaluated as not actually existing
> within the extents of the output image being generated, perhaps? But, I
> can't guess why this would be the case. There is no question that it does
> fall within the extents (as witnessed by loading the same WMC in
> OpenLayers).
>
>
> As it is now, I am completely stuck as to what the problem might be. Can
> anyone suggest anything that might help me narrow down exactly what the
> problem is or a direction I can investigate further?
>
> --
> View this message in context: http://osgeo-org.1803224.n2.nabble.com/Dynamic-WMS-Service-Projections-problem-tp6004893p6004893.html
> Sent from the Mapserver - User mailing list archive at Nabble.com.
> _______________________________________________
> 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