Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        /// <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;
        }
Beispiel #3
0
        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);
            //}
        }