public ShapefileWriter(IGeometryFactory geometryFactory, IStreamProviderRegistry streamProviderRegistry, ShapeGeometryType geomType) : this(geometryFactory) { _shpStream = streamProviderRegistry[StreamTypes.Shape].OpenWrite(true); _shxStream = streamProviderRegistry[StreamTypes.Index].OpenWrite(true); _geometryType = geomType; _shpBinaryWriter = new BigEndianBinaryWriter(_shpStream); WriteShpHeader(_shpBinaryWriter, 0, new Envelope(0, 0, 0, 0)); if (_shxStream != null) { _shxBinaryWriter = new BigEndianBinaryWriter(_shxStream); WriteShxHeader(_shxBinaryWriter, 0, new Envelope(0, 0, 0, 0)); } _shapeHandler = Shapefile.GetShapeHandler(geomType); }
/// <summary> /// Reads the shapefile and returns a GeometryCollection representing all the records in the shapefile. /// </summary> /// <returns>GeometryCollection representing every record in the shapefile.</returns> public IGeometryCollection ReadAll() { var list = new List <IGeometry>(); ShapeGeometryType type = _mainHeader.ShapeType; ShapeHandler handler = Shapefile.GetShapeHandler(type); if (handler == null) { throw new NotSupportedException("Unsupported shape type:" + type); } int i = 0; foreach (IGeometry geometry in this) { list.Add(geometry); i++; } IGeometry[] geomArray = GeometryFactory.ToGeometryArray(list); return(_geometryFactory.CreateGeometryCollection(geomArray)); }