25
SQL Server 2008 oferece vários aprimoramentos, incluindo novos tipos de dados, novas instruções T-SQL e alterações incrementais em suporte Microsoft .NET Framework, suporte a XML e o recurso de agente de serviços. De longe, a alteração de maior e mais interessante para desenvolvedores é o suporte do SQL Server 2008 para dados espaciais — uma poderosa adição à caixa de ferramentas do programador do SQL Server. Nesta coluna, vou apresente uma visão geral breve dos dados espaciais e ilustrar algumas utilizações interessantes. Dados espaciais são definidos como dados que são representados por imagens 2D ou 3D. SQL Server 2008 suporta imagens 2D e 3D pode ser adicionado em uma versão futura. Dados espaciais podem ser subdivididos em dados geométricos (dados que podem usar cálculos que envolvam geometria Euclidian) e dados geográficos (dados que identifica locais geográficos e limites na Terra). Usando o tipo de dados Geografia Vamos começar com um aplicativo simples de dados espaciais, que pode ser útil para processamento sistemas (OLTP) que envolvem clientes de mais tradicional transações online. Dados espaciais é útil no caso porque cada cliente tem um endereço. Você geralmente pensar endereços como rua, cidade, estado, país e CEP, mas um endereço é um ponto na Terra e também pode ser representado como um par de latitude/longitude. Tecnicamente, um endereço pode compõem uma parcela de Terra que pode ser representada como um polígono, mas vamos

Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

Embed Size (px)

Citation preview

Page 1: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

SQL Server 2008 oferece vários aprimoramentos, incluindo novos tipos de dados, novas

instruções T-SQL e alterações incrementais em suporte Microsoft .NET Framework, suporte

a XML e o recurso de agente de serviços. De longe, a alteração de maior e mais interessante

para desenvolvedores é o suporte do SQL Server 2008 para dados espaciais — uma

poderosa adição à caixa de ferramentas do programador do SQL Server. Nesta coluna, vou

apresente uma visão geral breve dos dados espaciais e ilustrar algumas utilizações

interessantes.

Dados espaciais são definidos como dados que são representados por imagens 2D ou 3D.

SQL Server 2008 suporta imagens 2D e 3D pode ser adicionado em uma versão futura.

Dados espaciais podem ser subdivididos em dados geométricos (dados que podem usar

cálculos que envolvam geometria Euclidian) e dados geográficos (dados que identifica locais

geográficos e limites na Terra).

Usando o tipo de dados Geografia Vamos começar com um aplicativo simples de dados espaciais, que pode ser útil para

processamento sistemas (OLTP) que envolvem clientes de mais tradicional transações

online. Dados espaciais é útil no caso porque cada cliente tem um endereço. Você

geralmente pensar endereços como rua, cidade, estado, país e CEP, mas um endereço é um

ponto na Terra e também pode ser representado como um par de latitude/longitude.

Tecnicamente, um endereço pode compõem uma parcela de Terra que pode ser

representada como um polígono, mas vamos continuar em um único ponto nesse caso,

apenas para manter a simplicidade. Saber onde um cliente reside como latitude/longitude

permite que você responder perguntas como:

Quais são as ramificações de bancário mais próximos três para um cliente específico?

Que vendedor fica mais próximo ao cliente?

Como muitos clientes da sua empresa tem em um raio de 10 metros de, por exemplo,

Seattle, Washington?

Como muitos clientes live mais de 2 quilômetros de seu local de filial mais próximo?

Page 2: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

O processo de converter um endereço em um par de latitude/longitude é chamado

endereço geocodificação. Inúmeros serviços on-line (incluindo MapPoint, Virtual Earth e

Google Terra) fornecendo geocodificação como um serviço. Para converter um endereço

nos EUA para um ponto, você pode encapsular uma chamada para a geocodificação

MapPoint Web Services em uma função do SQLCLR.

