예제 #1
0
        ///////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Inits procedure.
        /// </summary>
        /// <param name="fileName">Shape file full name.</param>
        /// <param name="messageFailure">Message failure.</param>
        /// <returns>TRUE if initialize successed.</returns>
        public bool Init(string fileName, out string messageFailure)
        {
            Debug.Assert(!string.IsNullOrEmpty(fileName));

            messageFailure = null;
            try
            {
                _file = new Shapefile(fileName, false);

                DataTable table = _file.SchemaTable;
                foreach (DataRow row in table.Rows)
                {
                    string name = (string)row["ColumnName"];
                    if (!string.IsNullOrEmpty(name.Trim()))
                        _fieldsInfo.Add(new DataFieldInfo(name, (Type)row["DataType"]));
                }
            }
            catch (Exception e)
            {
                _file = null;

                Logger.Error(e);

                messageFailure = e.Message;

                // WORKAROUND: hardcoded replace info message
                if (messageFailure.Contains(INVALID_FILE_SHAPELIB_ERROR_TEXT))
                {
                    messageFailure = App.Current.FindString("ImportSHPFileInvalidMessage");
                }
            }

            return _IsInited;
        }
예제 #2
0
        ///////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Gets shape type of file.
        /// </summary>
        /// <param name="fileName">Shape file full name.</param>
        /// <param name="messageFailure">Message failure.</param>
        /// <returns>Readed shape type.</returns>
        public static ShapeType GetShapeType(string fileName, out string messageFailure)
        {
            Debug.Assert(!string.IsNullOrEmpty(fileName));

            ShapeType type = ShapeType.Null;
            messageFailure = null;
            try
            {
                Shapefile file = new Shapefile(fileName, false);
                if (file.RecordCount < 1)
                    throw new NotSupportedException();

                Shape shape = file.ReadRecord(0);
                if (null == shape)
                    throw new NotSupportedException();

                type = shape.ShapeType;
            }
            catch (Exception e)
            {
                Logger.Error(e);
                messageFailure = e.Message;
            }

            return type;
        }