SpatialRegionDatabaseRepresentation¶
- 
class lsst.daf.butler.SpatialRegionDatabaseRepresentation(column: sqlalchemy.sql.elements.ColumnElement, name: str)¶
- Bases: - lsst.daf.butler.TopologicalExtentDatabaseRepresentation- Class reflecting how spatial regions are represented inside the DB. - An instance of this class encapsulates how spatial regions on the sky are represented in a database engine. - Instances should be constructed via - fromSelectable, not by calling the constructor directly.- Parameters: - column : sqlalchemy.sql.ColumnElement
- Column containing the opaque byte-string, with automatic conversion to - lsst.sphgeom.Regionimplemented via SQLAlchemy hooks.
- name : str
- Name of the column. 
 - Notes - Unlike - TimespanDatabaseRepresentation, this is a concrete class, because we currently do not support any database-native spatial regions, and instead rely on precomputed overlaps and opaque (to the database) byte string columns. As a result, it also does not support any in-database topological predicates.- If we add support for database-native regions in the future, this class may become an ABC with multiple concrete implementations. - Attributes Summary - NAME- SPACE- name- Return base logical name for the topological extent ( - str).- Methods Summary - extract(mapping, Any], name, None] = None)- Extract a region from a dictionary. - flatten(name, None])- Return the actual column(s) that comprise this logical column. - fromSelectable(selectable, name, None] = None)- Construct representation of a column in the table or subquery. - getFieldNames(name, None] = None)- Return the actual field names used by this representation. - hasExclusionConstraint()- Return - Trueif this representation supports exclusion constraints.- isNull()- Return expression that tests where region is - NULL.- makeFieldSpecs(nullable, name, None] = None, …)- Make objects that reflect the fields that must be added to table. - update(extent, None], name, None] = None, …)- Add a region to a dictionary. - Attributes Documentation - 
NAME= 'region'¶
 - 
SPACE= 1¶
 - 
name¶
- Return base logical name for the topological extent ( - str).- If the representation uses only one actual column, this should be the full name of the column. In other cases it is an unspecified subset of the column names. 
 - Methods Documentation - 
classmethod extract(mapping: Mapping[str, Any], name: Optional[str, None] = None) → Optional[lsst.sphgeom._sphgeom.Region, None]¶
- Extract a region from a dictionary. - This region represents a database row in this representation. - Parameters: - mapping : Mapping[str,Any]
- A dictionary representing a database row containing a - Timespanin this representation. Should have key(s) equal to the return value of- getFieldNames.
- name : str, optional
- Name for the logical column; a part of the name for multi-column representations. Defaults to - cls.NAME.
 - Returns: - region
- Python representation of the region. 
 
- mapping : 
 - 
flatten(name: Optional[str, None]) → Iterator[sqlalchemy.sql.elements.ColumnElement]¶
- Return the actual column(s) that comprise this logical column. - Parameters: - name : str, optional
- If provided, a name for the logical column that should be used to label the columns. If not provided, the columns’ native names will be used. 
 - Returns: - columns : Iterator[sqlalchemy.sql.ColumnElement]
- The true column or columns that back this object. 
 
- name : 
 - 
classmethod fromSelectable(selectable: sqlalchemy.sql.selectable.FromClause, name: Optional[str, None] = None) → lsst.daf.butler.core._topology.SpatialRegionDatabaseRepresentation¶
- Construct representation of a column in the table or subquery. - Constructs an instance that represents a logical column (which may actually be backed by multiple columns) in the given table or subquery. - Parameters: - selectable : sqlalchemy.sql.FromClause
- SQLAlchemy object representing a table or subquery. 
- name : str, optional
- Name for the logical column; a part of the name for multi-column representations. Defaults to - cls.NAME.
 - Returns: - representation : TopologicalExtentDatabaseRepresentation
- Object representing a logical column. 
 
- selectable : 
 - 
classmethod getFieldNames(name: Optional[str, None] = None) → Tuple[str, ...]¶
- Return the actual field names used by this representation. - Parameters: - name : str, optional
- Name for the logical column; a part of the name for multi-column representations. Defaults to - cls.NAME.
 - Returns: - names : tuple[str]
- Field name(s). Guaranteed to be the same as the names of the field specifications returned by - makeFieldSpecs.
 
- name : 
 - 
classmethod hasExclusionConstraint() → bool¶
- Return - Trueif this representation supports exclusion constraints.- Returns: 
 - 
isNull() → sqlalchemy.sql.elements.ColumnElement¶
- Return expression that tests where region is - NULL.- Returns a SQLAlchemy expression that tests whether this region is logically - NULL.- Returns: - isnull : sqlalchemy.sql.ColumnElement
- A boolean SQLAlchemy expression object. 
 
- isnull : 
 - 
classmethod makeFieldSpecs(nullable: bool, name: Optional[str, None] = None, **kwargs) → Tuple[lsst.daf.butler.core.ddl.FieldSpec, ...]¶
- Make objects that reflect the fields that must be added to table. - Makes one or more - ddl.FieldSpecobjects that reflect the fields that must be added to a table for this representation.- Parameters: - nullable : bool
- If - True, the region is permitted to be logically- NULL(mapped to- Nonein Python), though the correspoding value(s) in the database are implementation-defined. Nullable region fields default to NULL, while others default to (-∞, ∞).
- name : str, optional
- Name for the logical column; a part of the name for multi-column representations. Defaults to - cls.NAME.
- **kwargs
- Keyword arguments are forwarded to the - ddl.FieldSpecconstructor for all fields; implementations only provide the- name,- dtype, and- defaultarguments themselves.
 - Returns: - specs : tuple[ddl.FieldSpec]
- Field specification objects; length of the tuple is subclass-dependent, but is guaranteed to match the length of the return values of - getFieldNamesand- update.
 
- nullable : 
 - 
classmethod update(extent: Optional[lsst.sphgeom._sphgeom.Region, None], name: Optional[str, None] = None, result: Optional[Dict[str, Any], None] = None) → Dict[str, Any]¶
- Add a region to a dictionary. - This region represents a database row in this representation. - Parameters: - extent
- An instance of the region type this class provides a database representation for, or - Nonefor- NULL.
- name : str, optional
- Name for the logical column; a part of the name for multi-column representations. Defaults to - cls.NAME.
- result : dict[str,Any], optional
- A dictionary representing a database row that fields should be added to, or - Noneto create and return a new one.
 - Returns: 
 
- column :