Isso é mostrado no exemplo de código . Mas onde você deve armazenar a latitude/longitude

dentro de seu banco de dados do SQL Server?

SQL Server 2008 vem com os dois tipos de dados necessários para armazenar dados

espaciais: geometria e Geografia. Os dois tipos de dados são implementados usando a

arquitetura .NET para tipos definidos pelo usuário, que significa que eles podem ter

propriedades e métodos. Vamos continuar com o tipo de dados de Geografia agora porque

isso mapeia mais de perto para o problema.

Você pode definir uma instância de um tipo de Geografia com uma simples SQL declaração

de variável (DECLARE @g Geografia) ou como uma coluna em uma tabela, e você pode

inicializar este tipo de dados em uma variedade de formas. Para um tipo de Geografia

representando uma instância de um ponto, a maneira mais simples é usar o método

estático STPointFromText do tipo Geografia. O método STPointFromText requer não apenas

uma representação textual de um ponto de formato de texto conhecidos do Consortium

Geospatial abrir (WKT) — ou seja, POINT(x,y) — mas também um identificador de referência

espacial (SRID). O SRID identifica o sistema de referência espacial usado para um

mapeamento round-Terra ou Terra simples e, por enquanto, é suficiente saber que o

geocoder MapPoint Web service usa coordenadas GPS que correspondem às SRID 4326. Isso

representa o 1984 de sistema Geodetic World (WGS 84). Para localizar todos os os SRIDs

que ofereça suporte ao SQL Server 2008, basta consultar o sys.spatial_reference_systems

de tabela de metadados.

Portanto, seu código para inicializar a Geografia do endereço poderia esta aparência:

Page 3: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

DECLARE @addr nvarchar(256) = 'Some sample address, City, State,

Zip';

DECLARE @addr_as_xy nvarchar(30);

DECLARE @g geography;

SET @addr_as_xy = dbo.Geocoder(@addr);

SET @g = geography::STPointFromText(@addr_as_xy, 4326);

Observe que como geografia é implementada como um tipo de dados baseados no .NET, há

alguns pontos interessantes mencionar sobre o código. Em primeiro lugar, STPointFromText

é um método estático, para que ela deve ser chamada com a sintaxe datatype::method.

Além disso, os nomes de método de tipos de dados baseados no .NET são distinção entre

maiúsculas e minúsculas assim, STPointFromText deve usar maiúsculas e minúsculas exata.

Há uma coisa mais importante a destacar: a função geocoder deve ser codificada para

retornar o local como "Gráficos" em vez de latitude/longitude. Abrir Consortium Geospatial

define seu WKB e binário conhecido (WKB) formata como usar x, y pares de coordenadas.

Portanto, o que está sendo passado para STPointFromText deve ser

POINT(Longitude/Latitude), não POINT(Latitude/Longitude). Se você usaria

latitude/longitude em vez disso, SQL Server será constrói instâncias de Geografia usando

linguagem geográfico de marcação (GML), um vocabulário XML que usa latitude/longitude.

Ou, se você tiver um ponto, há um método estático especial no tipo de dados de geometria

que usa três parâmetros: SRID, latitude e longitude.

Agora que você tiver geocoded suas informações de cliente, você pode também ir em frente

e geocode seu banco ramificar locais (ou outras informações de escritório filial, informações

de depósito ou nada relacionados ao local) e seus locais de vendedor, assim. Suponha que

você terminar com tabelas chamadas de cliente, vendedor e ramificação. Cada um deles

deve ter uma coluna (vamos chamá-lo geog para manter a simplicidade) de Geografia do

tipo que indica o local.

Page 4: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

Você pode usar essas informações para responder às perguntas mencionadas

anteriormente. Para isso, você precisará usar métodos no tipo de dados Geografia. O

método para calcular a distância entre dois objetos de geografia não surpreendentemente,

é, chamado STDistance. Os métodos que pode ser usados para responder à pergunta

