Beispiel #1
0
        private static void WriteEsriPolygon(SqlGeometryBuilder builder, ISimplePoints points)
        {
            if (points.NumberOfParts == 1)
            {
                builder.BeginGeometry(OpenGisGeometryType.Polygon);

                WriteLineOrRing(builder, points.Points);

                builder.EndGeometry();
            }
            else if (points.NumberOfParts > 1)
            {
                builder.BeginGeometry(OpenGisGeometryType.MultiPolygon);

                for (int i = 0; i < points.NumberOfParts; i++)
                {
                    builder.BeginGeometry(OpenGisGeometryType.Polygon);

                    WriteLineOrRing(builder, points.GetPart(i));

                    builder.EndGeometry();
                }

                builder.EndGeometry();
            }
            else
            {
                throw new NotImplementedException();
            }
        }
Beispiel #2
0
        private static void WriteEsriMultiPoint(SqlGeometryBuilder builder, ISimplePoints points)
        {
            builder.BeginGeometry(OpenGisGeometryType.MultiPoint);

            foreach (var point in points.Points)
            {
                WriteEsriPoint(builder, point);
            }

            builder.EndGeometry();
        }
Beispiel #3
0
        internal static byte[] WriteBoundingBoxToByte(ISimplePoints shape)
        {
            System.IO.MemoryStream result = new System.IO.MemoryStream();

            result.Write(System.BitConverter.GetBytes(shape.MinimumBoundingBox.XMin), 0, ShapeConstants.DoubleSize);

            result.Write(System.BitConverter.GetBytes(shape.MinimumBoundingBox.YMin), 0, ShapeConstants.DoubleSize);

            result.Write(System.BitConverter.GetBytes(shape.MinimumBoundingBox.XMax), 0, ShapeConstants.DoubleSize);

            result.Write(System.BitConverter.GetBytes(shape.MinimumBoundingBox.YMax), 0, ShapeConstants.DoubleSize);

            return(result.ToArray());
        }
Beispiel #4
0
        internal static EsriPoint[] GetPoints(ISimplePoints shape, int startIndex)
        {
            int partNumber = Array.IndexOf(shape.Parts, startIndex);

            //int startIndex = shape.Parts[partNumber];

            int lastIndex = (partNumber == shape.NumberOfParts - 1) ? shape.NumberOfPoints - 1 : shape.Parts[partNumber + 1] - 1;

            EsriPoint[] result = new EsriPoint[lastIndex - startIndex + 1];

            Array.ConstrainedCopy(shape.Points, startIndex, result, 0, result.Length);

            return(result);
        }