internal static byte[] WriteHeaderToByte(int recordNumber, IEsriShape shape) { System.IO.MemoryStream result = new System.IO.MemoryStream(); result.Write(IRI.Msh.Common.Helpers.StreamHelper.Int32ToBigEndianOrderedBytes(recordNumber), 0, ShapeConstants.IntegerSize); result.Write(IRI.Msh.Common.Helpers.StreamHelper.Int32ToBigEndianOrderedBytes(shape.ContentLength), 0, ShapeConstants.IntegerSize); return(result.ToArray()); }
public static SqlGeometry AsSqlGeometry(this IEsriShape shape) { //try //{ // return SqlGeometry.STGeomFromWKB(new SqlBytes(shape.AsWkb()), srid).MakeValid(); //} //catch (Exception ex) //{ // return SqlGeometry.Null; //} SqlGeometryBuilder builder = new SqlGeometryBuilder(); builder.SetSrid(shape.Srid); try { switch (shape.Type) { case EsriShapeType.NullShape: return(SqlGeometry.Null); case EsriShapeType.EsriPoint: case EsriShapeType.EsriPointM: case EsriShapeType.EsriPointZ: WriteEsriPoint(builder, (IPoint)shape); break; case EsriShapeType.EsriMultiPoint: case EsriShapeType.EsriMultiPointM: case EsriShapeType.EsriMultiPointZ: WriteEsriMultiPoint(builder, (IEsriSimplePoints)shape); break; case EsriShapeType.EsriPolyLine: case EsriShapeType.EsriPolyLineM: case EsriShapeType.EsriPolyLineZ: WriteEsriPolyline(builder, (IEsriSimplePoints)shape); break; case EsriShapeType.EsriPolygon: case EsriShapeType.EsriPolygonM: case EsriShapeType.EsriPolygonZ: WriteEsriPolygon(builder, (IEsriSimplePoints)shape); break; case EsriShapeType.EsriMultiPatch: default: break; } var result = builder.ConstructedGeometry.MakeValid(); if (!result.IsNullOrEmpty() && !AreConsistent(shape.Type, result.GetOpenGisType())) { return(ClearGeometry(shape.Type, result, shape.Srid)); } return(result); } catch (Exception ex) { return(CreateDefault(shape.Type, shape.Srid)); } }