Tipo de datos Geography en SQL Server - Parte I

  • RSS
  • Add To My MSN
  • Add To Windows Live
  • Add To My Yahoo
  • Add To Google

Statistics

  • Entries (18)
  • Comments (14)
Posted by Pavel Espitia Monday, June 25, 2012 8:32:00 PM Categories: SQL Server
Rate this Content 4 Votes

Geography es un tipo de dato espacial, y está implementado como un tipo de datos CLR en SQL Server, es decir es una clase administrada. Este tipo representa datos en un sistema de coordenadas de la tierra, la cual almacena datos elípticos como latitud y longitud.

En este post veremos como trabajar y usar este tipo de dato, primero que todo debemos crear una tabla para llevar a cabo nuestras pruebas, la vamos a llamar “MisRutas” y en nuestro ejemplo servirá para almacenar nuestras ubicaciones importantes:

CREATE TABLE MisRutas
(
ID [decimal](18, 0) IDENTITY(1,1) NOT NULL,
Nombre [varchar](250) NOT NULL,
Ubicacion [geography] NOT NULL
)

Como vemos la tabla consta de 3 columnas, ID de nuestra ruta, Nombre de nuestra ruta y la ubicación de la ruta esta última columna de tipo geography, en este punto al tener nuestra tabla ya creada solo debemos ingresar la información debemos tener en cuenta que la posición espacial es X,Y de modo (Longitud y Latitud) y para convertir nuestros datos hay que usar métodos propios de geography que podemos encontrar en http://msdn.microsoft.com/en-us/library/bb933988.aspx para nuestro ejemplo crearemos varios registros en nuestra tabla usando estos 4 métodos: STPointFromText, STGeomFromText, Point, Parse.

-STPointFromText:

Nos devuelve una instancia de geography a partir de una representación Well-Known Text especificando sus valores de elevación y medida, su forma de uso es la siguiente:

STPointFromText ( 'point_tagged_text' , SRID )

'point_tagged_text' es nuestra representación del punto geográfico, es una expresión de tipo nvarchar.

SRID (Spatial Reference ID) representa el identificador de referencia espacial de la referencia que se va a devolver, para nuestro caso usaremos el del planeta tierra que es es World Geodetic System 1984 (WGS 84) y su valor es 4326 de acuerdo a la tabla de SQL Server sys.spatial_reference_systems.

Con este método y parámetros ya explicados el insert sería algo así:

INSERT INTO MisRutas
(
Nombre,
Ubicacion
)
VALUES
(
'Reino Unido',
Geography::STPointFromText('POINT(-1.5820 53.7487)',4326)
)

-STGeomFromText:

STGeomFromText ( 'geography_tagged_text' , SRID )

Esta es otra manera de crear puntos geográficos y de la misma manera que el método STPointFromText devuelve una instancia de geography a partir también de una representación (WKT), a diferencia del método anterior STGeomFromText puede recibir siete objetos de datos espaciales (POINT, POLYGON, LINESTRING, MULTIPOINT, MULTIPOLYGON, MULTILINESTRING y GEOMETRYCOLLECTION).

Con esta explicación crearemos un registro donde en vez de agregar un solo punto vamos a crear un LINESTRING con varios puntos así:

INSERT INTO MisRutas
(
Nombre,
Ubicacion
)
VALUES
(
'Domingo en Bicicleta',
Geography::STGeomFromText('LINESTRING(-114.6094 43.7076, -111.7969 42.6824, -113.3789 40.1789)',4326)
)

Como podemos ver para el objeto LINESTRING estamos enviándole 3 puntos geográficos.

segunda parte

Comments

Comments are closed on this post.
© 2009 - 2013 Avanet