SQL Server 2008 Bootcamp Día 2 SQL 2008 Tipos de datos...

34
SQL 2008 Tipos de datos espaciales SQL Server 2008 Bootcamp Día 2

Transcript of SQL Server 2008 Bootcamp Día 2 SQL 2008 Tipos de datos...

SQL 2008

Tipos de datos espaciales

SQL Server 2008 Bootcamp – Día 2

Información sobre versión Beta

• Toda la información y ejemplos son relativos a

la beta pública CTP5 de SQL Server 2008

• Comandos y funcionalidad pueden diferir de la

versión final RTM

2© 2007 Solid Quality Mentors

Agenda

• Escenario

• Modelos espaciales

– Geodésico

– Planar

• Tipos de datos espaciales en SQL Server 2008

– Geometry

– Geography

• Usabilidad

• Indexación

Tipos de datos espaciales

3© 2007 Solid Quality Mentors

Tipos de datos espaciales

• Ejemplos de uso de tipos de datos espaciales:

– Un minorista web puede mostrar las localizaciones de

todas sus tiendas como puntos en un mapa y

encontrar la mas cercana a un código postal concreto

– Un jefe de ventas puede definir regiones geográficas

de ventas y usarlas para encontrar las ventas más

representativas, así como realizar análisis de

rendimiento de ventas

– Un arquitecto puede crear planos para una nueva

construcción y solapar dichos planos dentro del mapa

del sitio propuesto

Escenario

4© 2007 Solid Quality Mentors

Tipos de datos espaciales

• (continuación de ejemplos)

– Un conductor puede encontrar la distancia entre dos

puntos y planificar la ruta

– Una inmobiliaria puede rápidamente identificar

propiedades que concuerden con los requerimientos

del clientes (casas de 90 metros cuadrados cerca de

las Lagunas del Ruidera)

– Una aplicación móvil puede encontrar gasolineras a

menos de 100 metros de donde se encuentra

Escenario

5© 2007 Solid Quality Mentors

Modelos Espaciales

• Geodésico

– El problema de describir una localización planetaria

es que la superficie no es plana

– Una representación fiel de la Tierra es normalmente

representada como un globo, cuyas localizaciones

van descritas mediante latitud y longitud, que se

miden en grados desde el ecuador y el meridiano de

Greenwich respectivamente

Vistazo

7© 2007 Solid Quality Mentors

Modelos espacialesGeodésico

8© 2007 Solid Quality Mentors

Modelos espaciales

• Planar

– Es mucho mas fácil trabajar en superficies de 2

dimensiones

– Trabajar con datos geospaciales en dos dimensiones

, requiere una proyección de los objetos geográficos

• Ej.. Proyección Mercatore

• Posee distorsiones

– Los modelos planos trabajan bien para áreas

geográficas pequeñas, como países pequeños,

estados y ciudades, o para planos de interior

Vistazo

9© 2007 Solid Quality Mentors

Modelos espacialesPlanar

10© 2007 Solid Quality Mentors

Soporte Espacial en SQL 2008

• SQL Server 2008 Soporta ambos modelos

mediante dos tipos de datos diferentes

– geography (modelo geodésico)

– geometry (modelo planar)

• Implementados como SQLCLR UDT

– Ambos tipos de datos poseen propiedades y métodos

que puedes utilizar para realizar operaciones

espaciales, como calcular distancias, encontrar

intersecciones,…

Tipos de datos

11© 2007 Solid Quality Mentors

Soporte Espacial en SQL 2008

Jerarquía en la que se basan tanto los tipos de datos geometry y geography .

Los tipos instanciables por geometry y geography están en color azul.

Objetos Espaciales

13© 2007 Solid Quality Mentors

Soporte Espacial en SQL 2008

• Planar

– Coordenadas dadas en “unidades”

– Las medidas de distancias y áreas se dan en la

misma unidad de medida que las coordenadas

• Ej.: Usando tipo de datos geometry, la distancia entre (2, 2) y

(5, 6) es 5 unidades, sean las que sean

Diferencias de coordenadas y medidas

14© 2007 Solid Quality Mentors

declare @box as geometry =

geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150

150, 0 150, 0 0))', 0)

select @box.STAsText()

Soporte Espacial en SQL 2008

• Geodésica

– Las coordenadas se dan en grados de latitud y

longitud

– Distancias y áreas son normalmente metros y metros

cuadrados

• La medida puede depender del índice de referencia espacial

(SRID) de la instancia geography. La unidad de medida mas

usual para el tipo geography son los metros

Diferencias de coordenadas y medidas

15© 2007 Solid Quality Mentors

declare @home as geography =

geography::STPointFromText('POINT(45.32 9.07)', 4326)

Soporte Espacial en SQL 2008

• En un sistema elipsoidal, un polígono no tiene

significado, o no tiene sentido sin orientación

– Ej.: el anillo sobre el ecuador describe el hemisferio

norte o el sur?

Orientación

16© 2007 Solid Quality Mentors

Soporte Espacial en SQL 2008

• Para usar el tipo de datos geography

correctamente, debemos especificar tanto la

orientación del anillo como su localización

exacta

Orientación

17© 2007 Solid Quality Mentors

Soporte Espacial en SQL 2008

• Cada instancia geográfica debe ajustarse dentro

de un único hemisferio.

– No podemos almacenar objetos mas grandes que un

