[mapserver-users] turning on layers at a particular zoom level
Rahkonen Jukka
Jukka.Rahkonen at mmmtike.fi
Wed Sep 2 05:48:06 PDT 2009
Hi,
Collect the layers to one GROUP, and send requests against the GROUP instead of the original scale dependent layers. Mapfile may have something like this inside:
LAYER
GROUP "group"
NAME "scale1"
MAXSCALEDENOM 100000
.
.
.
END
LAYER
GROUP "group"
NAME "scale2"
TYPE POLYGON
MAXSCALEDENOM 1000000
MINSCALEDENOM 100000
.
.
.
END
sunny74 wrote:
>
>
> Hi,
>
> Thanks for the reply.
>
> 1) Can u tell me how to sandwich all the layers and make one
> WMS call to the server and request all of the layers in one
> image/call.
> Presently I am calling the layers separately as below:
>
> function init() {
>
> //alert("in init");
> map = new OpenLayers.Map('<%=map.ClientID%>');
>
> //
> layer = new OpenLayers.Layer.WMS("OpenLayers WMS",
>
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", { map:
> 'Shape/newwr1.map', layers: 'STATE', 'format': 'png' });
>
> layer1 = new OpenLayers.Layer.WMS("Rail Main",
>
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", { map:
> 'Shape/newwr1.map', transparent: 'true', layers: 'Railwayline' });
>
> // layer2 = new OpenLayers.Layer.WMS("Rail WaterBody",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", { map:
> 'Shape/newwr1.map', transparent: 'true', layers: 'WaterBody' });
>
> // layer3 = new OpenLayers.Layer.WMS("Rail Rail_Buffer",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", { map:
> 'Shape/newwr1.map', transparent: 'true', layers: 'Rail_Buffer' });
>
> // layer4 = new OpenLayers.Layer.WMS("Roads",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", { map:
> 'Shape/newwr1.map', transparent: 'true', layers: 'Roads' });
>
> // layer5 = new OpenLayers.Layer.WMS("Diversions",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", {
> map: 'Shape/newwr1.map', transparent: 'true', layers: 'Diversions' });
>
> // layer6 = new OpenLayers.Layer.WMS("Rail Side_Line",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", {
> map: 'Shape/newwr1.map', transparent: 'true', layers:
> 'Rail_Side_Line' });
> // layer7 = new OpenLayers.Layer.WMS("LANDMARKS",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", {
> map: 'Shape/newwr1.map', transparent: 'true', layers: 'LANDMARKS' });
> layer8 = new OpenLayers.Layer.WMS("RailwayStations",
>
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", { map:
> 'Shape/newwr1.map', transparent: 'true', layers: 'RailwayStations' });
> // layer9 = new OpenLayers.Layer.WMS("Bridges_Minor",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", {
> map: 'Shape/newwr1.map', transparent: 'true', layers:
> 'Bridges_Minor' });
> // layer10 = new OpenLayers.Layer.WMS("Bridge_Major",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", {
> map: 'Shape/newwr1.map', transparent: 'true', layers:
> 'Bridge_Major' });
> // layer11 = new OpenLayers.Layer.WMS("LC_Gate",
> //
> "http://172.16.128.173:8085/cgi-bin/mapserv.exe?", {
> map: 'Shape/newwr1.map', transparent: 'true', layers: 'LC_Gate' });
>
> //
>
> highlight = new OpenLayers.Layer.Vector("highlight", { style:
> vector_style });
> choice_features = new
> OpenLayers.Layer.Vector("choice_features", {
> style: v_style });
> distline = new OpenLayers.Layer.Vector("distline", { style:
> vector_style });
> //GML = new OpenLayers.Layers.GML("GML", { style: v_style });
>
> //
> map.addLayers([layer, layer1, layer8, highlight,distline]);
> // markers = new OpenLayers.Layer.Markers("markers");
> // map.addLayer(markers);
>
> // map.OpenLayers.Control.PanZoom.destroy();
> // map.OpenLayers.Control.MouseToolbar.destroy();
> map.zoomToMaxExtent();
> map.setCenter(new OpenLayers.LonLat(73.25, 20.35), 7);
>
> map.addControl(new OpenLayers.Control.PanZoomBar());
> //map.addControl(new OpenLayers.Control.MouseToolbar());
> map.addControl(new OpenLayers.Control.LayerSwitcher());
> map.addControl(new OpenLayers.Control.MousePosition());
>
> map.addControl(new OpenLayers.Control.OverviewMap());
> map.addControl(new OpenLayers.Control.Scale());
>
> }
>
> 2) Is there a way by which the layers will load at certain
> zoom level bec'
> in case of MAXSCALEDENOM /MINSCALEDENOM the layers are
> loading at PageLoad while only visible at that zoom level.
>
> 3)If I use TileCache layer instead of Wms then will it load faster.
>
> Regards.
>
> Fawcett, David wrote:
> >
> > 1. You can use MINSCALEDENOM and MAXSCALEDENOM at either
> the layer or
> > class level (on a current version of MapServer). So, it looks like
> > they are in an appropriate place. The real test is to use
> MapServer
> > to draw the layer for you. Does it turn on and off at the
> scales that
> > you want it to?
> >
> > 2. Yes, it can apply to both the layer or class
> properties. I assume
> > that you looked here:
> > http://www.mapserver.org/mapfile/class.html#class
> >
> > 3. MapServer has nothing to do with when things load. This all
> > happens on your client. It sounds like you modified your client to
> > request each layer individually. If you just want to sandwich them
> > all together, why not just make one WMS call to the server
> and request
> > all of the layers in one image/call. This question is really more
> > appropriate for the OpenLayers list.
> >
> > 4. I would consult the TileCache or OpenLayers list for this one.
> >
> > David.
> >
> >
> > -----Original Message-----
> > From: mapserver-users-bounces at lists.osgeo.org
> > [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf
> Of sunny74
> > Sent: Saturday, August 29, 2009 2:01 AM
> > To: mapserver-users at lists.osgeo.org
> > Subject: RE: [mapserver-users] turning on layers at a
> particular zoom
> > level
> >
> >
> >
> > Hi David,
> >
> > Thanks for your reply.
> > I wanted to have 3 layers displayed b/w scale of 1.2M and
> 1.15M and so
> > I have added set MAXSCALEDENOM /MINSCALEDENOM as follows:
> >
> > LAYER
> > NAME 'WaterBody'
> > TYPE POLYGON
> > DATA 'C:\ms4w\Apache\cgi-bin\Shape\WaterBody.shp'
> > METADATA
> > 'wms_title' 'WaterBody'
> > END
> > STATUS OFF
> > TRANSPARENCY 100
> > PROJECTION
> > 'proj=longlat'
> > 'ellps=WGS84'
> > 'datum=WGS84'
> > 'no_defs'
> > ''
> > END
> > CLASS
> > NAME 'WaterBody'
> > MAXSCALEDENOM 2000000
> > MINSCALEDENOM 1500000
> > STYLE
> > SYMBOL 0
> > SIZE 2
> > OUTLINECOLOR 0 0 0
> > COLOR 150 123 90
> > END
> > END
> > END
> >
> > 1)Pls tell me whether I hav added the things at the correct place.
> > 2) Can I also add it within the layer properties?
> > 3) I find that the layers are being added at PageLoad.This
> I found out
> > by looking at the number of items being added at the bottom left
> > corner of IE. The number of items has nearly doubled due to the
> > addition of the 3 layers. Is there any way by which I can stop the
> > layers from being added at PageLoad i.e they should be
> added only when
> > the desired scale is reached.
> >
> > 4) How to use TileCache or GeoWebCache i.e js code?
> >
> > Thanks again.
> >
> > Fawcett, David wrote:
> >>
> >> I assume the 'M' stands for million.
> >>
> >> If you want the layer to be only visible when 'zoomed in' beyond
> >> 1:2M, I would set a MAXSCALEDENOM of 2000000.
> >>
> >> If you want the layer to be only visible when 'zoomed out' beyond
> >> 1:2M, I would set a MINSCALEDENOM of 2000000.
> >>
> >> If you only want the layer to be visible between resolutions of
> >> 1:100000 and 1:200000, you would set: both MINSCALEDENOM
> 100000 and
> >> MAXSCALEDENOM 200000
> >>
> >> These values go in either a LAYER or CLASS of LAYER in
> your MapServer map
> >> file.
> >>
> >>
> >> -----Original Message-----
> >> From: mapserver-users-bounces at lists.osgeo.org
> >> [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf
> Of sunny74
> >> Sent: Friday, August 28, 2009 8:45 AM
> >> To: mapserver-users at lists.osgeo.org
> >> Subject: Re: [mapserver-users] turning on layers at a
> particular zoom
> >> level
> >>
> >>
> >>
> >> Hi,
> >>
> >> Thanks for your reply.
> >> I went thru the link and read about
> MAXSCALEDENOM/MINSCALEDENOM. So
> >> MINSCALEDENOM is the minimum scale level at which a layer
> will become
> >> visible. But I am a bit confused.When the map loads for the first
> >> time it has a zoom level of 7 as given in the code below.
> >>
> >> map.setCenter(new OpenLayers.LonLat(74.25, 20.35), 7);
> >>
> >> In terms of scale it is showing 1:3M.
> >> What is M?
> >> If I increase the zoom level i.e do zoom in, scale becomes
> 1:856K and
> >> 1:256K etc i.e scale decreases. So If want a layer to be
> visible at a
> >> scale level of 1:2M what do I write in the mapfile?
> >>
> >> How to use TileCache or GeoWebCache?Pls give the js code.
> >>
> >>
> >> Rahkonen Jukka wrote:
> >>>
> >>> Hi,
> >>>
> >>> Mapserver is somehow documented, about adjusting visibility
> >>> according to scale, try to find MAXSCALEDENOM/MINSCALEDENOM from
> >>> http://www.mapserver.org/mapfile/layer.html#index-21
> >>>
> >>> Mapserver does not do caching but you can use for examply
> TileCache
> >>> or GeoWebCache between your clients and Mapserver.
> >>>
> >>> -Jukka Rahkonen-
> >>>
> >>>
> >>>
> >>>> -----Alkuperäinen viesti-----
> >>>> Lähettäjä: mapserver-users-bounces at lists.osgeo.org
> >>>> [mailto:mapserver-users-bounces at lists.osgeo.org] Puolesta sunny74
> >>>> Lähetetty: 28. elokuuta 2009 14:53
> >>>> Vastaanottaja: mapserver-users at lists.osgeo.org
> >>>> Aihe: [mapserver-users] turning on layers at a particular zoom
> >>>> level
> >>>>
> >>>>
> >>>> DEar Friends,
> >>>>
> >>>> I have 12 layers in my map and it is taking tooooo long to
> >>>> load.Therefore I decided to turn on only 2 layers at Page Load.
> >>>>
> >>>> Rest of the layers I want to turn on at a particular zoom
> >>>> level.How can I check the zoom level and turn on these layers.
> >>>>
> >>>> How can make the map load faster especially on page
> reload? Is it
> >>>> possible to cache the map or is there some other technique?
> >>>>
> >>>> Thanks for ur reply.
> >>>>
> >>>> --
> >>>> View this message in context:
> >>>> http://n2.nabble.com/turning-on-layers-at-a-particular-zoom-le
> >>>> vel-tp3534156p3534156.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
> >>>>
> >>> _______________________________________________
> >>> mapserver-users mailing list
> >>> mapserver-users at lists.osgeo.org
> >>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
> >>>
> >>>
> >>
> >> --
> >> View this message in context:
> >>
> http://n2.nabble.com/turning-on-layers-at-a-particular-zoom-level-tp3
> >> 534156p3534743.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
> >> _______________________________________________
> >> mapserver-users mailing list
> >> mapserver-users at lists.osgeo.org
> >> http://lists.osgeo.org/mailman/listinfo/mapserver-users
> >>
> >>
> >
> > --
> > View this message in context:
> >
> http://n2.nabble.com/turning-on-layers-at-a-particular-zoom-level-tp35
> > 34156p3540787.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
> > _______________________________________________
> > mapserver-users mailing list
> > mapserver-users at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/mapserver-users
> >
> >
>
> --
> View this message in context:
> http://n2.nabble.com/turning-on-layers-at-a-particular-zoom-le
> vel-tp3534156p3566414.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