terceira (quantos clientes existem dentro de um raio de 10 metros de Seattle) seria STBuffer

e STIntersects. SQL Server também tem um método que é usado para calcular um buffer

mais aproximado chamado BufferWithTolerance (ele é um pouco mais rápido do que

calcular um buffer exato).

Para responder a primeira pergunta, você usaria uma consulta semelhante a esta:

SELECT TOP(3) b.name,

c.geog.STDistance(b.geog)/1000 [Distance in km]

FROM customer c, branch b

WHERE c.customerid = '12345' -- this query looks at customer 12345

ORDER BY c.geog.STDistance(b.geog)

A consulta para calcular o vendedor mais próximo deve ser feita em aproximadamente da

mesma maneira.

Quanto as pessoas que moram dentro de um raio de 10 metros de Seattle? Para esta

consulta, você deve colocar um buffer ao redor dos limites de cidade de Seattle

(representado por um polígono dos limites de cidade ou um ponto que você designa como

luzes da cidade de Seattle) e selecione todos os pontos (clientes) que fazem a interseção

desse buffer. Representados no código, isso é:

-- or declare POINT for "downtown Seattle"

-- 1609.344 meters per mile

DECLARE @Seattle geography = 'POLYGON(....)'; SELECT c.customerid

FROM

Page 5: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

customer c WHERE c.geog.STIntersects(@Seattle.STBuffer(10 *

1609.344));

Esses exemplos ilustram pontos mais interessantes sobre como você interage com

instâncias do tipo Geografia. Quando você usa STBuffer, por exemplo, que é um método de

instância no tipo de dados de Geografia, você usar a sintaxe instance.method em vez da

sintaxe de type::method que você poderia usar para métodos estáticos como

STPointFromText. Além disso, observe que, quando você estiver calculando a distância entre

dois localidades ou determinar se uma instância de Geografia cruza outra, você usar a

sintaxe Instance1.method(Instance2).

Para responder a pergunta sobre o número de clientes que moram mais de dois quilômetros

partir da ramificação banco mais próximo, você deve poder agregar as localidades de todas

as ramificações de banco, com um buffer de dois quilômetros ao redor de cada uma delas e

então olhe para os clientes que não fazem a interseção com esse conjunto de localidades. O

tipo de dados de geografia tem um método chamado STUnion, mas ele é especificado como

um método em uma instância de Geografia que retorna a união entre essa instância e outra

instância.

Isso não é a agregação de baseada em conjunto que tinha em mente. Felizmente, o SQL

Server 2005 introduziu agregados definidos pelo usuário que podem ser gravados no código

do .NET, e você pode usar um aqui para obter uma união agregada de um conjunto de

valores. Sem entrar muito em aspectos específicos da codificação agregados definidos pelo

usuário, eles exigem quatro inicializações de método: inicialização (inicialização de

resposta), encerrar (resposta retorno), Accumulate (chamado para cada linha) e direta

(chamado ao mesclar o processamento de vários threads).

Agregada, o método Accumulate pode simplesmente unir a geografia de linha atual com a

geografia resposta sempre que ele é chamado. Na verdade, você não precisa escrever esta

agregação mesmo; ele faz parte do Projeto de ferramentas espacial do SQL Server no

CodePlex . Este agregado ainda permitirá que você passar em um buffer para cada linha,

Page 6: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

que resolve o problema de buffer de dois metros. A consulta, em seguida, pode ser escrita

assim:

SELECT COUNT(*)

FROM customer c

WHERE

c.geog.STIntersects(

SELECT dbo.GeographyUnionAggregate(b.geog,2*1609.344) FROM

branch b)=0Como você pode ver, esses exemplos, endereços de geocodificação e armazená-las junto

com de formulário o escritório de postagem do endereço podem trazer valor comercial para

um aplicativo.

Índices espaciaisDepois que sua empresa recebe maior, calcular a distância entre cada cliente e cada

