¿Qué es el tipo de almacenamiento ST_Geometry?

El tipo de datos ST_Geometry es un tipo de datos definido por usuario (UDT) que le permite definir columnas que almacenan 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. Tenga en cuenta que ST_Curve, ST_Surface, ST_MultiCurve y ST_MultiSurface están definidos como tipos de los que no se pueden crear instancias. Para estos tipos no se definen constructores.

ST_Geometry
La superclase ST_Geometry y sus subclases

Subclases

Las subclases de ST_Geometry están divididas en dos categorías: las subclases de geometría base y las subclases de conjunto homogéneo. 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. Cada subclase posee funciones particulares que pueden devolver información sobre las subclases. En la siguiente tabla se enumera un resumen de las subclases, la descripción y funciones de ejemplo que se pueden utilizar para obtener información sobre las mismas.

Subtipo

Descripción

Funciones que se utilizan con el subtipo

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
  • Se utiliza para definir entidades como pozos petroleros, hitos y elevaciones

  • ST_X devuelve el valor de la coordenada x de un punto como número de doble precisión
  • ST_Y devuelve el valor de la coordenada y de un punto como número de doble precisión
  • ST_Z devuelve el valor de la coordenada z de un punto como número de doble precisión
  • ST_M devuelve el valor de la coordenada m de un punto como número de doble precisión

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_LineStrings a menudo se utilizan para definir entidades lineales como carreteras, ríos y líneas de alimentación.

  • ST_StartPoint devuelve el primer punto de una cadena de texto
  • ST_EndPoint devuelve el último punto de una cadena de texto
  • ST_PointN toma una cadena de texto y un índice a un enésimo punto y devuelve ese punto
  • ST_Length devuelve una longitud de cadena de texto como número de doble precisión
  • ST_NumPoints devuelve la cantidad de puntos en una secuencia de cadena de texto como entero
  • ST_IsRing devuelve 1 (TRUE) si una cadena de texto es un anillo, ó 0 (FALSE) si no lo es
  • ST_IsClosed devuelve 1 (TRUE) si una cadena de texto está cerrada, ó 0 (FALSE) si no lo está

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.
  • Define parcelas de tierra, masas de agua y otras entidades con extensión espacial

  • ST_Area devuelve el área de un polígono como número de doble precisión
  • ST_ExteriorRing devuelve el anillo exterior del polígono como cadena de texto
  • ST_NumInteriorRing devuelve la cantidad de anillos interiores que contiene un polígono
  • ST_InteriorRingN toma un polígono y un índice y devuelve el anillo enésimo interior como una cadena de texto
  • ST_Centroid devuelve un punto que es el centro del contorno del polígono
  • ST_PointOnSurface devuelve un punto que debe estar en la superficie del polígono

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.
  • Define cosas como patrones de emisiones aéreas e incidentes de brotes de una enfermedad

ST_MultiLineString

  • Conjunto de ST_LineStrings
  • El tipo ST_MultiLineStrings tiene longitud.
  • Los tipos ST_MultiLineStrings son simples si sólo 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.
  • Se utiliza para definir entidades como arroyos o redes de carreteras

  • ST_Length devuelve la longitud acumulativa de todos los elementos de ST_LineString de una cadena de texto multilínea como número de doble precisión
  • ST_IsClosed devuelve 1 (TRUE) si la cadena de texto multilínea está cerrada, ó 0 (FALSE) si no lo está

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 sólo se puede intersecar en un punto tangente.
  • Define entidades como un estrato forestal o una parcela de tierra no contigua como por ejemplo, un archipiélago del Pacífico.

  • ST_Area devuelve el ST_Area acumulativo de los elementos de un polígono de un multipolígono como número de doble precisión
  • ST_Centroid devuelve un punto que es el centro del contorno de un multipolígono
  • ST_PointOnSurface devuelve un punto que debe ser normal para la superficie de uno de los elementos de un polígono de un multipolígono

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 de ST_Geometry aceptan cualquiera de los tipos de datos de la 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.


7/10/2012