SQL Server
SQL Server
SQL Server
Bases de datos
1. Introducción
2. Soporte de datos espaciales
3. Tipos de datos espaciales en SQL Server
4. SQL para tipos de datos espaciales
5. Rendimiento
6. Vistas espaciales gráficas integradas
7. Aplicaciones
8. Management Studio
9. Recuperación y disponibilidad
10. Soporte nativo de XML
11. Gestión de geodatabases en ArcGIS
2
1. Introducción
Historia:
Nace en Sybase (década de 1980) para Unix
Microsoft lo traduce posteriormente a Windows NT
Es un SGBDR completo:
Propiedades ACID
Atomicity
Consistency
Isolation
Durability
Disparadores
Restricciones de integridad
Réplicas de bases de datos (duplicación)
Copias de seguridad
Ajuste de rendimiento
Funciona en plataformas:
Pocket PC -> Mainframes
3
1. Introducción
Extensiones:
XML
OLAP (Online Analytical Processing)
Data Mining (Minería de datos)
Extensiones espaciales para GIS
4
2. Soporte de datos espaciales
5
2. Soporte de datos espaciales
Proyección UTM
Desarrollo cilíndrico conforme de Gauss
6
3. Tipos de datos espaciales en
SQL Server
7
3. Tipos de datos espaciales en
SQL Server
8
3. Tipos de datos espaciales en
SQL Server
9
3. Tipos de datos espaciales en
SQL Server
10
Jerarquía de tipos: herencia
11
Ejemplos
En WKT:
Los espacios separan las coordenadas de un punto.
Las comas separan los puntos en un tipo más complejo.
Los paréntesis agrupan puntos en una única figura.
Punto simple definido por coordenadas X Y:
POINT(10 10)
Punto con coordenadas X Y Z
(elevación) M (medida):
POINT(10 10 10 1)
Camino de líneas:
LINESTRING(0 0, 10 10)
Polígono:
POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))
Polígono con un hueco en forma de triángulo:
POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),
(1 1, 4 5, 4 1, 1 1))
12
Métodos para los tipos espaciales
Gris: Tipos Geometry que no están en Geography
13
Métodos para los tipos espaciales
STGeomFromText()
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));
STLineFromText()
INSERT INTO SpatialTable (GeomCol1) VALUES
(geometry::STLineFromText(
'LINESTRING (100 100, 20 180, 180 180)', 0));
Parse(). Se puede usar en lugar de los anteriores.
INSERT INTO SpatialTable (GeomCol1) VALUES
(geometry::Parse(
'LINESTRING (100 100, 20 180, 180 180)',));
ToString(). Para escribir datos geográficos.
SELECT GeomCol1.ToString() FROM SpatialTable
14
Métodos para los tipos espaciales
DECLARE @g geometry =
'POLYGON((10 10, 40 10, 40 40, 10 40, 10 10))'
DECLARE @h geometry =
'POLYGON((30 30, 50 30, 50 50, 30 50, 30 30))'
15
Transact-SQL (T-SQL)
DECLARE @i NVARCHAR(50)
SET @i = 0 Número: 0
WHILE @i < 5 Número: 1
BEGIN Número: 2
PRINT 'Número: ' + @i Número: 3
SET @i = @i + 1 Número: 4
END
16
Métodos para los tipos espaciales
STDifference()
Diferencia de conjuntos. Devuelve los puntos de la
columna geométrica a la que se aplica tal que no están en
los de la columna geométrica parámetro del método.
SELECT @g.STDifference(@h).ToString();
Resultado:
17
Métodos para los tipos espaciales
STDifference()
También sobre tipos distintos.
DECLARE @g geometry =
'LINESTRING(9 9, 40 40)'
DECLARE @h geometry =
'POLYGON((15 15, 15 30, 30 30, 30 15, 15 15))'
SELECT @g.STDifference(@h).ToString();
Resultado:
18
Métodos para los tipos espaciales
STIntersection()
Intersección de formas. Devuelve la parte común de dos
formas.
SELECT @g.STIntersection(@h).ToString();
Resultado:
19
Métodos para los tipos espaciales
STIntersection()
También sobre tipos distintos.
SELECT @g.STIntersection(@h).ToString();
Resultado:
20
Métodos para los tipos espaciales
STUnion()
Unión de formas. Devuelve todos los puntos de dos
formas.
SELECT @g.STUnion(@h).ToString();
Resultado:
21
Métodos para los tipos espaciales
STUnion()
También sobre tipos distintos.
SELECT @g.STUnion(@h).ToString();
Resultado:
GEOMETRYCOLLECTION (
LINESTRING (40 40, 30 30),
POLYGON ((15 15, 30 15, 30 30, 15 30, 15 15)),
LINESTRING (15 15, 9 9) )
22
Métodos para los tipos espaciales
STArea()
Área de una forma.
STLength()
Longitud de un camino.
DECLARE @g GEOMETRY =
'POLYGON((10 10, 10 40, 40 40, 10 10))'
Resultado:
Area Length
450 102.426406871193
23
Métodos para los tipos espaciales
STCentroid()
Devuelve el centroide de una forma.
DECLARE @g GEOMETRY =
'POLYGON((10 10, 10 40, 40 40, 10 10))'
SELECT @g.STCentroid().ToString()
Resultado:
24
Métodos para los tipos espaciales
STContains()
STWithin()
Devuelve el valor lógico cierto (1) si una forma contiene
completamente a otra.
@g.STContains(@h) determina si @g contiene a a @h
@g.STWithin(@h) determina si @g está contenido en @h
DECLARE @g geometry =
'POLYGON ((10 10, 13 30, 30 30, 30 15, 10 10))'
DECLARE @h geometry =
'LINESTRING (16 16, 16 24, 25 18)‘
Resultado:
10
01
25
Métodos para los tipos espaciales
ST is …
CLOSED.
Si el punto final coincide con el inicial.
EMPTY.
Si no contiene ningún punto (parecido a NULL, pero no es lo
mismo).
SIMPLE.
Si no se cruza sobre sí misma o se toca a sí misma.
RING.
Si es una forma cerrada (CLOSED) y simple (SIMPLE)
VALID.
Si no tiene elementos superpuestos.
Ej: No válido
26
Métodos para los tipos espaciales
Coordenadas de un punto:
.STX
.STY
.Z
.M
Resultado:
1 2 NULL NULL
1234
27
Métodos para los tipos espaciales
STPointOnSurface()
Devuelve un punto arbitrario que pertenece a la forma.
DECLARE @g geometry =
'POLYGON((10 10, 14 15, 50 12, 45 30, 10 30, 10 10))'
SELECT @g.STPointOnSurface().ToString()
Resultado:
28
4. SQL para tipos de datos espaciales
Creación de tablas:
29
4. SQL para tipos de datos espaciales
Inserción en tablas:
30
4. SQL para tipos de datos
espaciales
Selección de resultados:
StreetName DistrictName
First Avenue Downtown
First Avenue Harborside
Mercator Street Downtown
Mercator Street Green Park
Mercator Street Harborside
31
Otro ejemplo
ID WKT LENGTH
1 LINESTRING (0 0, 10 10, 21 2) 27.7436061324664
3 POINT (5 5) 0
32
5. Rendimiento
Tipos espaciales:
Tipos CLR (Common Language Runtime)
2 GB (¡Incluso para un único polígono!)
Datos espaciales almacenados en BDR
Interoperabilidad de datos
Índices espaciales
Índice en retícula multinivel
(árboles cuadráticos: quad-trees)
33
6. Vistas espaciales gráficas integradas
Management Studio:
34
7. Aplicaciones
35
7. Aplicaciones
36
8. Management Studio
37
9. Recuperación y disponibilidad
Recuperación de caídas.
Registro histórico (log)
Recuperación de medios.
Copia y restauración de bases de datos
Copias exactas de la base de datos
Duplicados de la base de datos en otras máquinas
Conmutación automática en caso de error
Seguridad
Usuarios
Roles
Autenticación:
Windows
SGBD
38
10. Soporte nativo de XML
39
Tipos XML en SQL
Creación de tablas:
40
Metadatos XML en SQL
41
Metadatos XML en SQL
42
XQuery en SQL
43
XQuery en SQL
45
Práctica
46