vendedor ou cada cliente e cada filial de banco pode se tornar muito lenta. Suporte a dados

espacial do SQL Server 2008 inclui indexação espacial. Os índices espaciais são índices de B-

árvore comuns que devem fazer consultas espaciais executado mais rapidamente, assim

como os índices relacionais no SQL Server fazem consultas relacionais executado mais

rapidamente.

Mapear dados espaciais bidimensionais para uma árvore B unidimensional é realizada por

meio de tessellation; que é, dividir a área de backup em subáreas pequenas e registrar as

subáreas que se cruzam cada instância espacial. Para o tipo de dados a geografia, isso

significa que dividir o mundo inteiro em hemispheres e Projetando cada hemisphere em um

plano. Cada instância de Geografia, em seguida, aborda uma ou mais subseções (lado a

lado) desse plano; o índice espacial deve conter uma linha para cada lado que abrange uma

instância. Para o tipo de cálculo, porque você está especificando seu próprio sistema de

Page 7: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

coordenadas rectangular, você pode especificar os limites (caixa delimitadora) que aborda o

índice espacial.

Há um número de regras que determinam como espaciais instâncias que interceptam lado a

lado é mapeado para linhas em um índice espacial, e você pode definir bem como o sistema

de grade serão ser para o índice espacial em vários níveis. Para obter mais informações

sobre as especificações de índices espaciais, Manuais online do SQL Server é a melhor

referência.

Para retornar para o sistema cliente, você pode definir um índice espacial na coluna geog na

sua tabela de clientes com a seguinte linguagem de definição de dados (DDL):

Copiar Código

CREATE SPATIAL INDEX cust_geog_idx

ON dbo.customer(geog)

GRIDS =(LEVEL1=HIGH,LEVEL2=HIGH,LEVEL3=HIGH,LEVEL4=HIGH));Definindo este índice com uma grade granularidade alta seria melhor para seu índice

porque cada endereço de cliente é um ponto, que só apareceria em um quadrado, ao

contrário de linhas ou polígonos, que podem se cruzam muitas peças.

Você deve observar que índices espaciais são usados somente com certos métodos

espaciais. Atualmente, eles são usados com os seguinte predicados Geografia:

Copiar Código

instance1.STIntersects(instance2) = 1

instance1.STEquals(instance2) = 1

instance1.STDistance(instance2) < number

instance1.STDistance(instance2) <= numberQuando você está lidando com geometria em vez de Geografia, o índice espacial também

funciona com o STContains, STOverlaps, STTouches e STWithin métodos, mas somente

quando estiver verificando 1 (verdadeiro). Com base na maneira como os índices espaciais

trabalha, você realmente deseja rephrase sua consulta espacial sobre "clientes que moram

Page 8: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

mais de dois quilômetros de uma ramificação bancária" para contar os clientes que

STIntersects retorna True e subtrair esse número do número total de clientes.

VisualizadoresObserve que nos exemplos alguns que trabalhou por meio de até o momento, seria

realmente útil ver os dados espaciais em um formulário diferente de linhas e colunas. Na

verdade, talvez você tenha notado que selecionando o tipo de dados espacial próprio

retorna sua representação binária. Usando o método ToString ou o método de STAsText

retorna o formato WKB. Que é um pouco melhor, mas ele ainda não lhe qualquer idéia

sobre localizações geográficas, a menos que você pode projeto pares de Latitude/Longitude

para um mapa de cabeça. Dados espaciais precisam quase sempre um visualizador gráfico

para torná-lo mais úteis e quando você está falando sobre dados geográficos, esse

visualizador normalmente deve incluir um mapa.

SQL Server Management Studio 2008 inclui um visualizador simples sob a forma de uma

guia espacial resultados na janela de resultados da consulta. Este visualizador funciona com

uma Geografia ou coluna de cálculo na consulta resulta e plota os tipos de dados espaciais

