You are on page 1of 8

Los datos espaciales (Spatial Data) es una de las nuevas caractersticas del SQL Server 2008, el

cual consiste en la capacidad de manipular informacin referente al posicionamiento geogrfico,


en el presente artculo presentaremos algunas de las formas de entender y utilizar dicha
tecnologa.
Donde se puede aprovechar esta tecnologa?
Algunas ideas de aplicacin de esta tecnologa

Un banco, puede mostrar en su sitio web la localizacin de las sucursales ms prximas a


un cdigo postal
La bsqueda 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 mviles pueden localizar establecimientos cercanos a la ubicacin actual,
como hoteles, restaurantes, centros de entretenimiento o gasolineras
Una compaa puede establecer regiones geogrficas de ventas y usarlas para realizar
diversos anlisis
Algunos ejemplos de segmentos de anlisis
Informacin enfocada al consumidor y basada en la localizacin
Desarrollo y administracin basada en el cliente
Planificacin, anlisis y datos relacionados con el entorno geogrfico
Anlisis econmicos y financieros en comunidades
Anlisis de desarrollo de planes gubernamentales
Anlisis de segmentacin de mercado
Anlisis, estudio e investigacin de diseo
Anlisis y desarrollo de inmobiliarias
Modelos de ubicacin espacial y sus tipos de datos
1. Modelo Geodsico, este se determina con la representacin 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

Modelo Geodesico
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

Modelo Planar
Los tipos de datos Geography y Geometry son implementados como SQLCLR UDT, que determina
que los tipos de datos tienen propiedades y mtodos para realizar operaciones espaciales entre
las cuales mencionamos el encontrar intersecciones, calcular distancias, entre otras, de las
cuales veremos ms detalle.
Diferencias entre el modelo Geodsico 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
Geodsico 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
geodsico el sentido, define el tamao 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.

Objetos Spatial Data


1. Point: Es un objeto 0-dimensional representado por una localizacin sencilla, puede incluir los
valores Z (elevacin) y M (mtrico)

--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 coleccin de cero o ms 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 dimensin 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 coleccin de cero o mas instancias del tipo LineString

--Ejemplo: Coleccin 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: Coleccin de cero o mas instancias geomtricas o geogrficas.

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

Continuamos con el soporte para datos espaciales de SQL Server. En la primera parte vimos una
breve introduccin a los tipos geometry y geography, en la que explicbamos cmo almacenar este
tipo de informacin en nuestra base de datos y cmo llevar a cabo operaciones sencillas mediante
las funciones espaciales que ofrece SQL Server. En esta segunda parte veremos cmo importar
informacin geogrfica desde una fuente externa, centrndonos en los datos en formato shapefile.
Para llevar a cabo esto utilizaremos la herramienta gratuita Shape2SQL.

Fuentes de informacin espacial


En la Red existen multitud de empresas y organismos, tanto pblicos como privados, que ofrecen
todo tipo de informacin geogrfica. La calidad de esta informacin vara mucho, pero en general
no resulta complicado obtener datos fiables sobre ncleos urbanos, carreteras, ros, fronteras, etc.
Si combinamos esta informacin con nuestros propios datos podemos obtener resultados muy
interesantes como por ejemplo distribuciones geogrficas de ventas, seguimiento de envos, etc.
Algunos de los de organismos internacionales desde los que podemos descargar informacin
espacial gratuita son por ejemplo la Organizacin de las Naciones Unidas (ONU) a travs de su
portal Geo Data, o la Agencia Europea de Medio Ambiente (EEA) mediante su servicio de datos y
mapas.
En el caso de Espaa, una de las principales fuentes es el Instituto Geogrfico Nacional (IGN). Se
trata de un organismo pblico que, entre otras cosas, es el responsable de la elaboracin del Atlas
Nacional de Espaa. El IGN ofrece un amplio catlogo de ficheros con informacin geogrfica
actualizada que podemos descargar de manera gratuita para uso no comercial.

ESRI Shapefile

La informacin espacial que podemos encontrar en Internet se puede presentar en


