sexta-feira, 10 de junho de 2011

Quais são os tipos de armazenamento do ST_Geometry?

O tipo de dados ST_Geometry são um tipo de dados definidos pelo usuário (user-defined data type - UDT) que permite a você definir colunas que armazenam dados espaciais.
O ST_Geometry por si só é uma superclasse abstrata e não-instanciada. Entretanto, suas subclasses podem ser instanciadas. Um tipo de dados instanciado é um que pode ser definido como uma coluna de uma tabela e ter valores de seus tipos inseridos dentro dele.
Embora você possa definir uma coluna com o tipo ST_Geometry, você não pode inserir valores dentro da coluna ST_Geometry devido ao fato dela não ser instanciada. Ao invés disso, você insere valores na subclasse.
O seguinte gráfico demostra a hierarquia do tipo de dados do ST_Geometry e suas subclasses. Veja que o ST_Curve, ST_Surface, ST_MultiCurve e o ST_MultiSurface são definidos para serem tipos não-instanciados. Nenhum construtor foi definido para esses tipos.


A superclasse ST_Geometry e suas subclasses
Subclasses
As subclasses dos ST_Geometry's estão divididas dentro de duas categorias: a subclasse de geometria base e a subclasse de coleções homogêneas. As geometrias base incluem o ST_Point, ST_LineString e ST_Polygon, enquanto as coleções homogêneas incluem o ST_MultiPoint, ST_MultiLineString e o ST_MultiPolygon. Como o próprio nome indica, as coleções homogêneas são coleções de geometrias base. Além de compartilhar as propriedades das geometrias base, as coleções homogêneas possuem suas próprias propriedades.
Cada subclasse armazena os tipos de geometria implícita ao seu nome; por exemplo, ST_MultiPoint armazena multipontos. Cada subclasse possui funções particulares que podem retornar informações sobre a subclasse. Um resumo das subclasses, suas descrições e exemplos de funções que podem ser utilizadas para obter informações sobre elas estão listadas na tabela abaixo:


