private List<FieldNode> GetFieldNodes(IFields pFields) { try { IFeatureClass pFeatureCls = this.m_pITable as IFeatureClass; List<FieldNode> pListFieldNode = new List<FieldNode>(); for (int i = 0; i < pFields.FieldCount; i++) { IField itemField = pFields.get_Field(i); ///只保持属性字段 if (itemField.Type != esriFieldType.esriFieldTypeGeometry && itemField.Type != esriFieldType.esriFieldTypeOID && itemField.Name.ToUpper() != "SHAPE_LENGTH" && itemField.Name.ToUpper() != "SHAPE_AREA" ) { if (pFeatureCls != null && pFeatureCls.FeatureType == esriFeatureType.esriFTAnnotation) { AddAnnotationFieldNode(itemField, pListFieldNode); } else { string sLine = ""; if (itemField.Precision != null && itemField.Precision != 0) sLine = itemField.Name + HeadNode.Separator + GetVCTFieldType(itemField.Type) + HeadNode.Separator + itemField.Length + HeadNode.Separator + itemField.Precision; else sLine = itemField.Name + HeadNode.Separator + GetVCTFieldType(itemField.Type) + HeadNode.Separator + itemField.Length; FieldNode pFieldNode = new FieldNode(sLine); pListFieldNode.Add(pFieldNode); } } } return pListFieldNode; } catch (Exception ex) { LogAPI.WriteErrorLog(ex); return null; } }
/// <summary> /// ��ȡVCT���Ա�ṹ�ڵ� /// </summary> private TableStructureNode ReadTableStructureNode() { if (this.m_streamReader != null) { string strLine = ""; //��ȡ�������ֻ��� if (m_bFoundTableStructureBegin == false) { strLine = this.ReadLine(true); //���ұ�ṹ�ڵ�Ŀ�ʼ��ǡ�TableStructureBegin�� if (strLine.IndexOf("TableStructureBegin", System.StringComparison.OrdinalIgnoreCase) > -1) { m_bFoundTableStructureBegin = true; } } if (m_bFoundTableStructureBegin == true) { strLine = this.ReadLine(true); //���ұ�ṹ�ڵ�Ľ�����ǡ�TableStructureEnd�� if (strLine.IndexOf("TableStructureEnd", System.StringComparison.OrdinalIgnoreCase) > -1) return null; else { //�Ȼ�ȡ�������ֶθ��� string[] arrTemp = strLine.Split(HeadNode.Separator); if (arrTemp.LongLength >= 2) { TableStructureNode tableStructureNode = new TableStructureNode(); tableStructureNode.TableName = arrTemp[0]; ///�ж�VCT���Ա�ṹ�Ƿ��ȡ��ȷ int nFieldCound = -1; if (!VCTFile.ConvertToInt32(arrTemp[1],out nFieldCound)) { LogAPI.WriteLog("��ȡVCT���Ա��"+tableStructureNode.TableName+"�����ֶθ��������쳣����ȷ�ϸ������Ƿ���ϱ���"); return null; } if (arrTemp.Length > 2) { if (arrTemp[2].ToLower() == "nonegeometry")//NoneGeometry tableStructureNode.IsGeometryTable = false; } //�ٻ�ȡ�ֶζ��� List<FieldNode> arrFieldNode = new List<FieldNode>(); for (int i = 0; i < nFieldCound; i++) { strLine = this.ReadLine(true); //��ȡ�������ֻ��� FieldNode fieldNode = new FieldNode(strLine); arrFieldNode.Add(fieldNode); } tableStructureNode.FieldNodes = arrFieldNode; return tableStructureNode; } } } } return null; }
private void AddAnnotationFieldNode(IField itemField, List<FieldNode> pListFieldNode) { if (!m_strAnnotationFields.Contains(itemField.Name)) { string sLine = itemField.Name + HeadNode.Separator + GetVCTFieldType(itemField.Type) + HeadNode.Separator + itemField.Length + HeadNode.Separator + itemField.Precision; FieldNode pFieldNode = new FieldNode(sLine); pListFieldNode.Add(pFieldNode); } //string sName = itemField.Name; //string sLine; //FieldNode pFieldNode; //if (sName == "TextString") //{ // sLine = "BSM" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); // sLine = "YSDM" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); // sLine = "ZJNR" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); //} //else if (sName == "FontName") //{ // sLine = "ZT" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); // sLine = "YS" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); //} ////else if(sName=="YS")颜色 //// sName=""; //else if (sName == "FontSize") //{ // sLine = "BS" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); // sLine = "XZ" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); //} ////else if(sName=="XZ")形状 //// sName=""; //else if (sName == "Underline") //{ // sLine = "XHX" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); //} //else if (sName == "CharacterWidth") //{ // sLine = "KD" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); // sLine = "GD" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); //} //else if (sName == "WordSpacing") //{ // sLine = "JG" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); //} //else if (sName == "Angle") //{ // sLine = "ZJFX" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); // sLine = "ZJDZXJXZB" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); // sLine = "ZJDZXJYZB" + HeadNode.Separator // + GetVCTFieldType(itemField.Type) + HeadNode.Separator // + itemField.Length + HeadNode.Separator // + itemField.Precision; // pFieldNode = new FieldNode(sLine); // pListFieldNode.Add(pFieldNode); //} }