使用.net c# 对GeoServer要素进行Insert和Delete操作

对GeoServer要素进行操作,要通过xml的文件格式,因此要先组织对应的xml文件。
插入的insert.xml格式如下图:
在这里插入图片描述
代码创建新增的xml文件:

#region 创建新增xml文件
        /// <summary>
        /// 创建新增xml文件
        /// </summary>
        /// <param name="points">要素点信息</param>
        /// <param name="layerName">服务图层名</param>
        /// <param name="sName"></param>
        /// <param name="sLpkName"></param>
        /// <param name="sPeriod"></param>
        /// <param name="sSCode"></param>
        /// <param name="sCCode"></param>
        /// <param name="sXCode"></param>
        /// <param name="sType"></param>
        public string CreateInsertXML(string points, string layerName, string sName, string sLpkName, string sPeriod, string sSCode, string sCCode , string sXCode, string sType)
        {
            XmlDocument xmldoc = new XmlDocument();

            XmlElement transaction = xmldoc.CreateElement("Transaction");
            xmldoc.AppendChild(transaction);

            transaction.SetAttribute("xmlns", "http://www.opengis.net/wfs");
            transaction.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
            transaction.SetAttribute("service", "WFS");
            transaction.SetAttribute("version", "1.1.0");
            transaction.SetAttribute("xsi:schemaLocation", "http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd");

            XmlElement insert = xmldoc.CreateElement("Insert");
            transaction.AppendChild(insert);


            XmlElement scope = xmldoc.CreateElement(workSpace, layerName, ":");
            insert.AppendChild(scope);
            scope.SetAttribute("xmlns:" + workSpace, workSpace);

            // 兄弟节点
            XmlElement geom = xmldoc.CreateElement(workSpace, "geom", ":");
            scope.AppendChild(geom);

            // 名称
            XmlElement sNAME = xmldoc.CreateElement(workSpace, "s_name", ":");
            scope.AppendChild(sNAME);
            sNAME.InnerText = sName;

            // 包名
            XmlElement sLPKNAME = xmldoc.CreateElement(workSpace, "s_lpk_name", ":");
            scope.AppendChild(sLPKNAME);
            sLPKNAME.InnerText = sLpkName;

            // 时间
            XmlElement sPERIOD = xmldoc.CreateElement(workSpace, "s_period", ":");
             scope.AppendChild(sPERIOD);
             sPERIOD.InnerText = sPeriod;
             // 类型
             XmlElement sTYPE = xmldoc.CreateElement(workSpace, "s_type", ":");
             scope.AppendChild(sTYPE);
             sTYPE.InnerText = sType;
             // 省
             XmlElement sSCODE = xmldoc.CreateElement(workSpace, "s_s_code", ":");
             scope.AppendChild(sSCODE);
             sSCODE.InnerText = sSCode;
             // 市
             XmlElement sCCODE = xmldoc.CreateElement(workSpace, "s_c_code", ":");
             scope.AppendChild(sCCODE);
             sCCODE.InnerText = sCCode;
             // 区
             XmlElement sXCODE = xmldoc.CreateElement(workSpace, "s_x_code", ":");
             scope.AppendChild(sXCODE);
             sXCODE.InnerText = sXCode;
        
            XmlElement multiPolygon = xmldoc.CreateElement("MultiPolygon");
            geom.AppendChild(multiPolygon);
            multiPolygon.SetAttribute("xmlns", "http://www.opengis.net/gml");

            XmlElement polygonMember = xmldoc.CreateElement("polygonMember");
            multiPolygon.AppendChild(polygonMember);


            XmlElement polygon = xmldoc.CreateElement("Polygon");
            polygonMember.AppendChild(polygon);


            XmlElement exterior = xmldoc.CreateElement("exterior");
            polygon.AppendChild(exterior);

            XmlElement linearRing = xmldoc.CreateElement("LinearRing");
            exterior.AppendChild(linearRing);

            XmlElement posList = xmldoc.CreateElement("posList");
            linearRing.AppendChild(posList);
            posList.SetAttribute("srsDimension", "2");

            posList.InnerText = points;
            return CreatePost(serverUrl, xmldoc.InnerXml, "text/xml");
        }
        #endregion

