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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
 }