private IMultiLineString ReadMultiLine(int dim, int lrsDim, SdoGeometry sdoGeom) { bool lrs = sdoGeom.LRS > 0; decimal[] info = sdoGeom.ElemArray; LineString[] lines = lrs ? new MLineString[sdoGeom.ElemArray.Length] : new LineString[sdoGeom.ElemArray.Length]; int i = 0; while (i < info.Length) { ICoordinateSequence cs = null; if (info.getElementType(i).isCompound()) { int numCompounds = info.getNumCompounds(i); cs = Add(cs, GetCompoundCSeq(i + 1, i + numCompounds, sdoGeom)); LineString line = lrs ? factory.createMLineString(cs) : factory.CreateLineString(cs); lines[i] = line; i += 1 + numCompounds; } else { cs = Add(cs, GetElementCSeq(i, sdoGeom, false)); LineString line = lrs ? (LineString)factory.createMLineString(cs) : factory.CreateLineString(cs); lines[i] = line; i++; } } MultiLineString mls = lrs ? factory.createMultiMLineString((MLineString[])lines) : factory.CreateMultiLineString(lines); mls.SRID = (int)sdoGeom.Sdo_Srid; return(mls); }