/// <summary> /// Initializes a new instance of the <see cref="DbaseFileEnumerator"/> class. /// </summary> /// <param name="parent"></param> public DbaseFileEnumerator(DbaseFileReader parent) { _parent = parent; FileStream stream = new FileStream(parent._filename, FileMode.Open, FileAccess.Read, FileShare.Read); _dbfStream = new BinaryReader(stream, Encoding.Default); ReadHeader(); }
private void TestSharcDbf() { string filename = @"\Strade.dbf"; if (!File.Exists(filename)) throw new FileNotFoundException(filename + " not found at " + Environment.CurrentDirectory); DbaseFileReader reader = new DbaseFileReader(filename); DbaseFileHeader header = reader.GetHeader(); Console.WriteLine("HeaderLength: " + header.HeaderLength); Console.WriteLine("RecordLength: " + header.RecordLength); Console.WriteLine("NumFields: " + header.NumFields); Console.WriteLine("NumRecords: " + header.NumRecords); Console.WriteLine("LastUpdateDate: " + header.LastUpdateDate); foreach (DbaseFieldDescriptor descr in header.Fields) { Console.WriteLine("FieldName: " + descr.Name); Console.WriteLine("DBF Type: " + descr.DbaseType); Console.WriteLine("CLR Type: " + descr.Type); Console.WriteLine("Length: " + descr.Length); Console.WriteLine("DecimalCount: " + descr.DecimalCount); Console.WriteLine("DataAddress: " + descr.DataAddress); } IEnumerator ienum = reader.GetEnumerator(); while (ienum.MoveNext()) { ArrayList objs = (ArrayList)ienum.Current; foreach (object obj in objs) Console.WriteLine(obj); } Console.WriteLine(); }
/// <summary> /// /// </summary> /// <param name="parent"></param> public DbaseFileEnumerator(DbaseFileReader parent) { _parent = parent; FileStream stream = new FileStream(parent._filename, FileMode.Open, FileAccess.Read, FileShare.Read); _dbfStream = new BinaryReader(stream); ReadHeader(); }
/// <summary> /// Initializes a new instance of the ShapefileDataReader class. /// </summary> /// <param name="filename">The shapefile to read (minus the .shp extension)</param> ///<param name="geometryFactory">The GeometryFactory to use.</param> public ShapefileDataReader(string filename, IGeometryFactory geometryFactory) { if (filename == null) { throw new ArgumentNullException("filename"); } if (geometryFactory == null) { throw new ArgumentNullException("geometryFactory"); } _geometryFactory = geometryFactory; _open = true; if (filename.ToLower().EndsWith(".shp")) { filename = filename.ToLower().Replace(".shp", String.Empty); } _dbfReader = new DbaseFileReader(filename + ".dbf"); _shpReader = new ShapefileReader(filename + ".shp", geometryFactory); _dbfHeader = _dbfReader.GetHeader(); _recordCount = _dbfHeader.NumRecords; // copy dbase fields to our own array. Insert into the first position, the shape column _dbaseFields = new DbaseFieldDescriptor[_dbfHeader.Fields.Length + 1]; _dbaseFields[0] = DbaseFieldDescriptor.ShapeField(); for (int i = 0; i < _dbfHeader.Fields.Length; i++) { _dbaseFields[i + 1] = _dbfHeader.Fields[i]; } _shpHeader = _shpReader.Header; _dbfEnumerator = _dbfReader.GetEnumerator(); _shpEnumerator = _shpReader.GetEnumerator(); _moreRecords = true; }
public void ReadDbfDate() { string file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\..\NetTopologySuite.Samples.Shapefiles\date.dbf"); if (!File.Exists(file)) throw new FileNotFoundException("file not found at " + Path.GetDirectoryName(file)); DbaseFileReader reader = new DbaseFileReader(file); DbaseFileHeader header = reader.GetHeader(); IEnumerator ienum = reader.GetEnumerator(); ienum.MoveNext(); ArrayList items = ienum.Current as ArrayList; Assert.IsNotNull(items); Assert.AreEqual(2, items.Count); foreach (Object item in items) Assert.IsNotNull(item); DateTime date = (DateTime)items[1]; Assert.AreEqual(10, date.Day); Assert.AreEqual(3, date.Month); Assert.AreEqual(2006, date.Year); }
/// <summary> /// Initializes a new instance of the ShapefileDataReader class. /// </summary> /// <param name="filename">The shapefile to read (minus the .shp extension)</param> ///<param name="geometryFactory">The GeometryFactory to use.</param> public ShapefileDataReader(string filename, IGeometryFactory geometryFactory) { if (filename == null) throw new ArgumentNullException("filename"); if (geometryFactory == null) throw new ArgumentNullException("geometryFactory"); _geometryFactory = geometryFactory; _open = true; if (filename.ToLower().EndsWith(".shp")) filename = filename.ToLower().Replace(".shp",String.Empty); _dbfReader = new DbaseFileReader(filename + ".dbf"); _shpReader = new ShapefileReader(filename + ".shp", geometryFactory); _dbfHeader = _dbfReader.GetHeader(); _recordCount = _dbfHeader.NumRecords; // copy dbase fields to our own array. Insert into the first position, the shape column _dbaseFields = new DbaseFieldDescriptor[_dbfHeader.Fields.Length + 1]; _dbaseFields[0] = DbaseFieldDescriptor.ShapeField(); for(int i=0; i < _dbfHeader.Fields.Length; i++) _dbaseFields[i+1] = _dbfHeader.Fields[i]; _shpHeader = _shpReader.Header; _dbfEnumerator = _dbfReader.GetEnumerator(); _shpEnumerator = _shpReader.GetEnumerator(); _moreRecords = true; }