static public string Create(IFeatureClass fc, string typeName, IQueryFilter filter, string srsName, Filter_Capabilities filterCapabilites, GmlVersion version) { MemoryStream ms = new MemoryStream(); StreamWriter sw = new StreamWriter(ms, Encoding.UTF8); sw.WriteLine( @"<?xml version=""1.0"" ?> <wfs:GetFeature version=""1.0.0"" service=""WFS"" maxfeatures=""5000"" handle=""gView Query"" xmlns=""http://www.opengis.net/wfs"" xmlns:wfs=""http://www.opengis.net/wfs"" xmlns:ogc=""http://www.opengis.net/ogc"" xmlns:gml=""http://www.opengis.net/gml"" xmlns:gv=""http://www.gview.com/server"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:schemaLocation=""http://www.opengis.net/wfs ../wfs/1.1.0/WFS.xsd""> <wfs:Query typeName=""" + typeName + @"""" + ((srsName != String.Empty) ? " srsName=\"" + srsName + "\"" : "") + " >"); if (filter.SubFields != "*" && filter.SubFields != "#ALL#") { foreach (string field in filter.SubFields.Split(' ')) { sw.Write("<wfs:PropertyName>" + field + "</wfs:PropertyName>"); } } else { foreach (IField field in fc.Fields) { sw.Write("<wfs:PropertyName>" + field.name + "</wfs:PropertyName>"); } } sw.WriteLine(Filter.ToWFS(fc, filter, filterCapabilites, version)); sw.WriteLine( @"</wfs:Query> </wfs:GetFeature>"); sw.Flush(); ms.Position = 0; byte[] bytes = new byte[ms.Length]; ms.Read(bytes, 0, (int)ms.Length); sw.Close(); string ret = Encoding.UTF8.GetString(bytes).Trim(); return(ret); }
public FeatureCursor(IFeatureClass fc, XmlNode featureCollection, XmlNamespaceManager ns, IQueryFilter filter, GmlVersion gmlVersion, Filter_Capabilities filterCapabilities) : this(fc, featureCollection, ns, filter, gmlVersion) { // // wenn Filter schon geometry operation implementiert // ist es hier nicht noch einmal zu vergleichen... // if (filterCapabilities != null && _filter is ISpatialFilter && filterCapabilities.SupportsSpatialOperator(((ISpatialFilter)_filter).SpatialRelation)) { _checkGeometryRelation = false; } }
public bool Open() { try { _elements.Clear(); string param = "REQUEST=GetCapabilities&VERSION=1.0.0&SERVICE=WFS"; string url = WMSDataset.Append2Url(_url, param); string response = WebFunctions.HttpSendRequest(url, "GET", null); response = WMSDataset.RemoveDOCTYPE(response); XmlDocument doc = new XmlDocument(); doc.LoadXml(response); XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable); ns.AddNamespace("WFS", "http://www.opengis.net/wfs"); ns.AddNamespace("OGC", "http://www.opengis.net/ogc"); ns.AddNamespace("GML", "http://www.opengis.net/gml"); XmlNode CapabilitiesNode = doc.SelectSingleNode("WFS:WFS_Capabilities/WFS:Capability", ns); _getCapabilities = new GetCapabilities(CapabilitiesNode.SelectSingleNode("WFS:Request/WFS:GetCapabilities", ns), ns); _decribeFeatureType = new DescribeFeatureType(CapabilitiesNode.SelectSingleNode("WFS:Request/WFS:DescribeFeatureType", ns), ns); _getFeature = new GetFeature(CapabilitiesNode.SelectSingleNode("WFS:Request/WFS:GetFeature", ns), ns); XmlNode FeatureTypeListNode = doc.SelectSingleNode("WFS:WFS_Capabilities/WFS:FeatureTypeList", ns); _operations = new Operations(FeatureTypeListNode.SelectSingleNode("WFS:Operations", ns)); foreach (XmlNode featureTypeNode in FeatureTypeListNode.SelectNodes("WFS:FeatureType", ns)) { string name = ""; string title = ""; XmlNode nameNode = featureTypeNode.SelectSingleNode("WFS:Name", ns); XmlNode titleNode = featureTypeNode.SelectSingleNode("WFS:Title", ns); WMSClass.SRS srs = new WMSClass.SRS(featureTypeNode, ns, "WFS"); name = title = nameNode.InnerText; if (titleNode != null) { title = titleNode.InnerText; } WFSFeatureClass featureClass = new WFSFeatureClass(this, name, srs); //DatasetElement dselement = new DatasetElement(featureClass); ILayer dselement = LayerFactory.Create(featureClass); if (dselement == null) { continue; } dselement.Title = name; _elements.Add(dselement); } _filter_capabilites = new Filter_Capabilities(doc.SelectSingleNode("WFS:WFS_Capabilities/OGC:Filter_Capabilities", ns), ns); return(true); } catch (Exception ex) { string err = ex.Message; return(false); } }