Exemple #1
0
        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);
        }
Exemple #2
0
 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;
     }
 }
Exemple #3
0
        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);
            }
        }