Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        //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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
            }
        }