¿Qué es el tipo de almacenamiento ST_Geometry?

El tipo de dato ST_Geometry implementa la especificación SQL 3 de los tipos de datos definidos por el usuario (UDT), lo que permite crear columnas capaces de almacenar datos espaciales como la ubicación de un hito, una calle o una parcela de tierra. Proporciona acceso de lenguaje estructurado de consultas (SQL) compatible con la Organización Internacional para la Estandarización y con Open Geospatial Consortium, Inc. (OGC) a la geodatabase y a la base de datos. Este almacenamiento amplía las capacidades de la base de datos proporcionando almacenamiento para objetos (puntos, líneas y polígonos) que representan entidades geográficas. Se diseñó para utilizar de un modo eficiente los recursos de las bases de datos, para ser compatible con funciones de base de datos como la replicación y la partición, y para brindar un acceso rápido a los datos espaciales.

ST_Geometry en sí misma es una superclase abstracta sin instancias creadas. Sin embargo, se pueden crear. La creación de una instancia de tipo de datos se puede definir como una columna de tabla y posee valores de su tipo insertados en ella.

Aunque puede definir una columna como tipo ST_Geometry, no puede insertar valores ST_Geometry en la columna ya que no se pueden crear instancias. En su lugar, debe insertar los valores de las subclases.

El siguiente gráfico muestra la jerarquía del tipo de datos ST_Geometry y las subclases.

ST_Geometry
La superclase ST_Geometry y sus subclases

Subclases

Las subclases de ST_Geometry se dividen en dos categorías: las subclases de geometría base y las subclases de colecciones homogéneas. Las geometrías base incluyen ST_Point, ST_LineString y ST_Polygon, mientras que los conjuntos homogéneos incluyen ST_MultiPoint, ST_MultiLineString y ST_MultiPolygon. Como lo indica su nombre, los conjuntos homogéneos son conjuntos de geometrías base. Además, para compartir las propiedades de geometría base, los conjuntos homogéneos poseen algunas de sus propias propiedades.

Cada subclase almacena el tipo de geometría que implica su nombre; por ejemplo, ST_MultiPoint almacena multipuntos. Una lista de las subclases y sus descripciones se encuentra en la siguiente tabla:

Subtipo

Descripción

ST_Point

  • Geometría de dimensión cero que ocupa una ubicación simple en espacio de coordenadas
  • Posee un valor de coordenada x,y, siempre es simple y tiene un límite NULL

ST_LineString

  • Objeto de una sola dimensión almacenado como una secuencia de puntos que definen una ruta interpolada linear
  • El tipo ST_LineStrings tiene longitud.
  • El tipo ST_LineString es simple si no se interseca con el interior.
  • Los extremos (el límite) de un tipo ST_LineString cerrado ocupan el mismo punto en el espacio.
  • Un tipo ST_LineString es un anillo si es cerrado y simple.
  • Los extremos normalmente forman el límite de un tipo ST_LineString a menos que éste sea cerrado, en cuyo caso el límite es NULL.
  • El interior de un tipo ST_LineString es la ruta conectada que está comprendida entre los extremos, a menos que esté cerrada; en cuyo caso el interior es continuo.

ST_Polygon

  • Superficie de dos dimensiones almacenada como una secuencia de puntos que definen el anillo de delimitación exterior y cero o más anillos interiores
  • El tipo ST_Polygon posee área y siempre es simple.
  • La parte exterior y los anillos interiores definen el límite de un tipo ST_Polygon y el espacio cerrado entre los anillos define el interior de ST_Polygon.
  • Los anillos de un tipo ST_Polygon pueden intersecarse en un punto tangente pero nunca cruzarse.

ST_MultiPoint

  • Conjunto de ST_Points
  • Tiene una dimensión de 0
  • El tipo ST_MultiPoint es simple si ninguno de sus elementos ocupa el mismo espacio de coordenadas.
  • El límite de un ST_MultiPoint es NULL.

ST_MultiLineString

  • Conjunto de ST_LineStrings
  • El tipo ST_MultiLineStrings tiene longitud.
  • Los tipos ST_MultiLineStrings son simples si solo se intersecan en los extremos de los elementos de ST_LineString.
  • Los tipos ST_MultiLineStrings no son simples si los interiores de los elementos de ST_LineString se intersecan.
  • El límite de un ST_MultiLineString son los extremos no intersecados de los elementos de ST_LineString.
  • El tipo ST_MultiLineString es cerrado si todos los elementos de ST_LineString son cerrados.
  • El límite de un ST_MultiLineString es NULL si todos los extremos de todos los elementos se intersecan.

ST_MultiPolygon

  • Conjunto de polígonos
  • El tipo ST_MultiPolygons tiene área
  • El límite de un ST_MultiPolygon es la longitud acumulativa del anillo exterior e interior de sus elementos.
  • El interior de un tipo ST_MultiPolygon se define como los interiores acumulados de su elemento ST_Polygons.
  • El límite de los elementos de un tipo ST_MultiPolygon solo se puede intersecar en un punto tangente.

Subtipos ST_Geometry

Observe que cada subclase hereda las propiedades de la superclase ST_Geometry pero también posee sus propias propiedades. Las funciones que operan en el tipo de datos ST_Geometry aceptan cualquiera de los tipos de entidad de subclase. Sin embargo, algunas funciones se han definido en el nivel de subclase y solo aceptan ciertas subclases. Por ejemplo, la función ST_GeometryN solo toma los valores del subtipo ST_MultiLinestring, ST_MultiPoint o ST_MultiPolygon como entrada.

Para descubrir la subclase de un tipo ST_Geometry, puede utilizar la función ST_GeometryType. La función ST_GeometryType toma una ST_Geometry y devuelve la subclase con instancia creada en forma de cadena de caracteres. Para obtener información acerca de cuántos elementos de geometría base existen en un conjunto homogéneo, puede utilizar la función ST_NumGeometries, que toma un conjunto homogéneo y devuelve la cantidad de elementos de geometría base que contiene.

5/9/2014