Data

26 jan, 2010

Usando dados espaciais no SQL Server 2008 – Parte 01

Publicidade

Além
de nos fornecer diversas opções relacionadas à integração, relatório e replicação de dados, políticas e manutenção de planos, o SQL Server agora também nos dá acesso a dados espaciais, na versão 2008. Os dados espaciais são
implementados por ‘CLR Types’ internos no banco de dados, e têm por objetivo armazenar informações, representando posições e estruturas geométrica no SQL Server. Com
isso em mente, podemos agora desenvolver aplicações que nos concedam
distância, localização e espaço em um certo ponto, localizado em
uma certa circunstância; podendo, além disso, virem até de aplicações
que utilizem GPS.

Por que
e quando devemos utilizar os Dados Espaciais?

Quando temos aplicações que disponibilizam produtos
mundialmente, alguns dos grandes aspectos que podem influenciar ao
utilizar os dados espaciais são:

01. Onde o produto será entregue?

02. Onde o produto se encontra neste momento?

03. Por quais cidades já passou?

Quando
precisamos trabalhar com os dados espaciais, temos que ter em mente
alguns requisitos, por exemplo:

01.  Os tipos de dados de espaciais podem ser usados para além
de coordenadas, consistindo assim em mistura de pontos, linhas, um
único segmento ou multi-segmento.

02.  Habilidade de executar grandes massas de operações de
dados geoespaciais, por exemplo: aplicações que necessitam calcular
a área de um ponto complexo a outro.

03.  Armazenar coordenadas espaciais diretamente no banco
de dados, ou melhor, armazenar informações de uma localização à
outra.

Relembro de há alguns dias estive estudando geometria e o plano geométrico pode ser descrito por duas dimensões criadas no espaço,
dimensões estas que podem ser descritas usando as posições em uma
ordem de números indicando a posição de cada uma, ou melhor ‘o
verdadeiro X e Y’.

A figura acima
representa um plano que possui dois pontos, identificando as
coordenadas X (esquerdo e direito) e Y (acima e abaixo). Neste caso, com esses valores conforme mostra a imagem, podemos
identificar dois pontos no espaço dimensional.

Qual
diferença entre Geometry e Geopraphy?

Atualmente o SQL Server 2008 suporta estes dois tipos de dados, porém eles possuem algumas diferenças entre si. Vale lembrar que,
apesar de ambos fazerem parte de dados espaciais, cada um tem por
objetivo uma determinada forma.

  • Geometry: É
    um tipo de dados .NET common languague runtime (CLR), tem por
    objetivo armazenar dados baseados em pontos nas dimensões(X,Y) e
    opcionalmente nas coordenadas (Z) em um único modelo traçado. Essas
    dimensões podem ser conhecidas através do ‘plano geométrico’,
    representando, assim, os dados em um sistema de coordenadas
    Euclidean (flat). Para mais informações a respeito desse tipo de dados, visite
    geometry
    Data Type Method Reference.

Geometry:
Relaciona-se a um tipo de dados com mapeamento em um plano com duas
dimensões (sistema de coordenadas x e y)

  • Geopraphy: Pode
    ser visto também como outro tipo de dados .NET common language
    runtime (CLR), os dados geográficos têm por objetivo armazenar
    linhas, pontos, círculos, polígonos e uma coleção de cada um
    desses, usando um modelo oposto ao ‘round earth’, o
    ‘flat earth’; utilizando as coordenadas X e Y, o tipo de dados
    geometry utiliza as combinações de latitude/longitude (GPS)
    representando um único ponto. Para mais informações sobre esse tipo de dados, visite geometry
    Data Type Method Reference.

Geography:
Relaciona-se a um tipo de dados que armazenam informações em
relação à superfície terrestre.

Obs: Vale lembrar
que os dois tipos de dados armazenam linhas,
pontos, polígonos, círculos. A diferença é que o tipo de dados
geometry
utiliza o plano 2d e o tipo de dados geopraphy
utiliza o plano 3d.

Os
dados geometry e geography são abstraídos por tipos específicos,
basicamente eles possuem os mesmos modos, a diferença entre eles é
apenas se a criação especificada é direcionada para um plano ou
espaço.

  • Polygon
  • MultiPolygon
  • LineString
  • MultiLineString
  • Point
  • MultiPoint
  • GeometryCollection

Cada
tipo corresponde a uma coleção. Podemos armazenar um único ponto
utilizando Point; se por acaso for útil armazenar dois pontos, podemos utilizar
MultiPoint, que nos provê uma coleção de agregação dos tipos específicos. O SQL Server possui também uma hierarquia que pode ser vista na imagem abaixo:

  • Polygon: Pode
    ser descrito como um modelo fechado, por exemplo: bola. O Polygon
    pode consistir em uma bola onde pode conter zero ou mais lados. Onde o
    Polygon foi construído nunca terá intersecção.

  • MultiPolygon: Esse
    tipo representa uma coleção de polígonos válidos, neste caso se
    um polígono dentro da coleção estiver inválido,
    a coleção estará completamente inválida. Onde o MultiPolygon foi construído nunca terá intersecção.
  • LineString:
    LineString é um objeto de uma dimensão que consiste em
    dois ou mais pontos identificados com segmentos em linhas. As
    linhas não possuem dimensões correta, no entanto pode ser simples,
    complexa e fechada.

  • MultiLineString:
    Este tipo representa a coleção dos objetos LineString, similar
    ao objeto MultiPoint, no entanto pode-se também fornecer expressões
    WKT sendo identificado por todos LineStrings na coleção.
    MultiLineString podem ser simples, intersecção ou fechado.
  • Point: Representa
    uma única dimensão, sendo referenciado e identificado pelo par.
    Pode-se utilizar o Point em uma posição para identificar uma
    localização na superfície.
  • MultiPoint:
    Representa a coleção de zero ou mais pontos, geralmente é
    utilizado para identificar a localização na superfície.
  • GeometryCollection:
    Os tipos mostrados acima são específicos para cada um. O
    tipo GeometryCollection pode armazenar vários outros tipos de objeto
    em apenas um só. Por exemplo, podemos armazenar tanto LineString
    como Point em um único GeometryCollection.

Na próxima semana continuaremos o assunto, falando dos diferentes formatos que podem
ser utilizados para representar os dados espaciais. Até lá.