em uma grade. Se várias colunas espaciais aparecer no resultado da consulta, você pode

escolher a visualizar. A coluna para ser exibida deve estar no formato binário do SQL Server;

usando ToString() ou STAsText() não funciona com o visualizador.

Para um tipo de dados a geografia, você mesmo obter opções de mapa projeções como

Mercator ou Equirectangular, mas os dados não sobrepostos em um mapa por padrão. Um

barata e fácil maneira sobrepor um mapa se você tiver uma tabela que contém dados da

estrutura de tópicos do mapa é fazer uma UNION ALL entre o conjunto de linhas e um

conjunto de linhas que contém a Geografia do mapa. a Figura 1 mostra pontos que

representa um conjunto de mais de 700 cidades do banco de dados Mondial no Visualizador

do SQL Server Management Studio. A consulta do SQL Server que gerou a ele foi:

Copiar Código

SELECT geog, name

FROM Mondial.dbo.city

Page 9: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

WHERE geog IS NOT NULL

Figura 1 um conjunto de linhas de pontos da tabela Mondial banco

de dados Cidade Uma opção ainda melhor é usar um visualizador comercial ou shareware que fornece a

sobreposição de mapa por padrão, como mostrado na Figura 2 . Você observará que na guia

resultados espacial no SQL Server Management Studio mostra um conjunto de registros de

mais de 700 pontos com uma sobreposição de mapa. A consulta do SQL Server que

produziu-tem esta aparência:

Copiar Código

SELECT geog, name

FROM Mondial.dbo.city

WHERE geog IS NOT NULL

UNION ALL

SELECT geog, cntry_name

FROM SpatialSamples.dbo.cntry00

Page 10: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

A Figura 2 de um conjunto de linhas de pontos com um mapa de

sobreposição Um visualizador que você pode usar é Geoquery 2008 programa de Craig Dunn. Este é um

visualizador livre para resultados de consulta do SQL Server 2008 que inclua as projeções de

mapa e também permite que você escolha a espessura de cor e linha de seus objetos de

dados espacial. Você também poderia escrever código para exibir os dados no Microsoft

Virtual Earth ou Terra Google, mas que está fora do escopo desta coluna.

O tipo de dados GeometryVamos voltar para o outro tipo de dados espacial que eu utilizada no rapidamente, o tipo de

dados geometria e Explique onde você poderia usar geometria em oposição a geografia. O

tipo de dados de geometria representa um avião simples com x e y coordenadas, em

oposição a geografia que representa latitude e longitude, angles do centro para a superfície

da Terra (coordenadas ellipsoidal). O tipo de dados de geometria pode ser usado para

problemas que não precisa levar forma a Terra em consideração, relativamente pequenos

superfícies planos, como layouts de escritório cúbica ou depósitos. Quando você está

tentando localizar escritório retangular um colega de trabalho em baia Terra, não importa a

curvatura da Terra, portanto, usando o tipo de dados de geometria e cálculos lineares serão

suficiente. Quando você está lidando com a geometria, você definir a unidade de medida e o

Page 11: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

ponto de origem (permitir que 0,0 ser o canto inferior esquerdo de seu depósito, por

exemplo).

Embora, às vezes, você pode usar o tipo de cálculo para espacial locais a Terra, o processo é

um pouco mais complicado. Como há um número de diferentes maneiras de mapear a Terra

para um sistema de coordenadas, e como elas afetam métodos de cálculo como STArea e

STDistance, suas instâncias de dados espacial precisará especificar um SRID.

Se você estiver usando geometria ou geografia, um SRID é necessária. Para o tipo de dados

de geometria, se você tiver obrigadas o sistema de coordenadas e a unidade de medida

você (por exemplo, quando o mapeamento de um layout de escritório), você escolheria

SRID 0, que especifica um sistema de referência espacial desconhecido ou local. SRID 0 é o

padrão para o tipo de dados de geometria no SQL Server. Para geografia, é importante que

