private SdoGeometry WriteMultiPolygon(IGeometry geometry) { int dimension = GetGeometryDimension(geometry); int lrsPos = GetCoordinateLrsPosition(geometry); SdoGeometry sdoGeometry = new SdoGeometry(); sdoGeometry.GeometryType = (int)SdoGeometryTypes.GTYPE.MULTIPOLYGON; sdoGeometry.Dimensionality = dimension; sdoGeometry.LRS = lrsPos; sdoGeometry.Sdo_Srid = geometry.SRID; for (int i = 0; i < geometry.NumGeometries; i++) { try { IPolygon pg = (IPolygon)geometry.GetGeometryN(i); AddPolygon(sdoGeometry, pg, dimension, lrsPos); } catch (Exception e) { throw new ApplicationException( "Found geometry that was not a Polygon in MultiPolygon", e); } } sdoGeometry.PropertiesToGTYPE(); return(sdoGeometry); }
private SdoGeometry WriteMultiPoint(IGeometry geometry) { int dimension = GetGeometryDimension(geometry); int lrsPos = GetCoordinateLrsPosition(geometry); SdoGeometry sdoGeometry = new SdoGeometry(); sdoGeometry.GeometryType = (int)SdoGeometryTypes.GTYPE.MULTIPOINT; sdoGeometry.Dimensionality = dimension; sdoGeometry.LRS = lrsPos; sdoGeometry.Sdo_Srid = geometry.SRID; int[] elements = new int[geometry.NumPoints * ElementTupleSize]; int oordinatesOffset = 1; double[] ordinates = new double[0]; for (int i = 0; i < geometry.NumPoints; i++) { elements[i * ElementTupleSize + 0] = oordinatesOffset; elements[i * ElementTupleSize + 1] = (int)SdoGeometryTypes.ETYPE_SIMPLE.POINT; elements[i * ElementTupleSize + 2] = 0; ordinates = AppendCoordinates(ordinates, ConvertCoordinates(geometry.GetGeometryN(i).Coordinates, dimension, HasLRS(lrsPos))); oordinatesOffset = ordinates.Length + 1; } sdoGeometry.ElemArrayOfInts = elements; sdoGeometry.OrdinatesArrayOfDoubles = ordinates; sdoGeometry.PropertiesToGTYPE(); return(sdoGeometry); }
private SdoGeometry WriteMultiLineString(IGeometry geometry) { int dimension = GetGeometryDimension(geometry); SdoGeometry sdoGeometry = new SdoGeometry(); sdoGeometry.GeometryType = (int)SdoGeometryTypes.GTYPE.MULTILINE; sdoGeometry.Dimensionality = dimension; sdoGeometry.LRS = 0; sdoGeometry.Sdo_Srid = geometry.SRID; int[] elements = new int[geometry.NumGeometries * ElementTupleSize]; int oordinatesOffset = 1; double[] ordinates = new double[] { }; for (int i = 0; i < geometry.NumGeometries; i++) { elements[i * ElementTupleSize + 0] = oordinatesOffset; elements[i * ElementTupleSize + 1] = (int)SdoGeometryTypes.ETYPE_SIMPLE.LINE; elements[i * ElementTupleSize + 2] = 1; ordinates = AppendCoordinates(ordinates, ConvertCoordinates(geometry.GetGeometryN(i).Coordinates, dimension)); oordinatesOffset = ordinates.Length + 1; } sdoGeometry.ElemArrayOfInts = elements; sdoGeometry.OrdinatesArrayOfDoubles = ordinates; sdoGeometry.PropertiesToGTYPE(); return(sdoGeometry); }
private SdoGeometry WritePolygon(IGeometry geometry) { int dimension = GetGeometryDimension(geometry); SdoGeometry sdoGeometry = new SdoGeometry(); sdoGeometry.GeometryType = (int)SdoGeometryTypes.GTYPE.POLYGON; sdoGeometry.Dimensionality = dimension; sdoGeometry.LRS = 0; sdoGeometry.Sdo_Srid = geometry.SRID; AddPolygon(sdoGeometry, geometry as IPolygon, dimension); sdoGeometry.PropertiesToGTYPE(); return(sdoGeometry); }
private SdoGeometry WriteLineString(IGeometry geometry) { int dimension = GetGeometryDimension(geometry); double[] ordinates = ConvertCoordinates(geometry.Coordinates, dimension); SdoGeometry sdoGeometry = new SdoGeometry(); sdoGeometry.GeometryType = (int)SdoGeometryTypes.GTYPE.LINE; sdoGeometry.Dimensionality = dimension; sdoGeometry.LRS = 0; sdoGeometry.Sdo_Srid = geometry.SRID; sdoGeometry.ElemArrayOfInts = new[] { 1, (int)SdoGeometryTypes.ETYPE_SIMPLE.LINE, 1 }; sdoGeometry.OrdinatesArrayOfDoubles = ordinates; sdoGeometry.PropertiesToGTYPE(); return(sdoGeometry); }
private SdoGeometry WritePoint(IGeometry geometry) { int dimension = GetGeometryDimension(geometry); int lrsPos = GetCoordinateLrsPosition(geometry); double[] coord = ConvertCoordinates(geometry.Coordinates, dimension, HasLRS(lrsPos)); SdoGeometry sdoGeometry = new SdoGeometry(); sdoGeometry.GeometryType = (int)SdoGeometryTypes.GTYPE.POINT; sdoGeometry.Dimensionality = dimension; sdoGeometry.LRS = lrsPos; sdoGeometry.Sdo_Srid = geometry.SRID; sdoGeometry.ElemArrayOfInts = new [] { 1, (int)SdoGeometryTypes.ETYPE_SIMPLE.POINT, 1 }; sdoGeometry.OrdinatesArrayOfDoubles = coord; sdoGeometry.PropertiesToGTYPE(); return(sdoGeometry); }
public IGeometry Read(SdoGeometry geometry) { geometry.PropertiesToGTYPE(); return(this.ReadGeometry(geometry)); }