Ejemplo n.º 1
0
 /// <summary>
 /// 初始化xml文档对象
 /// </summary>
 /// <param name="pEnumDBStandard">vct数据文件类型</param>
 /// <param name="pFilterList">过滤层集合</param>
 /// <returns></returns>
 public static bool Initial(EnumDBStandard pEnumDBStandard, List <string> pFilterList)
 {
     try
     {
         if (m_XMLDoc == null)
         {
             m_XMLDoc = new XmlDocument();
         }
         m_XMLDoc.Load(m_strPath);
         if (!InitialConfig(m_XMLDoc, pEnumDBStandard))
         {
             return(false);
         }
         m_pMetaTables = GetMetaTablesByName(m_XMLDoc, pEnumDBStandard, pFilterList);
         if (m_pMetaTables == null)
         {
             return(false);
         }
         return(true);
     }
     catch (Exception ex)
     {
         Logger.WriteErrorLog(ex);
         return(false);
     }
 }
Ejemplo n.º 2
0
        private static bool InitialConfig(XmlDocument pDoc, EnumDBStandard pEnumDBStandard)
        {
            XmlNode pHeadNode = null;///获取头文件集合节点

            for (int i = 0; i < pDoc.DocumentElement.ChildNodes.Count; i++)
            {
                XmlNode pNode = pDoc.DocumentElement.ChildNodes[i];
                if (pNode.Name == "Description")
                {
                    pHeadNode = pNode;
                    break;
                }
            }
            if (pHeadNode != null)
            {
                foreach (XmlNode pChildNode in pHeadNode.ChildNodes)
                {
                    ///获取头文件配置信息
                    if (pChildNode.Name == "HEAD")
                    {
                        m_HeadConfig = new HeadConfig(pEnumDBStandard);
                        if (!m_HeadConfig.Initial(pChildNode))
                        {
                            return(false);
                        }
                    }
                    ///获取图形配置信息
                    if (pChildNode.Name == "GRAPH")
                    {
                        m_GraphConfig = new GraphConfig();
                        if (!m_GraphConfig.Initial(pChildNode))
                        {
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 加载配置文件
 /// </summary>
 /// <param name="strStandardName">土地利用规划数据库标准名称</param>
 /// <returns></returns>
 public bool LoadConfigFile(EnumDBStandard pEnumDBStandard)
 {
     return MetaDataFile.Initial(pEnumDBStandard);
 }
Ejemplo n.º 4
0
        public bool StructMetaTableByXML(XmlNode pTable, EnumDBStandard pDBStandard, List <string> pList)
        {
            string sDBStandard = "";

            switch (pDBStandard)
            {
            case EnumDBStandard.XJBZ:
                sDBStandard = "XJBZ";
                break;

            case EnumDBStandard.SJBZ:
                sDBStandard = "SJBZ";
                break;

            case EnumDBStandard.XZJBZ:
                sDBStandard = "XZJBZ";
                break;

            case EnumDBStandard.ALL:
            default:
                break;
            }
            XmlAttributeCollection pAttributeCollection = pTable.Attributes;

            m_pMetaDataFilds = new List <MetaDataField>();
            ///如果没有属性集合则返回
            if (pAttributeCollection == null || pAttributeCollection.Count <= 0)
            {
                return(false);
            }

            ///获取表名称
            XmlAttribute pTableAttribute = pAttributeCollection["Name"];

            if (pTableAttribute != null)
            {
                this.m_strTableName = pTableAttribute.Value;
            }

            ///获取要素代码
            pTableAttribute = pAttributeCollection["Code"];
            if (pTableAttribute != null)
            {
                this.m_strFeatureCode = pTableAttribute.Value;
            }

            ///获取要素类型
            pTableAttribute = pAttributeCollection["GeometryType"];
            if (pTableAttribute != null)
            {
                this.m_strType = pTableAttribute.Value;
            }

            ///获取属性表名称
            pTableAttribute = pAttributeCollection["AtrTBName"];
            if (pTableAttribute != null)
            {
                this.m_strAtrTableName = pTableAttribute.Value;
            }
            ///获取约束条件 与分类 暂时不需要

            ///2011-9-11添加过滤条件
            if (pList != null && !pList.Contains(m_strAtrTableName))
            {
                return(false);
            }
            ///获取图形表现编码
            pTableAttribute = pAttributeCollection["GraphPerformance"];
            if (pTableAttribute != null)
            {
                this.m_strGraPerformance = pTableAttribute.Value;
            }

            for (int i = 0; i < pTable.ChildNodes.Count; i++)
            {
                XmlNode pTableSubNode = pTable.ChildNodes[i];
                //处理字段信息
                if (pTableSubNode.Name == "FIELDS")
                {
                    ///读表格属性信息构造配置表对象
                    foreach (XmlNode pFiled in pTableSubNode.ChildNodes)
                    {
                        XmlAttribute pVersion = pFiled.Attributes["Versions"];
                        if (pVersion != null && !pVersion.Value.ToString().Contains(sDBStandard))
                        {
                            ////如果该表不属于当前级别的数据库标准
                            continue;
                        }
                        else
                        {
                            ///获取字段信息
                            MetaDataField pMetaDataField = GetMetaTableFieldByXMLAtr(pFiled.Attributes);
                            if (pMetaDataField != null)
                            {
                                this.m_pMetaDataFilds.Add(pMetaDataField);
                                if (pMetaDataField.FiledType == EnumFieldType.EntityID)
                                {
                                    m_strEntityIDFiledName = pMetaDataField.Code;
                                }
                                else if (pMetaDataField.FiledType == EnumFieldType.YSDM)
                                {
                                    m_strYSDMFiledName = pMetaDataField.Code;
                                }
                            }
                        }
                    }
                }
                //处理关联要素信息
                else if (pTableSubNode.Name == "TABLELINKS")
                {
                    foreach (XmlNode pTableLinkItem in pTableSubNode.ChildNodes)
                    {
                        XmlAttribute pTableLinkNameAttr = pTableLinkItem.Attributes["TableName"];
                        XmlAttribute pTableLinkCodeAttr = pTableLinkItem.Attributes["Code"];
                        if (pTableLinkNameAttr != null && pTableLinkCodeAttr != null)
                        {
                            m_LinkFeatureCode.Add(pTableLinkCodeAttr.Value);
                        }
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 根据标准名称获取该标准下的元数据表集合
        /// </summary>
        private static Hashtable GetMetaTablesByName(XmlDocument pDoc, EnumDBStandard pStandard, List <string> pList)
        {
            try
            {
                XmlNode   pTablesNode     = null;///获取表集合节点
                Hashtable pHashMetaTalbes = new Hashtable();
                for (int i = 0; i < pDoc.DocumentElement.ChildNodes.Count; i++)
                {
                    XmlNode pNode = pDoc.DocumentElement.ChildNodes[i];
                    if (pNode.Name == "TABLES")
                    {
                        pTablesNode = pNode;
                        break;
                    }
                }

                if (pTablesNode != null)
                {
                    string sStandardName = "";
                    switch (pStandard)
                    {
                    case EnumDBStandard.None:
                        break;

                    case EnumDBStandard.XJBZ:
                        sStandardName = "XJBZ";
                        break;

                    case EnumDBStandard.SJBZ:
                        sStandardName = "SJBZ";
                        break;

                    case EnumDBStandard.XZJBZ:
                        sStandardName = "XZJBZ";
                        break;

                    case EnumDBStandard.ALL:
                        break;

                    default:
                        break;
                    }
                    ///遍历配置数据表
                    foreach (XmlNode pTable in pTablesNode.ChildNodes)
                    {
                        ///读表格属性信息构造配置表对象
                        XmlAttribute pVersion = pTable.Attributes["Versions"];
                        if (pVersion != null && !pVersion.Value.ToString().Contains(sStandardName))
                        {
                            ////如果该表不属于当前级别的数据库标准
                            continue;
                        }
                        else
                        {
                            MetaTable pMetaTable = new MetaTable();
                            ///构造成功则添加到集合中
                            if (pMetaTable.StructMetaTableByXML(pTable, pStandard, pList))
                            {
                                pHashMetaTalbes.Add(pMetaTable.AtrTableName, pMetaTable);
                            }
                        }
                    }
                }
                return(pHashMetaTalbes);
            }
            catch (Exception ex)
            {
                Logger.WriteErrorLog(ex);
                return(null);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 开始VCT数据转换
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, System.EventArgs e)
        {
            ///设置标准名称
            EnumDBStandard pEnumDBStandard = EnumDBStandard.XZJBZ;
            if (radioButton3.Checked)
                pEnumDBStandard = EnumDBStandard.XZJBZ;
            else if (radioButton4.Checked)
                pEnumDBStandard = EnumDBStandard.XJBZ;
            else if (radioButton5.Checked)
                pEnumDBStandard = EnumDBStandard.SJBZ;

            ///验证输出文件是否存在
            string sOutPutFilePath = "";
            if (radioButton1.Checked)
                sOutPutFilePath = m_sVctPath;
            else
                sOutPutFilePath = m_sMdbPath;
            if (!File.Exists(sOutPutFilePath) && radioButton6.Checked)
            {
                MessageBox.Show("您所指定的输出文件不存在!");
                return;
            }

            //bool bConvertSucceed = false;///指示是否转换成功
            if (radioButton1.Checked)
            {
                if (textBox3.Text != "")
                {
                    VCT2MDB m_VCT2MDB = new VCT2MDB(m_sVctPath, m_sMdbPath, textBox3.Text, m_dataType);

                    if (m_VCT2MDB.LoadConfigFile(pEnumDBStandard))
                    {
                        if (m_VCT2MDB.Exchange(false) ==  EnumVCT2MDBExchangeInfo.EXCHANGESUCCESS)
                            MessageBox.Show("转换结束!");
                        else
                            MessageBox.Show("转换中出现错误!");
                    }
                    else
                        MessageBox.Show("初始化配置信息失败!");
                    if (m_VCT2MDB != null)
                        m_VCT2MDB.Dispose();
                    m_VCT2MDB = null;
                }
                else
                {
                    MessageBox.Show("请填写数据集名称!");
                }
            }
            else
            {
                MDB2VCT m_MDB2VCT = new MDB2VCT(m_sMdbPath, m_sVctPath, m_dataType);
                //m_MDB2VCT.WriteCommplete += new WriteCommpleteEventHandler(WriteCommplete);
                if (m_MDB2VCT.LoadConfigFile(pEnumDBStandard))
                {
                    if (m_MDB2VCT.Exchange() ==  EnumMDB2VCTExchangeInfo.EXCHANGESUCCESS)
                        MessageBox.Show("转换结束!");
                    else
                    {
                        MessageBox.Show("转换中出现错误!");
                    }
                }
                else
                {
                    MessageBox.Show("初始化配置信息失败!");
                }
                if (m_MDB2VCT != null)
                    m_MDB2VCT.Dispose();
                m_MDB2VCT = null;

            }
        }
Ejemplo n.º 7
0
 private static bool InitialConfig(XmlDocument pDoc,EnumDBStandard pEnumDBStandard)
 {
     XmlNode pHeadNode = null;///获取头文件集合节点
     for (int i = 0; i < pDoc.DocumentElement.ChildNodes.Count; i++)
     {
         XmlNode pNode = pDoc.DocumentElement.ChildNodes[i];
         if (pNode.Name == "Description")
         {
             pHeadNode = pNode;
             break;
         }
     }
     if (pHeadNode != null)
     {
         foreach (XmlNode pChildNode in pHeadNode.ChildNodes)
         {
             ///获取头文件配置信息
             if (pChildNode.Name == "HEAD")
             {
                 m_HeadConfig = new HeadConfig(pEnumDBStandard);
                 if (!m_HeadConfig.Initial(pChildNode))
                     return false;
             }
             ///获取图形配置信息
             if (pChildNode.Name == "GRAPH")
             {
                 m_GraphConfig = new GraphConfig();
                 if (!m_GraphConfig.Initial(pChildNode))
                     return false;
             }
         }
     }
     return true;
 }
Ejemplo n.º 8
0
 public HeadConfig(EnumDBStandard pEnumDBStandard)
 {
     m_DBStandard = pEnumDBStandard;
 }
Ejemplo n.º 9
0
        /// <summary>
        /// 根据标准名称获取该标准下的元数据表集合
        /// </summary>
        private static Hashtable GetMetaTablesByName(XmlDocument pDoc, EnumDBStandard pStandard,List<string> pList)
        {
            try
            {
                XmlNode pTablesNode =null;///获取表集合节点
                Hashtable pHashMetaTalbes = new Hashtable();
                for (int i = 0; i < pDoc.DocumentElement.ChildNodes.Count; i++)
                {
                    XmlNode pNode = pDoc.DocumentElement.ChildNodes[i];
                    if (pNode.Name == "TABLES")
                    {
                        pTablesNode = pNode;
                        break;
                    }
                }

                if (pTablesNode != null)
                {

                    string sStandardName = "";
                    switch (pStandard)
                    {
                        case EnumDBStandard.None:
                            break;
                        case EnumDBStandard.XJBZ:
                            sStandardName = "XJBZ";
                            break;
                        case EnumDBStandard.SJBZ:
                            sStandardName = "SJBZ";
                            break;
                        case EnumDBStandard.XZJBZ:
                            sStandardName = "XZJBZ";
                            break;
                        case EnumDBStandard.ALL:
                            break;
                        default:
                            break;
                    }
                    ///遍历配置数据表
                    foreach (XmlNode pTable in pTablesNode.ChildNodes)
                    {
                        ///读表格属性信息构造配置表对象
                        XmlAttribute pVersion =pTable.Attributes["Versions"];
                        if (pVersion != null && !pVersion.Value.ToString().Contains(sStandardName))
                        {
                            ////如果该表不属于当前级别的数据库标准
                            continue;
                        }
                        else
                        {
                            MetaTable pMetaTable = new MetaTable();
                            ///构造成功则添加到集合中
                            if (pMetaTable.StructMetaTableByXML(pTable, pStandard,pList))
                            {
                                pHashMetaTalbes.Add(pMetaTable.AtrTableName,pMetaTable);
                            }
                        }
                    }
                }
                return pHashMetaTalbes;
            }
            catch(Exception ex)
            {
                LogAPI.WriteErrorLog(ex);
                return null;
            }
        }
Ejemplo n.º 10
0
 /// <summary>
 /// 初始化xml文档对象
 /// </summary>
 /// <param name="pEnumDBStandard">vct数据文件类型</param>
 /// <param name="pFilterList">过滤层集合</param>
 /// <returns></returns>
 public static bool Initial(EnumDBStandard pEnumDBStandard,List<string> pFilterList)
 {
     try
     {
         if (m_XMLDoc == null)
             m_XMLDoc = new XmlDocument();
         m_XMLDoc.Load(m_strPath);
         if (!InitialConfig(m_XMLDoc, pEnumDBStandard))
             return false;
         m_pMetaTables = GetMetaTablesByName(m_XMLDoc, pEnumDBStandard, pFilterList);
         if (m_pMetaTables == null)
             return false;
         return true;
     }
     catch (Exception ex)
     {
         LogAPI.WriteErrorLog(ex);
         return false;
     }
 }
Ejemplo n.º 11
0
        public bool StructMetaTableByXML(XmlNode pTable, EnumDBStandard pDBStandard,List<string> pList)
        {
            string sDBStandard = "";
            switch (pDBStandard)
            {
                case EnumDBStandard.XJBZ:
                    sDBStandard = "XJBZ";
                    break;
                case EnumDBStandard.SJBZ:
                    sDBStandard = "SJBZ";
                    break;
                case EnumDBStandard.XZJBZ:
                    sDBStandard = "XZJBZ";
                    break;
                case EnumDBStandard.ALL:
                default:
                    break;
            }
            XmlAttributeCollection pAttributeCollection = pTable.Attributes;
            m_pMetaDataFilds = new List<MetaDataField>();
            ///如果没有属性集合则返回
            if (pAttributeCollection == null || pAttributeCollection.Count <= 0)
                return false;

            ///获取表名称
            XmlAttribute pTableAttribute = pAttributeCollection["Name"];
            if (pTableAttribute != null)
                this.m_strTableName = pTableAttribute.Value;

            ///获取要素代码
            pTableAttribute = pAttributeCollection["Code"];
            if (pTableAttribute != null)
                this.m_strFeatureCode = pTableAttribute.Value;

            ///获取要素类型
            pTableAttribute = pAttributeCollection["GeometryType"];
            if (pTableAttribute != null)
                this.m_strType = pTableAttribute.Value;

            ///获取属性表名称
            pTableAttribute = pAttributeCollection["AtrTBName"];
            if (pTableAttribute != null)
                this.m_strAtrTableName = pTableAttribute.Value;
            ///获取约束条件 与分类 暂时不需要

            ///2011-9-11添加过滤条件
            if (pList != null && !pList.Contains(m_strAtrTableName))
            {
                return false;
            }
            ///获取图形表现编码
            pTableAttribute = pAttributeCollection["GraphPerformance"];
            if (pTableAttribute != null)
                this.m_strGraPerformance = pTableAttribute.Value;

            for (int i=0;i<pTable.ChildNodes.Count;i++)
            {
                XmlNode pTableSubNode =pTable.ChildNodes[i];
                //处理字段信息
                if (pTableSubNode.Name == "FIELDS")
                {
                    ///读表格属性信息构造配置表对象
                    foreach (XmlNode pFiled in pTableSubNode.ChildNodes)
                    {
                        XmlAttribute pVersion = pFiled.Attributes["Versions"];
                        if (pVersion != null && !pVersion.Value.ToString().Contains(sDBStandard))
                        {
                            ////如果该表不属于当前级别的数据库标准
                            continue;
                        }
                        else
                        {
                            ///获取字段信息
                            MetaDataField pMetaDataField = GetMetaTableFieldByXMLAtr(pFiled.Attributes);
                            if (pMetaDataField != null)
                            {
                                this.m_pMetaDataFilds.Add(pMetaDataField);
                                if (pMetaDataField.FiledType == EnumFieldType.EntityID)
                                    m_strEntityIDFiledName = pMetaDataField.Code;
                                else if (pMetaDataField.FiledType == EnumFieldType.YSDM)
                                    m_strYSDMFiledName = pMetaDataField.Code;
                            }
                        }
                    }
                }
                 //处理关联要素信息
                else if (pTableSubNode.Name == "TABLELINKS")
                {
                    foreach (XmlNode pTableLinkItem in pTableSubNode.ChildNodes)
                    {
                       XmlAttribute pTableLinkNameAttr = pTableLinkItem.Attributes["TableName"];
                       XmlAttribute pTableLinkCodeAttr = pTableLinkItem.Attributes["Code"];
                       if (pTableLinkNameAttr != null && pTableLinkCodeAttr != null)
                            {
                                m_LinkFeatureCode.Add(pTableLinkCodeAttr.Value);
                       }
                    }
                }
            }

            return true;
        }
Ejemplo n.º 12
0
 /// <summary>
 /// ���������ļ�
 /// </summary>
 /// <param name="strStandardName">�������ù滮���ݿ��׼����</param>
 /// <returns></returns>
 public bool LoadConfigFile(EnumDBStandard pEnumDBStandard)
 {
     return MetaDataFile.Initial(pEnumDBStandard);
 }
Ejemplo n.º 13
0
 public HeadConfig(EnumDBStandard pEnumDBStandard)
 {
     m_DBStandard = pEnumDBStandard;
 }