/// <summary>
        /// Converts from GeoAPI geometry type to database geometry type.
        /// </summary>
        /// <param name="value">The GeoAPI geometry value.</param>
        /// <returns></returns>
        protected override SdoGeometry FromGeometry(object value)
        {
            IGeometry geometry = value as IGeometry;

            if (geometry == null)
            {
                return(null);
            }
            else
            {
                this.SetDefaultSRID(geometry);

                try
                {
                    OracleGeometryWriter writer      = new OracleGeometryWriter();
                    SdoGeometry          sdoGeometry = writer.Write(geometry);
                    return(sdoGeometry);
                }
                catch (FormatException ex)
                {
                    if (ex.Message == "24117: The LineString input is not valid because it does not have enough distinct points. A LineString must have at least two distinct points." ||
                        ex.Message == "24305: The Polygon input is not valid because the ring does not have enough distinct points. Each ring of a polygon must contain at least three distinct points.")
                    {
                        // TODO: Not sure what to do in these cases...
                        return(null);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }
Esempio n. 2
0
        public void CollectionConversion(string wkt, string wktresult, int srid)
        {
            var geom   = wr.Read(wkt);
            var result = wr.Read(wktresult);

            geom.SRID   = srid;
            result.SRID = srid;

            var t      = new OracleGeometryWriter().Write(geom);
            var regeom = or.Read(t);

            Assert.IsTrue(result.EqualsExact(regeom));
        }
Esempio n. 3
0
        public void CCWTestsOnPolygon()
        {
            var wrongCCW   = "POLYGON((10 10, 10 20, 20 20, 20 10, 10 10),(5 5,6 5,6 6,5 6,5 5))";
            var correctCCW = "POLYGON((10 10, 20 10, 20 20, 10 20, 10 10),(5 5,5 6,6 6,6 5,5 5))";

            var geom1 = wr.Read(wrongCCW);
            var geom2 = wr.Read(correctCCW);

            var t     = new OracleGeometryWriter().Write(geom1);
            var geom3 = or.Read(t);

            Assert.IsTrue(geom2.EqualsExact(geom3));
        }
Esempio n. 4
0
        public void BasicConversion(string wkt, int srid)
        {
            var geom     = wr.Read(wkt);
            var parsed   = geom.AsText();
            var regeom   = wr.Read(parsed);
            var reparsed = regeom.AsText();

            geom.SRID   = srid;
            regeom.SRID = srid;

            Assert.IsTrue(geom.EqualsExact(regeom));
            Assert.AreEqual(parsed, reparsed);

            var t       = new OracleGeometryWriter().Write(regeom);
            var regeom3 = or.Read(t);

            Assert.IsTrue(geom.EqualsExact(regeom3));
        }