hemisferio

• Cualquier instancia que represente un objeto

mayor que un hemisferio lanzara una excepción

ArgumentException.

Limitaciones del tipo de datos geography

18© 2007 Solid Quality Mentors

DEMO 1

Vistazo a los datos espaciales

19© 2007 Solid Quality Mentors

SQL Server 2008 Spatial Support

• Los métodos del tipo de datos geography que

requieren la entrada de dos instancias

geography devolverán null si el resultado no

cabe en un único hemisferio

Limitaciones del tipo de datos geography

20© 2007 Solid Quality Mentors

SQL Server 2008 Spatial Support

• SRID: identificador de referencia espacial

– Se corresponde tanto con un sistema de referencia

espacial para mapeos de tipo “tierra plana” así como

mapeos de “tierra redonda”

• El sistema de identificación de referencia

espacial se define por el European Petroleum

Survey Group (EPSG) standard, que es un

conjunto de estándares desarrollados para

almacenamiento de datos cartográficos y

posicionamiento. Este estándar es propiedad de

los productores de gas y combustible (OGP) y

del comité de posicionamiento.

SRID

21© 2007 Solid Quality Mentors

Soporte Espacial en SQL 2008

• Las instancias geometry tienen por defecto

SRID = 0

• Las instancias geography deben utilizar los

SRIDs soportados

– Por defecto es 4326 (WGS84)

select * from sys.spatial_reference_systems

• Solo las instancias espaciales con el mismo

SRID pueden operar entre si cuando utilizas

métodos espaciales con tus datos

• Una columna puede utilizar objetos con

diferentes SRIDs

SRID

22© 2007 Solid Quality Mentors

Uso

• Puedes construir instancias de tipos de datos

geometry introduciéndolos con formato Well-

Known Text (WKT)

– Haciendo un cast a la cadena

– Invocando el método estático STGeomFromString

• O usando formas especializadas STxxxFromString. Ej.:

STPolyFromString

Construcción de instancias

23© 2007 Solid Quality Mentors

declare @box as geometry =

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

select @box.STAsText()

declare @box2 as geometry =

cast('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))' as geometry)

select @box2.STAsText()

Uso

• También se soporta el formato Well-Known

Binary (WKB)

– STFromGeomFromWKB(<wkb>, <srid>)

• Se soporta un subconjunto de GML

– GeomFromGml(<gml>, <srid>)

– GML es un formato XML

• http://www.opengis.net/gml

Construcción de instancias

24© 2007 Solid Quality Mentors

Uso

• Una anotación sobre polígonos:

– Pueden tener “agujeros”

– El anillo exterior es el que manda (el perímetro)

– Los anillos internos definen los agujeros

– El punto de partida y el de final son iguales

Construcción de instancias

25© 2007 Solid Quality Mentors

DEMO 2

Demo de instanciación de datos espaciales

26© 2007 Solid Quality Mentors

Uso

• Algunas propiedades:

– STStartPoint

– STEndPoint

– STX (Solo POINT)

– STY (Solo POINT)

– STCentroid (POLY y MULTIPOLY solo)

– STArea (POLY y MULTIPOLY solo)

Métodos y propiedades

27© 2007 Solid Quality Mentors

Uso

• Algunos métodos:

– STIntersect

– STTouches (solo para geometry)

– STOverlaps (solo para geometry)

– STContains

• Opposite: STWithin

– STIntersects

– STUnion

Métodos y propiedades

28© 2007 Solid Quality Mentors

DEMO 3

Demo sobre métodos de datos espaciales

29© 2007 Solid Quality Mentors

IndexaciónVistazo

30© 2007 Solid Quality Mentors

• En SQL Server 2008, los índices espaciales se

definen como árboles B

– Los índices han de representar la información

bidimensional mediante esos árboles B

– SQL Server 2008 implementa una descomposición

del espacio de forma uniforme

– El proceso de indexación, descompone el espacio en

una jerarquía de rejillas de 4 niveles

• Estos niveles se llaman level 1 (nivel superior), level 2, level

3 y level 4.

IndexaciónVistazo

31© 2007 Solid Quality Mentors

• Rejillas de indexación espacial:

Indexación

• Un índice espacial puede ser creado

únicamente sobre una columna de tipo

geometry o geography.

• Los índices espaciales solo pueden definirse

sobre tablas que poseen clave primaria

• Los índices espaciales no pueden especificarse

sobre vistas indexadas

Vistazo

32© 2007 Solid Quality Mentors

Indexación

• Predicados soportados:

– geometry1.STContains(geometry2) = 1

– geometry1.STDistance(geometry2) < number

– geometry1.STDistance(geometry2) <= number

– geometry1.STEquals(geometry2) = 1

– geometry1.STIntersects(geometry2) = 1

– geometry1.STOverlaps (geometry2) = 1

– geometry1.STTouches(geometry2) = 1

– geometry1.STWithin(geometry2) = 1

Limitaciones

33© 2007 Solid Quality Mentors

DEMO 4

Ejemplos de datos espaciales

34© 2007 Solid Quality Mentors

Preguntas y respuestas

Tipos de datos Espaciales

Links de SQL Server 2008

• Site de SQL Server 2008

– http://www.microsoft.com/sql/2008/

• Ejemplos de SQL Server 2008

– http://www.codeplex.com/SqlServerSamples

36© 2007 Solid Quality Mentors