Subtipo
Descrição
Funções usadas com o subtipo
ST_Point
·         Uma geometria de zero-dimensão que ocupa uma posição única nas coordenadas do espaço
·         Possui um único valor de coordenadas x,y, é sempre único e possui contorno NULO.
·         Usado para definir feições como poços de petróleo, marcações e elevações.
·         ST_X—Retorna o valor de coordenada x de um ponto como um número de precisão double.
·         ST_Y—Retorna o valor de coordenada y de um ponto como um número de precisão double.
·         ST_Z—Retorna o valor de coordenada z de um ponto como um número de precisão double.
·         ST_M—Retorna o valor de coordenada m de um ponto como um número de precisão double.
ST_LineString
·         Um objeto de uma-dimensão armazenado como uma sequência de pontos definindo um caminho linear interpolado.
·         ST_LineStrings possui um comprimento (length).
·         O ST_LineString é único se ele não intersecta com seu próprio interior.
·         Os endpoints (o contorno) de um ST_LineString fechado ocupam o mesmo ponto no espaço.
·         Um ST_LineString é um anel se estiver fechado e for único.
·         Os endpoints normalmente formam o contorno de um ST_LineString a menos que o ST_LineString esteja fechado, neste caso o contorno será Nulo.  
·         O interior de uma ST_LineString é o caminho que se encontra conectado entre os endpoints, a menos que ele esteja fechado, neste caso o interior será contínuo.
·         ST_LineStrings são na maioria das vezes usados pra definir feições lineares como rodovias, rios e linhas de transmissão de energia.
·         ST_StartPoint—Retorna o primeiro ponto de uma linestring.
·         ST_EndPoint—Retorna o último ponto de uma linestring.
·         ST_PointN —Pega uma linestring e um índice e retorna o número de pontos e retorna estes pontos.
·         ST_Length—Retorna o comprimento das linestrings como um número de precisão double.
·         ST_NumPoints—Retorna o número de pontos numa sequência de linestrings como um inteiro.
·         ST_IsRing—Retorna 1 (TRUE) se uma linestring é um anel (ring) ou 0 (FALSE) se ela não for.
·         ST_IsClosed—Retorna 1 (TRUE) se uma linestring está fechada ou  0 (FALSE) se ela não está.
ST_Polygon
·         Uma superfície bi-dimensional armazenada como uma sequência de pontos definindo seu limite exterior.
·         O ST_Polygon possui área e é sempre único.
·         Os contornos exteriores e interiores definem os limites de um ST_Polygon e o espaço fechado entre os contornos define o interior do ST_Polygon.
·         O contorno de um ST_Polygon pode intersectar um ponto tangente mas nunca cruzá-lo.
·         Define parcelas de terreno, contornos d’água e outras feições com extensão espacial.
·         ST_Area—Retorna a área de um polígono como um número de precisão double.
·         ST_ExteriorRing—Retorna o polígono do contorno exterior como uma linestring
·         ST_NumInteriorRing—Retorna o número de contornos interiores que um polígono contém
·         ST_InteriorRingN— Pega um polígono e um índice e retorna o número de contornos como uma linestring.
·         ST_Centroid—Retorna um ponto que está no centro do envelope de um polígono.
·         ST_PointOnSurface—Retorna um ponto que está na superfície de um polígono.
ST_MultiPoint
·         Uma coleção de ST_Points
·         Têm uma dimensão 0.
·         Um ST_MultiPoint é único se nenhum de seus elementos ocupar a mesma coordenada no espaço.
·         O limite de um ST_MultiPoint é Nulo.
·         Define coisas como padrões de frequência aéreas e incidentes de um surto de doença
ST_MultiLineString
·         Uma coleção de ST_LineStrings
·         ST_MultiLineStrings possuem comprimento (length).
·         ST_MultiLineStrings são únicas se elas somente interseccionam os endpoints dos elementos de uma ST_LineString.
·         ST_MultiLineStrings não são únicas se o interior dos elementos de ST_LineString se intersectam.
·         O contorno de um ST_MultiLineString são os endpoints não interseccionados dos elementos de ST_LineString.
·         Um ST_MultiLineString está fechado se todos os seus elementos de ST_LineString estiverem fechados.
·         O contorno de um ST_MultiLineString é Nulo se todos os endpoints de todos os seus elementos estão interseccionados.
·         Utilizado para definir entidades como redes de drenagens e de rodovias.
·         ST_Length—Retorna o comprimento acumulado de todos os elementos ST_LineString de uma multilinestring como um número de precisão double.
·         ST_IsClosed—Retorna 1 (TRUE) se uma multilinestring está fechada e 0 (FALSE) se estiver aberta.
ST_MultiPolygon
·         Uma coleção de polígonos
·         ST_MultiPolygons possuem área.
·         O contorno de um ST_MultiPolygon será o comprimento acumulado de seus elementos exteriores e contornos interiores.
·         O interior de um ST_MultiPolygon é definido conforme a soma dos interiores de seus elementos ST_Polygons
·         O contorno dos elementos de um ST_MultiPolygon podem somente interseccionar um ponto tangente.
·         Define feições como uma porção de floresta ou terras não contíguas como a cadeia de ilhas do Pacífico.
·         ST_Area—Retorna a somatória da área (ST_Area) dos elementos de polígono de um multipolígono como um número de precisão double.
·         ST_Centroid—Retorna um ponto que é o centro do envelope de um multipolígono.
·         ST_PointOnSurface—Retorna um ponto que está  na superfície de um dos elementos de polígono de um multipolígono.

Subtipos do ST_Geometry

Note que cada subclasse herda as propriedades da superclasse do ST_Geometry mas também possui suas próprias propriedades. Funções que operam em tipos de dados no ST_Geometry aceitam quaisquer das subclasses de tipos de dados. Entretanto, algumas funções foram definidas com base no nível da subclasse e somente aceitam determinadas subclasses. Por exemplo, a função ST_GeometryN somente aceita valores dos subtipos ST_MultiLinestring, ST_MultiPoint ou ST_MultiPolygon como entrada.
Para explorar a subclasse de um ST_Geometry, você pode usar a função ST_GeometryType. A função ST_GeometryType pega um ST_Geometry e retorna uma subclasse instanciada na forma de um caractere string. Para saber como vários elementos de geometrias base estão contidos numa coleção homogênea, você pode utilizar a função ST_NumGeometries, na qual pega uma coleção homogênea e retorna o número de elementos de geometria base que ela contém.

fonte: ArcGIS Resource Center

Nenhum comentário:

Postar um comentário