public static IRI.Ham.SpatialBase.BoundingBox CalculateBoundingBox(MainFileHeader header, params MainFileHeader[] headers) { double xMin = header.XMin; double xMax = header.XMax; double yMin = header.YMin; double yMax = header.YMax; if (headers.Length > 0) { for (int i = 0; i < headers.Length; i++) { if (headers[i].XMin < xMin) { xMin = headers[i].XMin; } if (headers[i].YMin < yMin) { yMin = headers[i].YMin; } if (headers[i].XMax > xMax) { xMax = headers[i].XMax; } if (headers[i].YMax > yMax) { yMax = headers[i].YMax; } } } return(new IRI.Ham.SpatialBase.BoundingBox(xMin, yMin, xMax, yMax)); }
//private static int GetLittleEndianIntegerValue(byte[] source, int offset) //{ // byte[] temp = new byte[ShapeConstants.IntegerSize]; // Array.ConstrainedCopy(source, offset, temp, 0, ShapeConstants.IntegerSize); // return System.BitConverter.ToInt32(temp, 0); //} //private static double GetLittleEndianDoubleValue(byte[] source, int offset) //{ // byte[] temp = new byte[ShapeConstants.DoubleSize]; // Array.ConstrainedCopy(source, offset, temp, 0, ShapeConstants.DoubleSize); // return System.BitConverter.ToDouble(temp, 0); //} public static bool CanBeForTheSameShapefile(MainFileHeader firstHeader, MainFileHeader secondHeader) { return (firstHeader.MMax.Equals(secondHeader.MMax) && firstHeader.MMin.Equals(secondHeader.MMin) && firstHeader.ShapeType.Equals(secondHeader.ShapeType) && firstHeader.Version.Equals(secondHeader.Version) && firstHeader.XMax.Equals(secondHeader.XMax) && firstHeader.XMin.Equals(secondHeader.XMin) && firstHeader.YMax.Equals(secondHeader.YMax) && firstHeader.YMin.Equals(secondHeader.YMin) && firstHeader.ZMax.Equals(secondHeader.ZMax) && firstHeader.ZMin.Equals(secondHeader.ZMin)); //bool result = (double.NaN.Equals(double.NaN)); }
public static MainFileHeader GetFileHeader(string fileName) { MainFileHeader MainHeader; using (System.IO.FileStream shpStream = new System.IO.FileStream(fileName, System.IO.FileMode.Open)) { using (System.IO.BinaryReader shpReader = new System.IO.BinaryReader(shpStream)) { MainHeader = new MainFileHeader(shpReader.ReadBytes(ShapeConstants.MainHeaderLengthInBytes)); shpReader.Close(); shpStream.Close(); } } return(MainHeader); }
public static IShapeCollection Read(string shpFileName) { //System.ComponentModel.LicenseManager.Validate(typeof(Shapefile)); if (!System.IO.File.Exists(shpFileName)) { throw new System.IO.FileNotFoundException(); } MainFileHeader MainHeader; using (System.IO.FileStream shpStream = new System.IO.FileStream(shpFileName, System.IO.FileMode.Open)) { using (System.IO.BinaryReader shpReader = new System.IO.BinaryReader(shpStream)) { MainHeader = new MainFileHeader(shpReader.ReadBytes(ShapeConstants.MainHeaderLengthInBytes)); } } switch (MainHeader.ShapeType) { case ShapeType.NullShape: throw new NotImplementedException(); case ShapeType.Point: Reader.PointReader reader01 = new Reader.PointReader(shpFileName); return(reader01.elements); case ShapeType.PolyLine: Reader.PolyLineReader reader02 = new Reader.PolyLineReader(shpFileName); return(reader02.elements); case ShapeType.Polygon: Reader.PolygonReader reader03 = new Reader.PolygonReader(shpFileName); return(reader03.elements); case ShapeType.MultiPoint: Reader.MultiPointReader reader04 = new Reader.MultiPointReader(shpFileName); return(reader04.elements); case ShapeType.PointZ: Reader.PointZReader reader05 = new Reader.PointZReader(shpFileName); return(reader05.elements); case ShapeType.PolyLineZ: Reader.PolyLineZReader reader06 = new Reader.PolyLineZReader(shpFileName); return(reader06.elements); case ShapeType.PolygonZ: Reader.PolygonZReader reader07 = new Reader.PolygonZReader(shpFileName); return(reader07.elements); case ShapeType.MultiPointZ: Reader.MultiPointZReader reader08 = new Reader.MultiPointZReader(shpFileName); return(reader08.elements); case ShapeType.PointM: Reader.PointMReader reader09 = new Reader.PointMReader(shpFileName); return(reader09.elements); case ShapeType.PolyLineM: Reader.PolyLineMReader reader10 = new Reader.PolyLineMReader(shpFileName); return(reader10.elements); case ShapeType.PolygonM: Reader.PolygonMReader reader11 = new Reader.PolygonMReader(shpFileName); return(reader11.elements); case ShapeType.MultiPointM: Reader.MultiPointMReader reader12 = new Reader.MultiPointMReader(shpFileName); return(reader12.elements); case ShapeType.MultiPatch: throw new NotImplementedException(); default: throw new NotImplementedException(); } }