[置顶] 对SuperMap数据集建立索引示例

本示例代码主要是实现对流域数据集建立一个xml索引。提取出流域区域的外界矩形坐标值。


Class Test

{

public void Main()

{

string PathString = @"C:\Users\Walt\Desktop\流域面.sdb";
            string ConfigFilePath = @"C:\Users\Walt\Desktop\流域面.xml";
            Workspace wks=new Workspace();
            DatasourceConnectionInfo info = new DatasourceConnectionInfo(PathString, GetAlias(PathString), "");


            Datasource dt = wks.Datasources.Open(info);


           Dataset dataset= dt.Datasets["LYR"];//获取流域数据集(名称为LYR)
           if (dataset.Type == DatasetType.Region)
           {
               XmlDocument doc = new XmlDocument();
             XmlProcessingInstruction ins= doc.CreateProcessingInstruction("xml",
                                                " version= '1.0'   encoding= 'utf-8' "); 
               XmlElement xmlEx = doc.CreateElement("Valleys");
               DatasetVector dv = dataset as DatasetVector;
               Recordset re= dv.Query("",CursorType.Static);
               re.MoveFirst();
               while (!re.IsEOF)
               {
                   Rectangle2D rect = re.GetGeometry().Bounds;
                   XmlElement Name = doc.CreateElement("Valley");
                   Name.SetAttribute("Name",re.GetFieldValue("NAME").ToString());//流域名称
                   Name.SetAttribute("SmE", rect.Right.ToString());//流域的最东边的经度坐标
                   Name.SetAttribute("SmN", rect.Top.ToString());//流域的最北边的纬度坐标
                   Name.SetAttribute("SmW", rect.Left.ToString());//流域的最西边的经度坐标
                   Name.SetAttribute("SmS", rect.Bottom.ToString());//流域的最南边的纬度坐标
                   xmlEx.AppendChild(Name);
                   re.MoveNext();


               }
               doc.AppendChild(ins);//将xml文档声明加入到文档中
               doc.AppendChild(xmlEx);//将xml文档数据内容加入到文档中
               doc.Save(ConfigFilePath);//保存文档



}


/// <summary>
        /// 获取到别名
        /// </summary>
        /// <param name="FilePath"></param>
        /// <returns></returns>
        private string GetAlias(string FilePath)
        {
            return FilePath.Substring(FilePath.LastIndexOf("\\") + 1, FilePath.LastIndexOf(".") - FilePath.LastIndexOf("\\") - 1);

        }


}


索引xml文件如下

<?xml  version= '1.0'   encoding= 'utf-8' ?>
<Valleys>
  <Valley Name="珠江流域" SmE="117.188194817719" SmN="26.8658870320232" SmW="102.252239649478" SmS="18.1612383772659" />
  <Valley Name="辽河流域" SmE="128.3087652786" SmN="45.3191450578835" SmW="116.602133393954" SmS="38.7215576000347" />
  <Valley Name="西北诸河区" SmE="120.009614510359" SmN="49.1762628512649" SmW="73.4992180778634" SmS="29.4624913473439" />
  <Valley Name="长江流域" SmE="121.900781465847" SmN="35.7596247694589" SmW="90.5338445835696" SmS="24.4595069605292" />
  <Valley Name="东南诸河区" SmE="122.133913632058" SmN="30.4183485735871" SmW="116.381901877796" SmS="21.902906075741" />
  <Valley Name="海河流域" SmE="119.846421449842" SmN="42.7249443842679" SmW="111.946013461374" SmS="35.0107694510521" />
  <Valley Name="黄河流域" SmE="119.063779079153" SmN="41.8386902620334" SmW="95.8950665173459" SmS="32.1613759056708" />
  <Valley Name="松花江流域" SmE="135.060361477165" SmN="53.5547166963988" SmW="115.525342333137" SmS="41.7245584505953" />
  <Valley Name="西南诸河区" SmE="105.98726844844" SmN="35.2247524260249" SmW="78.0523301016805" SmS="21.144624709994" />
  <Valley Name="淮河流域" SmE="122.697984145329" SmN="37.8315927830675" SmW="111.936272778343" SmS="30.9513989178425" />
</Valleys>

希望本文能对各位童鞋有所帮助。

你可能感兴趣的:(xml,String,文档,sms,encoding,dataset)