コード例 #1
0
        public void CreatXmlDoc(PostDataCriteria pPostDaCri)
        {
            pPostDataCriteria = pPostDaCri;

            try
            {
                StringBuilder pBuilder = new StringBuilder();

                pBuilder.Append("<csw:GetRecords xmlns:csw='http://www.opengis.net/cat/csw/2.0.2' version='2.0.2' service='CSW' resultType='results' ");

                StartPosition(pBuilder); ///Set the start position for request

                MaxResults(pBuilder); ///Set max number of results shown in the list box

                pBuilder.Append(">");

                pBuilder.Append("<csw:Query typeNames='csw:Record' xmlns:ogc='http://www.opengis.net/ogc' xmlns:gml='http://www.opengis.net/gml'>");
                pBuilder.Append("<csw:ElementSetName>");
                pBuilder.Append("full");
                pBuilder.Append("</csw:ElementSetName>");
                pBuilder.Append("<csw:Constraint version='1.1.0'>");
                pBuilder.Append("<ogc:Filter>");

                if (pPostDaCri.IsLiveDataOnly || pPostDaCri.IsWmsOnly || (pPostDaCri.Envelope != null))
                {
                    pBuilder.Append("<ogc:And>");
                }

                SearchText(pBuilder); ///Set search criterias, including search key word and search area

                if (pPostDaCri.IsLiveDataOnly) { SearchForLiveDataOnly(pBuilder); } ///Define if only search live data
                if (pPostDaCri.IsWmsOnly) { SearchForWmsOnly(pBuilder); } ///Define if only search wms services

                if (pPostDaCri.Envelope != null)
                {
                    BoundingBox(pBuilder); ///Set bounding box
                }

                if (pPostDaCri.IsLiveDataOnly || pPostDaCri.IsWmsOnly || (pPostDaCri.Envelope != null))
                {
                    pBuilder.Append("</ogc:And>");
                }

                pBuilder.Append("</ogc:Filter>");
                pBuilder.Append("</csw:Constraint>");
                pBuilder.Append("</csw:Query>");
                pBuilder.Append("</csw:GetRecords>");

                strPostData = pBuilder.ToString();

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #2
0
        public void CreatXmlDoc(PostDataCriteria pPostDaCri)
        {
            pPostDataCriteria = pPostDaCri;

            try
            {
                StringBuilder pBuilder = new StringBuilder();

                pBuilder.Append("<csw:GetRecords xmlns:csw='http://www.opengis.net/cat/csw/2.0.2' version='2.0.2' service='CSW' resultType='results' ");

                StartPosition(pBuilder); ///Set the start position for request

                MaxResults(pBuilder);    ///Set max number of results shown in the list box

                pBuilder.Append(">");

                pBuilder.Append("<csw:Query typeNames='csw:Record' xmlns:ogc='http://www.opengis.net/ogc' xmlns:gml='http://www.opengis.net/gml'>");
                pBuilder.Append("<csw:ElementSetName>");
                pBuilder.Append("full");
                pBuilder.Append("</csw:ElementSetName>");
                pBuilder.Append("<csw:Constraint version='1.1.0'>");
                pBuilder.Append("<ogc:Filter>");

                if (pPostDaCri.IsLiveDataOnly || pPostDaCri.IsWmsOnly || (pPostDaCri.Envelope != null))
                {
                    pBuilder.Append("<ogc:And>");
                }

                SearchText(pBuilder); ///Set search criterias, including search key word and search area

                if (pPostDaCri.IsLiveDataOnly)
                {
                    SearchForLiveDataOnly(pBuilder);
                }                                                                   ///Define if only search live data
                if (pPostDaCri.IsWmsOnly)
                {
                    SearchForWmsOnly(pBuilder);
                }                                                         ///Define if only search wms services

                if (pPostDaCri.Envelope != null)
                {
                    BoundingBox(pBuilder); ///Set bounding box
                }

                if (pPostDaCri.IsLiveDataOnly || pPostDaCri.IsWmsOnly || (pPostDaCri.Envelope != null))
                {
                    pBuilder.Append("</ogc:And>");
                }

                pBuilder.Append("</ogc:Filter>");
                pBuilder.Append("</csw:Constraint>");
                pBuilder.Append("</csw:Query>");
                pBuilder.Append("</csw:GetRecords>");

                strPostData = pBuilder.ToString();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #3
0
ファイル: CSWSearch.cs プロジェクト: usgin/arcmap-cswclient
        public void CswRequest(PostDataCriteria pPostDaCri, int indexSelectedCatalog)
        {
            // GeoPortal and GeoNode require X/Y and pyCSW requrires Y/X
            CreatePostData pPostData = new CreatePostData();

            if (strCatalogUrl == "http://catalog.usgin.org/geoportal/csw/discovery?" || strCatalogUrl == "http://onegeology-catalog.brgm.fr/geonetwork/srv/csw?")
            {
                pPostDaCri.SwitchXY = true;
            }
            else
            {
                pPostDaCri.SwitchXY = false;
            }

            //Get xml data for post request
            pPostData.CreatXmlDoc(pPostDaCri);
            strPostDa = pPostData.PostData;

            ///Send csw request
            Uri            cswUri     = new Uri(strCatalogUrl);
            HttpWebRequest cswRequest = (HttpWebRequest)WebRequest.Create(cswUri);

            cswRequest.AllowAutoRedirect = true;

            cswRequest.Method      = "POST";
            cswRequest.ContentType = "text/xml;charset=UTF-8";

            UTF8Encoding encoding = new UTF8Encoding();

            Byte[] byteTemp = encoding.GetBytes(strPostDa);
            cswRequest.ContentLength = byteTemp.Length;

            Stream cswRqStream = cswRequest.GetRequestStream();

            cswRqStream.Write(byteTemp, 0, byteTemp.Length);
            cswRqStream.Close();

            try
            {
                ///Get csw response
                HttpWebResponse cswResponse = (HttpWebResponse)cswRequest.GetResponse();

                Stream       cswRpStream = cswResponse.GetResponseStream();
                StreamReader cswRpReader = new StreamReader(cswRpStream);
                strResponseTxt = cswRpReader.ReadToEnd();
                cswRpReader.Close();

                ///Parse csw response
                ParseCswResponse cPCswRp = new ParseCswResponse();
                cPCswRp.ResponseTxt = strResponseTxt;
                cPCswRp.ParseResponse(indexSelectedCatalog);

                ///List all the services
                rDataList = cPCswRp.DataList;

                ///Other values needed in dockable window
                strNumRecords = cPCswRp.NumRecords;
            }
            catch (WebException wex)
            { throw wex; }
            catch (Exception ex)
            { throw ex; }
        }