você escolher uma dos SRIDs que SQL Server é capaz de usar. SRID 4326 é o padrão e o que

é usado por sistemas GPS.

Os métodos geográficos embutidos no SQL Server podem usam qualquer um dos sistemas

de referência espacial 390 que são enumerados na tabela de metadados do sistema,

sys.spatial_reference_systems. Esses sistemas de referência espacial provenientes o De

europeu Petroleum pesquisa grupo (EPSG) registro de parâmetro geodetic. Não existe EPSG

— suas funções foram absorver para o grupo de pesquisa Petroleum Europa. Você pode

supor que uma associação de óleo e gás produtores seria deseja ter certeza que tenham as

posições mais precisas na Terra quando eles vá Explorando.

Cada SRID não apenas nomes de uma unidade de medida (a maioria dos uso metros), mas

também incluem uma seqüência de caracteres que especifica uma referência (conjunto de

pontos de referência na Terra), geoid, sistema de coordenadas e mapear projeção. Para

obter mais informações sobre sistemas de coordenada, você deve leia do Isaac Kunen white

paper" Introdução aos sistemas de Coordinate espacial: mapeamentos simples para um

planeta redondo ."

Como cálculo do SQL Server Geografia tipo de dados é sensível ao SRID que é usado, a

tentativa de usar métodos espaciais (por exemplo, distância e Intersects) entre instâncias de

tipos espaciais que não têm o mesmo SRID retornará o valor NULL. Falarei mais sobre a

conversão entre SRIDs posteriormente.

Page 12: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

Visualização espacialAbordei alguns aplicativos mais óbvios para dados espaciais e o fato de que muitas delas use

visualizadores para fornecer uma exibição gráfica dos dados. Suponha que, em vez de

simplesmente usar um mapa dos países do mundo ou os estados nos EUA, queria visualizar

meus dados por Projetando-lo em relação a limites de região ou correlacioná-lo com

Distritos congressional ou com dados censitárias? Neste caso, eu poderia ter que adquirir o

que eu chamo de "dados de referência espacial". Dados de referência espacial podem ser

baixados do sites públicos ou comprados de empresas como Instituto de pesquisa de

sistemas ambientais (ESRI) . Observe que a disponibilidade de dados de livre referência

espacial pública amplamente varia dependendo do local personalizado. Nos EUA, a maior

parte os dados que já falamos sobre o, como limites de região e dados censitárias, é mais

livremente disponíveis do que em muitos outros países.

Portanto, você já passou fora seu site da Web pública Favoritos, por exemplo o DOS EUA Do

censitárias Bureau Tiger site e arquivos de referência geográfica baixados. Mas os arquivos

estão no formato ESRI Shapefile, não do SQL Server colunas de Geografia nas tabelas.

Como importar esses arquivos para o SQL Server? E muitos arquivos disponíveis

publicamente usam SRID 4269, não o 4326 SRID seu geocoder emitida. Como você

converter entre SRIDs diferentes para que todos os seus métodos espaciais não retornará

NULL? O problema que precise ser resolvido aqui é a mais de um problema de extração

transformação-carga (ETL) que um problema de conversão simples. Deseja colocar junto

dados não-espaciais como censitárias faixa de números ou valores de população. E, embora

você poderia (em teoria) transformar os dados entre SRIDs dinamicamente, isso poderia

diminuir suas consultas consideravelmente. Isso é definitivamente um problema ETL.

SQL Server 2008, na verdade, não enviar nada na caixa para ajudá-lo aqui. Há programas

como ferramenta de Shape2SQL do Morten Nielsen que carrega Shapefiles em tabelas do

SQL Server. Mas Shapefiles não o somente tipo de espacial do arquivo de terceiros e você

pode desejar executar transformações entre SRIDs ou outras transformações mais

especializadas. Há uma variedade de produtos de terceiros comerciais para especializados

em transformações de dados espacial e em massa carregar. Eles incluem FME SAFE software

