//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());
                }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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());
        }