Los datos espaciales (Spatial Data) es una de las nuevas características del SQL Server 2008, el cual consiste en la capacidad de manipular información referente al posicionamiento geográfico, en el presente artículo presentaremos algunas de las formas de entender y utilizar dicha tecnología.
¿Donde se puede aprovechar esta tecnología?
Algunas ideas de aplicación de esta tecnología
- Un banco, puede mostrar en su sitio web la localización de las sucursales más próximas a un código postal
- La búsqueda de una propiedad por parte de una empresa inmobiliaria en base a especificaciones como el área en metros cuadrados y la proximidad a cierto punto de referencia
- Aplicaciones móviles pueden localizar establecimientos cercanos a la ubicación actual, como hoteles, restaurantes, centros de entretenimiento o gasolineras
- Una compañía puede establecer regiones geográficas de ventas y usarlas para realizar diversos análisis
Algunos ejemplos de segmentos de análisis
- 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 geográfico
- 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
Modelos de ubicación espacial y sus tipos de datos
1. Modelo Geodésico, este se determina con la representación de la tierra como una esfera, en la cual las localizaciones se realizan mediante latitud y longitud. El tipo de dato para este modelo se llama Geography
2. Modelo Planar, se determina como el mapa mundial en una superficie plana el cual las localizaciones se realizan mediante coordenadas ‘X’ y ‘Y’. El tipo de dato utilizado para este modelo se llama Geometry
Los tipos de datos Geography y Geometry son implementados como SQLCLR UDT, que determina que los tipos de datos tienen propiedades y métodos para realizar operaciones espaciales entre las cuales mencionamos el encontrar intersecciones, calcular distancias, entre otras, de las cuales veremos más detalle.
Diferencias entre el modelo Geodésico y Planar
- En el modelo planar las coordenadas son dadas en unidades, las medidas de distancias y áreas se dan en las mismas unidades, sin importar que unidades sean a diferencia del modelo Geodésico en el cual las coordenadas se dan en grados, distancias y áreas en metros y metros cuadrados, la medida depende del SRID
- En el modelo planar, no tiene importancia el sentido en el cual se define un objeto, en el geodésico el sentido, define el tamaño del objeto
Ejemplos de uso de los tipos de datos
El tipo de dato Geography es un subconjunto del Geometry, ambos soportan once objetos espaciales, de los cuales solamente 7 son instanciables.
1. Point: Es un objeto 0-dimensional representado por una localización sencilla, puede incluir los valores Z (elevación) y M (métrico)
--Ejemplo 1: Definimos un objeto del tipo Punto con un simple par de coordenadas
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT (4 4)', 0);
--Ejemplo 2: Definimos un objeto del tipo Punto con un par de coordenadas (4, 4), elevacion (5) y metrico (7.3)
DECLARE @g geometry;
SET @g = geometry::Parse('POINT(4 4 5 7.3)');
--Ejemplo 3: Consultamos los valores finales del objeto
SELECT @g.STX;
SELECT @g.STY;
SELECT @g.Z;
SELECT @g.M;
2. MultiPoint: Es una colección de cero o más puntos
--Ejemplo 1: Declaracion de un objeto geografico MultiPunto con dos coordenadas, la segunda con valor de altura
DECLARE @g geometry;
SET @g = geometry::STMPointFromText('MULTIPOINT((4 5), (6 9 2.5))', 23);
--Ejemplo 2: El objeto STGeometryN() devuelve el valor de un punto
SELECT @g.STGeometryN(1).STAsText();
3. LineString: Es un objeto de una dimensión que representa una secuencia de puntos, puede contener valores en Z y M
--Ejemplo: Instancia de LineString con tres puntos
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(2 2, 2 5, 5 7)', 0);
4. MultiLineString: Es una colección de cero o mas instancias del tipo LineString
--Ejemplo: Colección de dos objetos del tipo LineString
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 1, 1 2), (1 3, 1 5))');
5. Polygon: Es un objeto bidimesional almacenado como como una secuencia de puntos con un anillo exterior y ninguno, uno o varios interiores.
--Ejemplo: Definicion de un poligono con un hueco en el centro
DECLARE @g geometry;
SET @g = geometry::STPolyFromText('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0), (1 1, 1 2, 2 1, 1 1))', 10);
6. MultiPolygon: Es una instancia que incluye cero o mas polygonos.
--Ejemplo: Creacion de una instancia Multipoligono, consultando el WKT para el primer componente.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0), (1 1, 1 2, 2 1, 1 1)), ((8 8, 8 10, 10 8, 8 8)))');
SELECT @g.STGeometryN(2).STAsText();
7. GeometryCollection: Colección de cero o mas instancias geométricas o geográficas.
--Ejemplo: Creacion de una coleccion geometrica que incluye un punto y un poligono con valores en Z
DECLARE @g geometry;
SET @g = geometry::STGeomCollFromText('GEOMETRYCOLLECTION(POINT(3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2)))', 1);
En las siguientes 2 entregas revisaremos el significado del SRID, así como ejemplos de uso de algunos métodos y propiedades, además de explicar el uso de índices espaciales y ejemplos.
Referencias:
http://msdn.microsoft.com/en-us/library/bb933790.aspx
http://blogs.solidq.com/ES/ElRinconDelDBA/Lists/Posts/Post.aspx?ID=50
http://www.microsoft.com/events/series/msdnsqlserver2008.aspx?tab=webcasts
interesante el artículo, espero que pueda publicar las siguientes partes.
Me interesa muchísimo ya que desarrollo GIS.
Y QUE PASO CON LA PARTE 2 Y 3 ??