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(); } }
private static void WriteEsriMultiPoint(SqlGeometryBuilder builder, ISimplePoints points) { builder.BeginGeometry(OpenGisGeometryType.MultiPoint); foreach (var point in points.Points) { WriteEsriPoint(builder, point); } builder.EndGeometry(); }
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()); }
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); }