/// <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);
     }
 }
Exemple #2
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);
 }
        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());
		}
Exemple #7
0
        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;
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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;
			}
			

		}