/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /// <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; }
/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /// <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; }