diferentes formatos: ficheros de texto, XML, KML, shapefile, etc. De todos ellos, el
formato shapefile desarrollado por la empresa ESRI es uno de los ms
populares. Diseado originalmente para la aplicacin Arc View GIS, se ha convertido en un
estndar para el intercambio de informacin geogrfica. Se trata de un formato vectorial
multiarchivo (incluye ficheros con extensiones: SHP, SHX, DBF y PRJ) en el que se definen puntos,
lneas y polgonos. Esta informacin puede ser importada a una tabla de SQL Server como
veremos a continuacin.

Importar datos con Shape2SQL


Shape2SQL es una excelente herramienta gratuita desarrollada por Morten Nielsen que nos
permite importar directamente ficheros shapefile a SQL Server de manera sencilla. A continuacin
veremos paso a paso cmo hacer esto.
Lo primero que haremos ser descargar la aplicacin Shape2SQL desde el siguiente enlace. El
resultado de esta descarga ser un fichero ZIP con diferentes utilidades entre ellas Shape2SQL.
Esta aplicacin no requiere instalacin, podremos ejecutarla directamente una vez descomprimido
el fichero.

A continuacin descargaremos la informacin geogrfica que nos interese. Para ilustrar este
artculo vamos a trabajar con labase cartogrfica nacional BCN200 del IGN, disponible para su
descarga gratuita para uso no comercial previo registro en su sitio Web. Los
ficheros shapefile correspondientes se pueden obtener desde el centro de descargas en el
apartado "bsqueda avanzada" seleccionando como producto BCN200. En este ejemplo vamos a
trabajar con los datos disponibles para la provincia de Cdiz.
El siguiente paso ser ejecutar la aplicacin Shape2SQL para realizar la importacin de datos. La
primera vez que ejecutemos esta herramienta tendremos que indicar el servidor SQL Server 2008 y
la base de datos en el que guardaremos la informacin espacial importada.

En la siguiente ventana indicaremos el shapefile que queremos importar, en nuestro caso ser el
fichero BCN200_0101S_LIM_ADM.shp cuyo contenido son los lmites administrativos de la
provincia de Cdiz. En esta pantalla encontramos adems una serie de opciones entre las que
destacan el nombre de la tabla, el nombre y tipo de columna espacial (en este caso
ser geography) y el SRID que en en el caso del fichero BCN200 ser el correspondiente a
ETRS89 (identificador 4258). Una vez completada esta informacin procederemos a la importacin
pulsando el botn "Upload to Database".

Cuando finalice el proceso podremos comprobar que los datos se han cargado correctamente
haciendo una sencilla consulta como la siguiente:
?

SELECT geog FROM limites_cadiz

Una vez ejecutada, si seleccionamos la pestaa "Resultados Espaciales" podremos ver la


representacin de los datos espaciales importados del fichero shapefile.

Trabajando con los datos importados


Aparte del shapefile con los lmites administrativos, el archivo ZIP que hemos descargado del IGN
contiene otros ficheros con informacin relativa a carreteras, ncleos urbanos, etc. Estos ficheros
pueden importarse del mismo modo que vimos en el apartado anterior, cada uno en su tabla
correspondiente. Si importamos por ejemplo los datos correspondientes a poblaciones y carreteras
podremos realizar consultas como la que se muestra a continuacin, cuyo resultado ser un mapa
en el que se superponen las tres capas importadas (lmites administrativos, poblaciones y
carreteras nacionales).
?

1
2
3
4
5

SELECT geog,etiqueta from limites_cadiz


UNION ALL
SELECT geog,etiqueta from nucleos_urbanos_cadiz
UNION ALL
SELECT geog,etiqueta from carreteras_nacionales_cadiz

La informacin que acabamos de importar tambin nos sirve para poner en prctica las funciones
espaciales que vimos en el artculo anterior. As por ejemplo, si ejecutamos la siguiente consulta
obtendremos el rea en kilmetros cuadrados de los diferentes trminos municipales de la
provincia.
?

1
2
3

SELECT etiqueta, geog.STArea()/1000000 AS area


FROM limites_cadiz
ORDER BY area DESC

http://fnunezsanchez.com/post/2011/12/02/Datos-espaciales-en-SQL-Server-parte-2-importardatos.aspx

You might also like