public void TestReadingCrustalTestShapeFile() { // Original file with characters '°' in NAME field. using (ShapefileDataReader reader = new ShapefileDataReader("crustal_test_bugged", Factory)) { int length = reader.DbaseHeader.NumFields; while (reader.Read()) { Debug.WriteLine(reader.GetValue(length - 1)); } } // Removed NAME field characters using (ShapefileDataReader reader = new ShapefileDataReader("crustal_test", Factory)) { int length = reader.DbaseHeader.NumFields; while (reader.Read()) { Debug.WriteLine(reader.GetValue(length - 1)); } } }
private void ReadFromShapeFile() { ArrayList featureCollection = new ArrayList(); string filename = @"country"; if (!File.Exists(filename + ".dbf")) throw new FileNotFoundException(filename + " not found at " + Environment.CurrentDirectory); ShapefileDataReader dataReader = new ShapefileDataReader(filename, new GeometryFactory()); while (dataReader.Read()) { Feature feature = new Feature(); feature.Geometry = dataReader.Geometry; int length = dataReader.DbaseHeader.NumFields; string[] keys = new string[length]; for (int i = 0; i < length; i++) keys[i] = dataReader.DbaseHeader.Fields[i].Name; feature.Attributes = new AttributesTable(); for (int i = 0; i < length; i++) { object val = dataReader.GetValue(i); feature.Attributes.AddAttribute(keys[i], val); } featureCollection.Add(feature); } int index = 0; Console.WriteLine("Elements = " + featureCollection.Count); foreach (Feature feature in featureCollection) { Console.WriteLine("Feature " + index++); AttributesTable table = feature.Attributes as AttributesTable; foreach (string name in table.GetNames()) Console.WriteLine(name + ": " + table[name]); } // Test write with stub header string file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"../../../NetTopologySuite.Samples.Shapefiles/testWriteStubHeader"); if (File.Exists(file + ".shp")) File.Delete(file + ".shp"); if (File.Exists(file + ".shx")) File.Delete(file + ".shx"); if (File.Exists(file + ".dbf")) File.Delete(file + ".dbf"); ShapefileDataWriter dataWriter = new ShapefileDataWriter(file); dataWriter.Header = ShapefileDataWriter.GetHeader(featureCollection[0] as Feature, featureCollection.Count); dataWriter.Write(featureCollection); // Test write with header from a existing shapefile file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"../../../NetTopologySuite.Samples.Shapefiles/testWriteShapefileHeader"); if (File.Exists(file + ".shp")) File.Delete(file + ".shp"); if (File.Exists(file + ".shx")) File.Delete(file + ".shx"); if (File.Exists(file + ".dbf")) File.Delete(file + ".dbf"); dataWriter = new ShapefileDataWriter(file); dataWriter.Header = ShapefileDataWriter.GetHeader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"../../../NetTopologySuite.Samples.Shapefiles/country.dbf")); dataWriter.Write(featureCollection); }