/// <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); } }
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); }
/// <summary> /// 加载配置文件 /// </summary> /// <param name="strStandardName">土地利用规划数据库标准名称</param> /// <returns></returns> public bool LoadConfigFile(EnumDBStandard pEnumDBStandard) { return MetaDataFile.Initial(pEnumDBStandard); }
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); }
/// <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); } }
/// <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; } }
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; }
public HeadConfig(EnumDBStandard pEnumDBStandard) { m_DBStandard = pEnumDBStandard; }
/// <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; } }
/// <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; } }
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; }
/// <summary> /// ���������ļ� /// </summary> /// <param name="strStandardName">�������ù滮���ݿ������</param> /// <returns></returns> public bool LoadConfigFile(EnumDBStandard pEnumDBStandard) { return MetaDataFile.Initial(pEnumDBStandard); }