/// <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; } } } }
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)); }
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)); }
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)); }