private ICoordinateSequence ConvertOrdinateArray(double[] oordinates, SdoGeometry sdoGeom)
        {
            int dim = sdoGeom.Dimensionality;

            Coordinate[] coordinates = new Coordinate[oordinates.Length / dim];
            int          zDim        = 2; //sdoGeom.getZDimension() - 1;
            int          lrsDim      = sdoGeom.LRS - 1;

            for (int i = 0; i < coordinates.Length; i++)
            {
                if (dim == 2)
                {
                    coordinates[i] = new Coordinate(oordinates[i * dim], oordinates[i * dim + 1]);
                }
                else if (dim == 3)
                {
                    if (sdoGeom.LRS > 0)
                    {
                        coordinates[i] = MCoordinate.Create2dWithMeasure(
                            oordinates[i * dim],
                            // X
                            oordinates[i * dim + 1],
                            // Y
                            oordinates[i * dim + lrsDim]); // M
                    }
                    else
                    {
                        coordinates[i] = new Coordinate(
                            oordinates[i * dim],
                            // X
                            oordinates[i * dim + 1],
                            // Y
                            oordinates[i * dim + zDim]); // Z
                    }
                }
                else if (dim == 4)
                {
                    // This must be an LRS Geometry
                    if (sdoGeom.LRS == 0)
                    {
                        throw new ApplicationException("4 dimensional Geometries must be LRS geometry");
                    }
                    coordinates[i] = MCoordinate.Create3dWithMeasure(
                        oordinates[i * dim],
                        // X
                        oordinates[i * dim + 1],
                        // Y
                        oordinates[i * dim + zDim],
                        // Z
                        oordinates[i * dim + lrsDim]); // M
                }
            }
            return(factory.CoordinateSequenceFactory.Create(coordinates));
        }
示例#2
0
        private ICoordinate[] getCoordinates(Double[] oordinates, SdoGeometry sdoGeom)
        {
            int dimension = sdoGeom.Dimensionality;

            ICoordinate[] coordinates = new ICoordinate[oordinates.Length / dimension];

            int zDim   = sdoGeom.ZDimension - 1;
            int lrsDim = sdoGeom.LRSDimension - 1;

            for (int i = 0; i < coordinates.Length; i++)
            {
                if (dimension == 2)
                {
                    coordinates[i] = new Coordinate(
                        oordinates[i * dimension],
                        oordinates[i * dimension + 1]);
                }
                else if (dimension == 3)
                {
                    if (sdoGeom.IsLrsGeometry)
                    {
                        coordinates[i] = MCoordinate.Create2dWithMeasure(
                            oordinates[i * dimension],
                            oordinates[i * dimension + 1],
                            oordinates[i * dimension + lrsDim]);
                    }
                    else
                    {
                        coordinates[i] = new Coordinate(
                            oordinates[i * dimension],
                            oordinates[i * dimension + 1],
                            oordinates[i * dimension + zDim]);
                    }
                }
                else if (dimension == 4)
                {
                    // This must be an LRS Geometry
                    if (!sdoGeom.IsLrsGeometry)
                    {
                        throw new Exception(
                                  "4 dimensional Geometries must be LRS geometry");
                    }

                    coordinates[i] = MCoordinate.Create3dWithMeasure(
                        oordinates[i * dimension],
                        oordinates[i * dimension + 1],
                        oordinates[i * dimension + zDim],
                        oordinates[i * dimension + lrsDim]);
                }
            }
            return(coordinates);
        }