para o SQL Server, o Extender espacial da coleção para SQL Server e, claro, linha do ESRI de

produtos do sistema (GIS) de informações geográficas. Elas podem mover dados para SQL

Page 13: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

Server ou mover dados do SQL Server para um GIS completa. Com êxito usei o produto de

software SAFE chamado FME para SQL Server, que inclui uma biblioteca de transformações,

oferece suporte ao quase todos formato de dados espacial e ainda fornece uma série de

componentes para o sistema de ETL do SQL Server: SQL Server Integration Services.

O SQL Server biblioteca dados espaciaisO formato que você irá escolher usar para mover dados e saia do SQL Server será dependem

necessidades específicas de sua organização e também nas necessidades de seu aplicativo

específico. Tipos de dados do SQL Server intrinsecamente dão suporte a formatos WKB e

WKT, bem como formato de idioma (GML) de marcação geográfica. SQL Server expõe os

tipos de geometria e Geografia e os métodos associados em uma biblioteca baseados

no .NET chamado Microsoft.SqlServer.Types.dll. Não só é esta biblioteca fornecido com o

SQL Server, mas como ele é baseado no .NET, você pode baixá-la como parte do SQL Server

2008 Feature Pack e mover os cálculos e transformações para a camada intermediária ou

cliente, se necessário. Tenha em mente que apenas um lado do servidor fornece espaciais

índices para otimizar as consultas de dados espacial.

SQL Server, na verdade, está armazenando instâncias de classes .NET SqlGeometry e

SqlGeography; as classes e os métodos são intrínsecos para a biblioteca. Você pode usar

métodos espaciais em consultas do SQL Server ou encapsular as operações em T-SQL ou

procedimentos armazenado do SQLCLR, funções definidas pelo usuário e disparadores. Você

pode estender a funcionalidade básica usando SqlGeometry e SqlGeography como membros

em tipos de definido pelo usuário do .NET e agregados definidos pelo usuário, como o

GeographyUnionAggregate que usei anteriormente.

A biblioteca de dados espacial também inclui um construtor de API que pode ser usada para

otimizar o carregamento e de transformações personalizadas e agregações. Isso consiste em

um SqlGeometryBuilder SqlGeographyBuilder e coletor interfaces (IGeometrySink e

IGeographySink) que você pode usar a construção de otimizado de instâncias de dados

espacial. Você implementar uma das interfaces coletor, que permite que você começar ou

terminar números, adicionar linhas e definir o SRID apropriado. Depois dos dados no lugar,

você simplesmente chamar o método popular criem as instâncias que você configurou.

Page 14: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

Projetando e implementando armazenamento espacial

Dados espaciais representam informações sobre o local físico e a forma de objetos

geométricos. Esses objetos podem ser locais de pontos ou objetos mais complexos como

países, estradas ou lagos.

O SQL Server oferece suporte a dois tipos de dados espaciais: geometry e geography. Os

dois tipos de dados são implementados como tipos de dados CLR (Common Language

Runtime) do .NET no SQL Server.

O tipo de dados de geometry (planar) que tem suporte do SQL Server está de acordo com os

Recursos Simples do Open Geospatial Consortium (OGC) para o SQL Specification versão

1.1.0.

Dados de geométricos: O tipo de dados espacial planar, geometry, é implementado como

um tipo de dados CLR (Common Language Runtime) no SQL Server. Esse tipo representa

dados em um sistema de coordenadas euclidiano (plano).

Registrando o tipo de geometria

O tipo geometry é predefinido e está disponível em cada banco de dados. É possível criar

colunas de tabelas do tipo geometry e operar em dados de geometry da mesma maneira

como outros tipos CLR são usados.

Exemplos

Os dois exemplos a seguir mostram como adicionar e consultar dados de geometria. O

primeiro exemplo cria uma tabela com uma coluna de identidade e uma coluna de

