protected GetFeatureInfo(Capabilities.WmsServiceDescription description, GetFeatureInfoParams @params) : base(description) { if (@params == null) throw new ArgumentNullException("params"); _params = @params; }
public GetFeatureInfoPlain(Capabilities.WmsServiceDescription description, GetFeatureInfoParams @params) : base(description, @params) { }
/// <summary> /// Generates a WMS 1.3.0 compliant response based on a <see cref="SharpMap.Map"/> and the current HttpRequest. /// </summary> /// <remarks> /// <para> /// The Web Map Server implementation in SharpMap requires v1.3.0 compatible clients, /// and support the basic operations "GetCapabilities" and "GetMap" /// as required by the WMS v1.3.0 specification. SharpMap does not support the optional /// GetFeatureInfo operation for querying. /// </para> /// <example> /// Creating a WMS server in ASP.NET is very simple using the classes in the SharpMap.Web.Wms namespace. /// <code lang="C#"> /// void page_load(object o, EventArgs e) /// { /// //Get the path of this page /// string url = (Request.Url.Query.Length>0?Request.Url.AbsoluteUri.Replace(Request.Url.Query,""):Request.Url.AbsoluteUri); /// SharpMap.Web.Wms.Capabilities.WmsServiceDescription description = /// new SharpMap.Web.Wms.Capabilities.WmsServiceDescription("Acme Corp. Map Server", url); /// /// // The following service descriptions below are not strictly required by the WMS specification. /// /// // Narrative description and keywords providing additional information /// description.Abstract = "Map Server maintained by Acme Corporation. Contact: [email protected]. High-quality maps showing roadrunner nests and possible ambush locations."; /// description.Keywords.Add("bird"); /// description.Keywords.Add("roadrunner"); /// description.Keywords.Add("ambush"); /// /// //Contact information /// description.ContactInformation.PersonPrimary.Person = "John Doe"; /// description.ContactInformation.PersonPrimary.Organisation = "Acme Inc"; /// description.ContactInformation.Address.AddressType = "postal"; /// description.ContactInformation.Address.Country = "Neverland"; /// description.ContactInformation.VoiceTelephone = "1-800-WE DO MAPS"; /// //Impose WMS constraints /// description.MaxWidth = 1000; //Set image request size width /// description.MaxHeight = 500; //Set image request size height /// /// //Call method that sets up the map /// //We just add a dummy-size, since the wms requests will set the image-size /// SharpMap.Map myMap = MapHelper.InitializeMap(new System.Drawing.Size(1,1)); /// /// //Parse the request and create a response /// SharpMap.Web.Wms.WmsServer.ParseQueryString(myMap,description); /// } /// </code> /// </example> /// </remarks> /// <param name="map">Map to serve on WMS</param> /// <param name="description">Description of map service</param> /// <param name="context">The context the <see cref="WmsServer"/> is running in.</param> public static void ParseQueryString(Map map, Capabilities.WmsServiceDescription description, IContext context) { const StringComparison @case = StringComparison.InvariantCultureIgnoreCase; IContextRequest request = context.Request; IContextResponse response = context.Response; try { if (PixelSensitivity < 0) PixelSensitivity = 1; if (map == null) throw new WmsArgumentException("Map for WMS is null"); if (map.Layers.Count == 0) throw new WmsArgumentException("Map doesn't contain any layers for WMS service"); string req = request.GetParam("REQUEST"); if (req == null) throw new WmsParameterNotSpecifiedException("REQUEST"); IHandler handler; if (String.Equals(req, "GetCapabilities", @case)) handler = new GetCapabilities(description); else if (String.Equals(req, "GetFeatureInfo", @case)) { // use text/plain as default handler // let the default handler validate params string format = request.GetParam("INFO_FORMAT") ?? String.Empty; GetFeatureInfoParams @params = new GetFeatureInfoParams(PixelSensitivity, IntersectDelegate, FeatureInfoResponseEncoding); if (String.Equals(format, "text/json", @case)) handler = new GetFeatureInfoJson(description, @params); else if (String.Equals(format, "text/html", @case)) handler = new GetFeatureInfoHtml(description, @params); else handler = new GetFeatureInfoPlain(description, @params); } else if (String.Equals(req, "GetMap", @case)) handler = new GetMap(description); else { string s = String.Format("Invalid request: {0}", req); throw new WmsOperationNotSupportedException(s); } IHandlerResponse result = handler.Handle(map, request); result.WriteToContextAndFlush(response); } catch (WmsExceptionBase ex) { ex.WriteToContextAndFlush(response); } }
protected AbstractGetFeatureInfoText(Capabilities.WmsServiceDescription description, GetFeatureInfoParams @params) : base(description, @params) { }
public GetFeatureInfoJson(Capabilities.WmsServiceDescription description, GetFeatureInfoParams @params) : base(description, @params) { }