//protected override DataTable BuildSchemaTable() //{ // return base.BuildSchemaTable(true); //} public override IExtents GetExtents() { using (IDbConnection conn = DbUtility.CreateConnection(ConnectionString)) using (IDbCommand cmd = DbUtility.CreateCommand()) { cmd.Connection = conn; cmd.CommandText = string.Format( "SELECT MIN({0}_Envelope_MinX), MIN({0}_Envelope_MinY), MAX({0}_Envelope_MaxX), MAX({0}_Envelope_MaxY) FROM {1}.{2} {3}", GeometryColumn, TableSchema, Table, GetWithClause(DefaultProviderProperties == null ? null : DefaultProviderProperties.ProviderProperties.Collection)); cmd.CommandType = CommandType.Text; conn.Open(); using (IDataReader r = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (r.Read()) { if (r.IsDBNull(0) || r.IsDBNull(1) || r.IsDBNull(2) || r.IsDBNull(3)) { return(GeometryFactory.CreateExtents()); } double xmin = r.GetDouble(0); double ymin = r.GetDouble(1); double xmax = r.GetDouble(2); double ymax = r.GetDouble(3); return(GeometryFactory.CreateExtents2D(xmin, ymin, xmax, ymax)); } } return(GeometryFactory.CreateExtents()); } }
public override IExtents GetExtents() { Double xmin = 0, ymin = 0, xmax = 0, ymax = 0; Boolean isDbNull = true; using (NpgsqlConnection conn = (NpgsqlConnection)DbUtility.CreateConnection(ConnectionString)) { NpgsqlCommand cmd = (NpgsqlCommand)DbUtility.CreateCommand(); conn.Open(); cmd.Connection = conn; cmd.CommandText = String.Format( "SELECT " + "st_xmin(x.ext) AS xmin, st_ymin(x.ext) AS ymin, " + "st_xmax(x.ext) AS xmax, st_ymax(x.ext) AS ymax " + "FROM " + "(SELECT st_extent( \"{2}\" ) as ext FROM {0}.\"{1}\") as x;", TableSchema, Table, GeometryColumn); cmd.CommandType = CommandType.Text; NpgsqlDataReader r = cmd.ExecuteReader(); while (r.Read()) { if (!(r.IsDBNull(0) || r.IsDBNull(1) || r.IsDBNull(2) || r.IsDBNull(3))) { xmin = r.GetDouble(0); ymin = r.GetDouble(1); xmax = r.GetDouble(2); ymax = r.GetDouble(3); isDbNull = false; } } conn.Close(); } return(isDbNull ? GeometryFactory.CreateExtents() : GeometryFactory.CreateExtents2D(xmin, ymin, xmax, ymax)); }
public override IExtents GetExtents() { using (IDbConnection conn = DbUtility.CreateConnection(ConnectionString)) using (IDbCommand cmd = DbUtility.CreateCommand()) { conn.Open(); cmd.Connection = conn; /*cmd.CommandText = String.Format( * "SELECT " + * "st_xmin(x.ext) AS xmin, st_ymin(x.ext) AS ymin, " + * "st_xmax(x.ext) AS xmax, st_ymax(x.ext) AS ymax " + * "FROM "+ * "(SELECT st_box3d( st_estimated_extent('{0}', '{1}', '{2}') ) AS ext ) as x;", * TableSchema, Table, GeometryColumn); * */ cmd.CommandText = String.Format( "SELECT " + "st_xmin(x.ext) AS xmin, st_ymin(x.ext) AS ymin, " + "st_xmax(x.ext) AS xmax, st_ymax(x.ext) AS ymax " + "FROM " + "(SELECT st_extent( \"{2}\" ) as ext FROM {0}.\"{1}\") as x;", TableSchema, Table, GeometryColumn); cmd.CommandType = CommandType.Text; using (NpgsqlDataReader r = (NpgsqlDataReader)cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (r.Read()) { if (r.IsDBNull(0) || r.IsDBNull(1) || r.IsDBNull(2) || r.IsDBNull(3)) { return(GeometryFactory.CreateExtents()); } return(GeometryFactory.CreateExtents2D( r.GetDouble(0), r.GetDouble(1), r.GetDouble(2), r.GetDouble(3))); } } return(GeometryFactory.CreateExtents()); } }
public override IExtents GetExtents() { using (IDbConnection conn = DbUtility.CreateConnection(ConnectionString)) using (IDbCommand cmd = DbUtility.CreateCommand()) { conn.Open(); cmd.Connection = conn; cmd.CommandText = String.Format( "SELECT " + "min({0}.ST_MINX(tbl.\"{3}\")) AS xmin, min({0}.ST_MINY(tbl.\"{3}\")) AS ymin, " + "max({0}.ST_MAXX(tbl.\"{3}\")) AS xmax, max({0}.ST_MAXY(tbl.\"{3}\")) AS ymax " + "FROM \"{1}\".\"{2}\" AS tbl;", DB2SpatialExtenderProviderStatic.DefaultSpatialSchema, TableSchema, Table, GeometryColumn); cmd.CommandType = CommandType.Text; using (DB2DataReader r = (DB2DataReader)cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (r.Read()) { if (r.IsDBNull(0) || r.IsDBNull(1) || r.IsDBNull(2) || r.IsDBNull(3)) { return(GeometryFactory.CreateExtents()); } double xmin = r.GetDouble(0); double ymin = r.GetDouble(1); double xmax = r.GetDouble(2); double ymax = r.GetDouble(3); IExtents ext = GeometryFactory.CreateExtents2D( r.GetDouble(0), r.GetDouble(1), r.GetDouble(2), r.GetDouble(3)); return(ext); } } return(GeometryFactory.CreateExtents()); } }
public override IExtents GetExtents() { bool withNoLock = GetProviderPropertyValue <WithNoLockExpression, bool>( DefaultProviderProperties == null ? null : DefaultProviderProperties.ProviderProperties.Collection, false); SqlServer2008ExtentsMode server2008ExtentsCalculationMode = GetProviderPropertyValue <MsSqlServer2008ExtentsModeExpression, SqlServer2008ExtentsMode>( DefaultProviderProperties == null ? null : DefaultProviderProperties.ProviderProperties.Collection, SqlServer2008ExtentsMode.QueryIndividualFeatures); using (IDbConnection conn = DbUtility.CreateConnection(ConnectionString)) using (IDbCommand cmd = DbUtility.CreateCommand()) { cmd.Connection = conn; switch (server2008ExtentsCalculationMode) { case SqlServer2008ExtentsMode.UseSqlSpatialTools: { cmd.CommandText = string.Format( @" declare @envelope Geometry select @envelope = dbo.GeometryEnvelopeAggregate({0}) from {1}.{2} {3} select @envelope.STPointN(2).STX as MinX, @envelope.STPointN(2).STY as MinY, @envelope.STPointN(4).STX as MaxX, @envelope.STPointN(4).STY as MaxY", GeometryColumn, TableSchema, Table, withNoLock ? "WITH(NOLOCK)" : String.Empty); break; } case SqlServer2008ExtentsMode.UseEnvelopeColumns: { cmd.CommandText = string.Format( "SELECT MIN({0}_Envelope_MinX), MIN({0}_Envelope_MinY), MAX({0}_Envelope_MaxX), MAX({0}_Envelope_MaxY) FROM {1}.{2} {3}", GeometryColumn, TableSchema, Table, withNoLock ? "WITH(NOLOCK)" : String.Empty); break; } default: { cmd.CommandText = string.Format( @" select Min({0}.STEnvelope().STPointN(1).STX)as MinX, Min({0}.STEnvelope().STPointN(1).STY) as MinY, Max({0}.STEnvelope().STPointN(3).STX) as MaxX, Max({0}.STEnvelope().STPointN(3).STY) as MaxY FROM {1}.{2} {3}" , this.GeometryColumn, TableSchema, Table, withNoLock ? "WITH(NOLOCK)" : String.Empty); break; } } cmd.CommandType = CommandType.Text; conn.Open(); using (IDataReader r = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (r.Read()) { if (r.IsDBNull(0) || r.IsDBNull(1) || r.IsDBNull(2) || r.IsDBNull(3)) { return(GeometryFactory.CreateExtents()); } double xmin = r.GetDouble(0); double ymin = r.GetDouble(1); double xmax = r.GetDouble(2); double ymax = r.GetDouble(3); return(GeometryFactory.CreateExtents2D(xmin, ymin, xmax, ymax)); } } } return(GeometryFactory.CreateExtents()); }