39
Tipos de datos espaciales Enrique Catala Bañuls Data Platform Architect Solid Quality Mentors [email protected] Click icon to add clip art

Tipos de datos espaciales

Embed Size (px)

DESCRIPTION

Utiliza los tipos de datos geography y geometry en SQL Server 2008 para hacer aplicaciones GIS usando el motor relacional

Citation preview

Page 1: Tipos de datos espaciales

Tipos de datos espaciales

Enrique Catala BañulsData Platform ArchitectSolid Quality [email protected]

Click icon to add clip art

Page 2: Tipos de datos espaciales

Agenda

•Escenario

•Modelos espaciales• Geodésico

• Planar

•Tipos de datos espaciales en SQL Server 2008 • Geometry

• Geography

•Usabilidad

•Indexación

Tipos de datos espaciales

Page 3: Tipos de datos espaciales

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

Page 4: Tipos de datos espaciales

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

Page 5: Tipos de datos espaciales

Tipos de datos espaciales

•Mas de forma general:• Información enfocada al consumidor y basada en la

localización

• Desarrollo y administración basada en el cliente

• Planificación, análisis y datos relacionados con el entorno

• Análisis económicos y financieros en comunidades

• Análisis de desarrollo de planes gubernamentales

• Análisis de segmentación de mercado

• Análisis, estudio e investigación de diseño

• Análisis y desarrollo de inmobiliarias

Escenario

Page 6: Tipos de datos espaciales

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

Page 7: Tipos de datos espaciales

Modelos espacialesGeodésico

Page 8: Tipos de datos espaciales

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áficoso Ej.. Proyección Mercatoreo 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

Page 9: Tipos de datos espaciales

Modelos espacialesPlanar

Page 10: Tipos de datos espaciales

Soporte Espacial 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

Page 11: Tipos de datos espaciales

Soporte Espacial SQL 2008

•Tipo de datos geometry • Conforme al estándar Open Geospatial Consortium (OGC)

de características para SQL en su especificación 1.1.0. o http://www.opengeospatial.org/standards/gml

•Tipo de datos geography• Guarda datos elipsoidales (tierra redonda) como latitudes

GPS y coordenadas longitudinales

•Ambos soportan once objetos espaciales• Solo siete de ellos son instanciables

Tipos de datos Espaciales

Page 12: Tipos de datos espaciales

Soporte Espacial SQL 2008Jerarquí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

Page 13: Tipos de datos espaciales

Soporte Espacial SQL 2008

•Planar• Coordenadas dadas en “unidades”

• Las medidas de distancias y áreas se dan en la misma unidad de medida que las coordenadas o 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

declare @box as geometry = geometry::STGeomFromText('POLYGON ((0 0, 150

0, 150 150, 0 150, 0 0))', 0)select @box.STAsText()

Page 14: Tipos de datos espaciales

Soporte Espacial SQL 2008

•Geodésica• Las coordenadas se dan en grados de longitud y

latitud (adaptadas al estándar desde RC0)

• Distancias y áreas son normalmente metros y metros cuadrados o 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

declare @home as geography = geography::STPointFromText('POINT(45.32 9.07)', 4326)

Page 15: Tipos de datos espaciales

Soporte Espacial 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

Page 16: Tipos de datos espaciales

Soporte Espacial SQL 2008

•Para usar el tipo de datos geography correctamente, debemos especificar tanto la orientación del anillo como su localización exacta (sentido de las agujas del reloj)

Orientación

Page 17: Tipos de datos espaciales

Soporte Espacial 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

Page 18: Tipos de datos espaciales

DEMO 1

Vistazo a los datos

espaciales

Page 19: Tipos de datos espaciales

Soporte Espacial SQL 2008

•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

Page 20: Tipos de datos espaciales

Soporte Espacial SQL 2008

•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

Page 21: Tipos de datos espaciales

Soporte Espacial 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

Page 22: Tipos de datos espaciales

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 O usando formas especializadas STxxxFromString. Ej.:

STPolyFromString

Construcción de instancias

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()

Page 23: Tipos de datos espaciales

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 XMLo http://www.opengis.net/gml

Construcción de instancias

Page 24: Tipos de datos espaciales

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

Page 25: Tipos de datos espaciales

DEMO 2

Instanciación de

datos espaciales

Page 26: Tipos de datos espaciales

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

Page 27: Tipos de datos espaciales

Uso

•Algunos métodos:• STIntersect

• STTouches (solo para geometry)

• STOverlaps (solo para geometry)

• STContainso Opposite: STWithin

• STIntersects

• STUnion

Métodos y propiedades

Page 28: Tipos de datos espaciales

DEMO 3

Métodos de datos

espaciales

Page 29: Tipos de datos espaciales

IndexaciónVistazo

•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 o Estos niveles se llaman level 1 (nivel superior), level 2,

level 3 y level 4.

Page 30: Tipos de datos espaciales

IndexaciónVistazo

•Rejillas de indexación espacial:

Page 31: Tipos de datos espaciales

•Numeración de celdas usando el algoritmo Hilvert filling-space curve

•Tessellation:• Regla del cubrimiento

• Regla de celdas por objeto

• Regla de celda mas profunda

IndexaciónProceso

Page 32: Tipos de datos espaciales

•Si el objeto cubre completamente una celda, se marca como cubierto y no se baja al siguiente nivel

IndexaciónRegla del cubrimiento

Page 33: Tipos de datos espaciales

•Consiste en evitar que se siga el proceso de clasificación del objeto en celdas, mientras no se supere un nº de celdas máximo por objeto

•Solo la 15 si CELLS_PER_OBJECT = 8

IndexaciónRegla de celdas por objeto

Page 34: Tipos de datos espaciales

•Cada celda, pertenece a la celda del nivel superior

IndexaciónRegla de la celda mas profunda

Page 35: Tipos de datos espaciales

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

Page 36: Tipos de datos espaciales

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

En rojo geography

Limitaciones

Page 37: Tipos de datos espaciales

DEMO 4

Indices espaciales

Page 38: 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

Page 39: Tipos de datos espaciales

http://blogs.solidq.com/ES/ElRinconDelDBA/default.aspx

SQL SERVER 2008 TIPOS DE DATOS ESPACIALES

¿ PREGUNTAS ?

[email protected]