geometry GeomCol1. Uma terceira coluna renderiza a coluna de geometry em sua

representação WKT (Well-Known Text) do Open Geospatial Consortium (OGC) e usa o

método STAsText(). Em seguida, duas linhas são inseridas: uma linha que contém uma

instância LineString de geometry e uma linha que contém uma instância Polygon.

Page 15: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL

DROP TABLE dbo.SpatialTable;

GO

CREATE TABLE SpatialTable

( id int IDENTITY (1,1),

GeomCol1 geometry,

GeomCol2 AS GeomCol1.STAsText() );

GO

INSERT INTO SpatialTable (GeomCol1)

VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));

INSERT INTO SpatialTable (GeomCol1)

VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));

GO

O segundo exemplo usa o método STIntersection() para retornar os pontos onde as duas

instâncias geometry se cruzam.

DECLARE @geom1 geometry;

DECLARE @geom2 geometry;

DECLARE @result geometry;

SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;

SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;

SELECT @result = @geom1.STIntersection(@geom2);

SELECT @result.STAsText();

Dados de geográficos:

O tipo de dados de geografia, geography, é implementado como um tipo de dado CLR

(Common Language Runtime) do .NET no SQL Server. Esse tipo representa dados em um

Page 16: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

sistema de coordenadas de terra redonda. O tipo de dados de geography do SQL Server

armazena dados elipsoidais (globo), como coordenadas de latitude e longitude de GPS.

Registrando o tipo de geografia

O tipo geography é predefinido e está disponível em cada banco de dados. É possível criar

colunas de tabelas do tipo geography e operar em dados de geography da mesma maneira

como outros tipos fornecidos pelo sistema são usados.

Exemplos

Os exemplos a seguir mostram como adicionar e consultar dados de geografia. O primeiro

exemplo cria uma tabela com uma coluna de identidade e uma coluna de geography

GeogCol1. Uma terceira coluna renderiza a coluna de geography em sua representação

WKT (Well-Known Text) do Open Geospatial Consortium (OGC) e usa o método

STAsText(). Em seguida, duas linhas são inseridas: uma linha que contém uma instância

LineString de geography e uma linha que contém uma instância Polygon.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL

DROP TABLE dbo.SpatialTable;

GO

CREATE TABLE SpatialTable

( id int IDENTITY (1,1),

GeogCol1 geography,

GeogCol2 AS GeogCol1.STAsText() );

GO

Page 17: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

INSERT INTO SpatialTable (GeogCol1)

VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)',

4326));

INSERT INTO SpatialTable (GeogCol1)

VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -

122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));

GO

O segundo exemplo usa o método STIntersection() para retornar os pontos onde as duas

instâncias geography se cruzam.

DECLARE @geog1 geography;

DECLARE @geog2 geography;

DECLARE @result geography;

SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;

SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;

SELECT @result = @geog1.STIntersection(@geog2);

SELECT @result.STAsText();

Lembre-se de que qualquer tipo de dados que você poderá capturar com um sistema GPS

pode ser importado e pode ser usado com o restante do seus dados de banco de dados.

Com recursos GPS se tornando mais comum em telefones, câmeras, automobiles e outros

dispositivos e aparelhos e com muitos sistemas de informação agora contendo dados de

Page 18: Web viewSQL Server Management Studio 2008 inclui um visualizador simples ... Uma opção ainda melhor é usar um visualizador comercial ou shareware que

endereço, a possibilidade de integrar dados GPS interessantes recursos — aqueles que

realmente atender às necessidades do usuário — é realmente ilimitado. Portanto, fique

atento para alguns desenvolvimentos interessantes.

Bom pessoal, é isso, continuaremos nas próximas dicas, apresentando mais informações,

exemplos e demonstrando de forma teórica e prática como podemos utilizar estes tipos de

dados, bem como, seus demais recursos.

Vou ficando por aqui, agradeço a sua visita.

Até mais.