创建完成后发送post请求即可,CreatePost实现
实际调用:

 string resultCloudXml = CreateInsertXML(pointsCloud, cloudLayerName, curLpkInfo.SAlias, curLpkInfo.SPackagename, sPeriod, curLpkCode.SScode, curLpkCode.SCcode, curLpkCode.SXcode, curLpkInfo.SType);
 // 判断是否插入成功
XmlDocument xmlDocCloud = new XmlDocument();
 xmlDocCloud.LoadXml(resultCloudXml);
 if (xmlDocCloud.InnerText != “100”)  //  当返回的innerText为100时插入成功
 {
     // 要素写入服务失败
     return;
 }

删除的delete.xml格式如下图:
在这里插入图片描述
代码创建删除的xml文件:

  #region 创建删除xml文件
  public string CreateDeleteXML(string layerName, string fid)
  {
      XmlDocument xmldoc = new XmlDocument();

      XmlElement transaction = xmldoc.CreateElement("Transaction");
      xmldoc.AppendChild(transaction);

      transaction.SetAttribute("xmlns", "http://www.opengis.net/wfs");
      transaction.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
      transaction.SetAttribute("service", "WFS");
      transaction.SetAttribute("version", "1.1.0");
      transaction.SetAttribute("xsi:schemaLocation", "http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd");

      XmlElement delete = xmldoc.CreateElement("Delete");
      transaction.AppendChild(delete);
      delete.SetAttribute("xmlns:feature", workSpace);
      delete.SetAttribute("typeName", workSpace + ":" + layerName);

      XmlElement filter = xmldoc.CreateElement("Filter");
      delete.AppendChild(filter);
      filter.SetAttribute("xmlns", "http://www.opengis.net/ogc");

      XmlElement featrueId = xmldoc.CreateElement("FeatureId");
      filter.AppendChild(featrueId);
      featrueId.SetAttribute("fid", fid);
      return CreatePost(serverUrl, xmldoc.InnerXml, "text/xml");
  }
  #endregion

创建完成后发送post请求即可,CreatePost实现
实际调用:

 string resultXml = CreateDeleteXML(lasLayerName, r.id.ToString());
 // 判断是否删除成功
 XmlDocument xmlDocCloud = new XmlDocument();
  xmlDocCloud.LoadXml(resultXml);
  if (xmlDocCloud.InnerText != "001")  // 当返回的innerText为001时删除成功
  {
      // 删除失败
      return;
  }
C#开发,可解析WMS服务,并进行浏览,功能强大,GIS开发人员可参考文件列表 Get Capabilities Example ........................\AssemblyInfo.cs ........................\Get Capabilities Example.csproj ........................\GetCapabilitiesExample.cs Get Map Asynch Example ......................\AssemblyInfo.cs ......................\Get Map Asynch Example.csproj ......................\GetMapAsynchExample.cs ......................\GetMapAsynchExample.resx Get Map Example ...............\AssemblyInfo.cs ...............\Get Map Example.csproj ...............\GetMapExample.cs GLOBECapabilities20040423.xml MapAnimation ............\AssemblyInfo.cs ............\Map Animation.csproj ............\MapAnimation.cs ............\MapAnimation.resx WMS Overview Article.html WMS Overview.sln Wms.Client ..........\AssemblyInfo.cs ..........\Capabilities.cs ..........\CLSDFOLD.BMP ..........\DefaultServerDescriptors.xml ..........\DownloadCache.cs ..........\ENTIRNET.BMP ..........\ENTIRNETX.bmp ..........\ENTIRNETX.ICO ..........\ExtensionMap.cs ..........\Layer.cs ..........\OPENFOLD.BMP ..........\PreviewDialog.cs ..........\PreviewDialog.resx ..........\RequestBuilder.cs ..........\Retriever.cs ..........\Server.cs ..........\ServerAddDialog.cs ..........\ServerAddDialog.resx ..........\ServerDescriptor.cs ..........\Wms.Client.csproj ..........\WmsDialog.cs ..........\WmsDialog.resx ..........\WmsException.cs ..........\WmsServerDescriptors.cs ..........\WmsServerDescriptors.xsd WMSBrowser ..........\AssemblyInfo.cs ..........\MapForm.cs ..........\MapForm.resx ..........\WMSBrowser.cs ..........\WMSBrowser.csproj ..........\WMSBrowser.resx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值