/// <summary> /// Writes to the given stream the equilivent shape file record given a Geometry object. /// </summary> /// <param name="geometry">The geometry object to write.</param> /// <param name="writer">The stream to write to.</param> /// <param name="factory">The geometry factory to use.</param> public override void Write(Geometry geometry, BinaryWriter writer, GeometryFactory factory) { MultiLineString multi = (MultiLineString)geometry; writer.Write((int)this.ShapeType); this.WriteBoundingBox(multi.getEnvelopeInternal(), writer); int numParts = multi.getNumGeometries(); int numPoints = multi.getNumPoints(); writer.Write(numParts); writer.Write(numPoints); //LineString[] lines = new LineString[numParts]; // write the offsets int offset = 0; for (int i = 0; i < numParts; i++) { Geometry g = multi.getGeometryN(i); writer.Write(offset); offset = offset + g.getNumPoints(); } for (int part = 0; part < numParts; part++) { Coordinate[] coords = multi.getGeometryN(part).getCoordinates(); for (int i = 0; i < coords.Length; i++) { factory.getPrecisionModel().makePrecise(coords[i]); writer.Write(coords[i].x); writer.Write(coords[i].y); } } }