/// <summary> /// Writes an homogeneus <c>GometryCollection</c> into a binary shapefile. /// </summary> /// <param name="geometries">If geometries are not of the same type throws <c>System.ArgumentException</c>.</param> /// <param name="shapepath">Path of the shapefile to create: will be created a new file using the given path. /// if file exists throws <c>System.IO.IOException</c>.</param> public void Write(GeometryCollection geometries, string shapepath) { using (Stream stream = new FileStream(shapepath, FileMode.CreateNew, FileAccess.Write, FileShare.None)) { Write(geometries, stream); } }
internal static Geometries.GeometryCollection ToSharpMapGeometryCollection(GeometryCollection geometryCollection) { Geometries.GeometryCollection collection = new Geometries.GeometryCollection(); foreach (Geometry geometry in geometryCollection.Geometries) { collection.Collection.Add(ToSharpMapGeometry(geometry)); } return(collection); }
public void TestWriteSimpleShapeFile() { IPoint p1 = Factory.CreatePoint(new Coordinate(100, 100)); IPoint p2 = Factory.CreatePoint(new Coordinate(200, 200)); GeometryCollection coll = new GeometryCollection(new IGeometry[] { p1, p2, }); ShapefileWriter writer = new ShapefileWriter(Factory); writer.Write(@"c:\test_arcview", coll); ShapefileWriter.WriteDummyDbf(@"c:\test_arcview.dbf", 2); // Not read by ArcView!!! }
private static IGeometryCollection ReadGeometryCollection(JsonTextReader jreader) { if (jreader == null) { throw new ArgumentNullException("reader", "A valid JSON reader object is required."); } IGeometryCollection geometries = null; if (jreader.TokenClass == JsonTokenClass.Array) { jreader.ReadToken(JsonTokenClass.Array); List <IGeometry> list = new List <IGeometry>(); while (jreader.TokenClass == JsonTokenClass.Object) { IGeometry geometry = Read(jreader); list.Add(geometry); } jreader.ReadToken(JsonTokenClass.EndArray); geometries = new GisSharpBlog.NetTopologySuite.Geometries.GeometryCollection(list.ToArray()); } return(geometries); }
/// <summary> /// Writes an homogeneus <c>GometryCollection</c> into a binary stream. /// </summary> /// <param name="geometries"></param> /// <param name="stream"></param> protected void Write(GeometryCollection geometries, Stream stream) { if (!geometries.IsHomogeneous) throw new ArgumentException("Shapefile does contain only geometries of th esame type!"); // Init counter recordCounter = 0; using (BigEndianBinaryWriter beWriter = new BigEndianBinaryWriter(stream)) { using (BinaryWriter leWriter = new BinaryWriter(stream)) { // Evaluate stream length int fileLength = 0; foreach (Geometry geometry in geometries.Geometries) fileLength += (shapeWriter.GetBytesLength(geometry) + 8); // 12 is the length of record header fileLength += 100; // Add main header WriteHeaderFile(geometries, leWriter, beWriter, (int)(fileLength / 2)); // Write length in 16 bit words! foreach (Geometry geometry in geometries.Geometries) Write(geometry, leWriter, beWriter); } } }
/// <summary> /// Transforms a <see cref="GeometryCollection" /> object. /// </summary> /// <param name="geoms"></param> /// <param name="transform"></param> /// <returns></returns> public static IGeometryCollection TransformGeometryCollection(GeometryCollection geoms, IMathTransform transform) { List<IGeometry> coll = new List<IGeometry>(geoms.Geometries.Length); foreach (IGeometry g in geoms.Geometries) coll.Add(TransformGeometry(g, transform)); return new GeometryCollection(coll.ToArray()); }
private static GeometryCollection ReadGeometryCollection(JsonTextReader jreader) { if (jreader == null) throw new ArgumentNullException("reader", "A valid JSON reader object is required."); GeometryCollection geometries = null; if (jreader.TokenClass == JsonTokenClass.Array) { jreader.ReadToken(JsonTokenClass.Array); List<Geometry> list = new List<Geometry>(); while (jreader.TokenClass == JsonTokenClass.Object) { Geometry geometry = Read(jreader); list.Add(geometry); } jreader.ReadToken(JsonTokenClass.EndArray); geometries = new GeometryCollection(list.ToArray()); } return geometries; }
public static void Write(GeometryCollection geometries, TextWriter writer) { if (geometries == null) return; if (writer == null) throw new ArgumentNullException("writer", "A valid text writer object is required."); JsonTextWriter jwriter = new JsonTextWriter(writer); Write(geometries, jwriter); }
public static void Write(GeometryCollection geometries, JsonTextWriter jwriter) { if (geometries == null) return; if (jwriter == null) throw new ArgumentNullException("jwriter", "A valid JSON writer object is required."); jwriter.WriteStartObject(); jwriter.WriteMember("type"); jwriter.WriteString("GeometryCollection"); jwriter.WriteMember("geometries"); jwriter.WriteStartArray(); foreach (Geometry geometry in geometries.Geometries) { Write(geometry, jwriter); } jwriter.WriteEndArray(); jwriter.WriteEndObject(); }
/// <summary> /// Transforms a <see cref="GeometryCollection" /> object. /// </summary> /// <param name="factory"></param> /// <param name="geoms"></param> /// <param name="transform"></param> /// <returns></returns> public static IGeometryCollection TransformGeometryCollection(IGeometryFactory factory, GeometryCollection geoms, IMathTransform transform) { List<IGeometry> coll = new List<IGeometry>(geoms.Geometries.Length); foreach (IGeometry g in geoms.Geometries) { IGeometry item = TransformGeometry(factory, g, transform); coll.Add(item); } return factory.CreateGeometryCollection(coll.ToArray()); }
/// <summary> /// /// </summary> /// <param name="geometries"></param> /// <param name="beWriter">Big Endian Writer</param> /// <param name="leWriter">Little Endian Endian Writer</param> /// <param name="streamLength"></param> protected void WriteHeaderFile(GeometryCollection geometries, BinaryWriter leWriter, BigEndianBinaryWriter beWriter, int streamLength) { // Write stub value for FileCode (big endian) beWriter.WriteIntBE((int) 9994); // Write stub values for unused (big endian) beWriter.WriteIntBE((int) 0); beWriter.WriteIntBE((int) 0); beWriter.WriteIntBE((int) 0); beWriter.WriteIntBE((int) 0); beWriter.WriteIntBE((int) 0); // Write stub value for Length (big endian) beWriter.WriteIntBE((int) streamLength); // Write version leWriter.Write((int) 1000); // Write ShapeTipe leWriter.Write((int) GetShapeType((Geometry) geometries.Geometries[0])); // Write values for boundingbox Envelope envelope = (Envelope) geometries.EnvelopeInternal; leWriter.Write((double) envelope.MinX); leWriter.Write((double) envelope.MinY); leWriter.Write((double) envelope.MaxX); leWriter.Write((double) envelope.MaxY); leWriter.Write((double) 0); leWriter.Write((double) 0); leWriter.Write((double) 0); leWriter.Write((double) 0); }
internal static Geometries.GeometryCollection ToSharpMapGeometryCollection(GeometryCollection geometryCollection) { Geometries.GeometryCollection collection = new Geometries.GeometryCollection(); foreach (Geometry geometry in geometryCollection.Geometries) collection.Collection.Add(ToSharpMapGeometry(geometry)); return collection; }
private void WriteGridAbundances(Project currentProject, string shapefileName) { try { List<IPolygon>projectGrids=new List<IPolygon>(); General_queries projq=new General_queries(currentProject); foreach(Station st in currentProject.StationsList) { IPolygon grid=st.Grid; StationStats tempStationStats=new StationStats(st.Guid,st.StationID); foreach(StationStats stst in projq.AllStatsByStation) { if(stst.StationGUID==st.Guid) { tempStationStats=stst; grid.UserData=tempStationStats; } } projectGrids.Add(grid); } GeometryCollection gc=new GeometryCollection(projectGrids.ToArray()); //Open Writer ShapefileWriter shpWriter = new ShapefileWriter(); shpWriter.Write(shapefileName, gc); //Create Header & Columns for points DbaseFileHeader dbfHeader = new DbaseFileHeader(); dbfHeader.AddColumn("Station_ID",'C',20,0); //One column for each species in project foreach(SpeciesStats spcst in projq.AllStatsBySpecies) { dbfHeader.AddColumn(spcst.SpeciesName,'N',20,0); } dbfHeader.NumRecords = gc.Count; //DBF Writer DbaseFileWriter dbfWriter = new DbaseFileWriter(shapefileName+".dbf"); dbfWriter.Write(dbfHeader); //Loop through Business Object to get Features foreach (IPolygon p in gc.Geometries) { StationStats data = (StationStats)p.UserData; ArrayList columnValues = new System.Collections.ArrayList(); //Add Values columnValues.Add(data.StationID); foreach(SpeciesStats s in data.SpeciesStats) { columnValues.Add(s.SpeciesPictures); } dbfWriter.Write(columnValues); } //Close File dbfWriter.Close(); } catch (Exception ex) { throw ex; } }