Crear una columna de geografía / geometría a partir de los campos x e y - SQL Server 2008

22

Soy nuevo en SQL Server 2008 y espero que entienda mi pregunta / necesidad.

Por lo tanto, tengo una tabla que contiene 3 campos (Nombre, Lat y Largo) en mi base de datos (espacial). Quiero crear una columna de geometría / geografía basada en esos campos (Lat y Long) pero desafortunadamente sin éxito.

Mi pregunta es: ¿Cómo puedo manejar eso?

    
pregunta Tudor 01.03.2012 - 16:11

4 respuestas

33

Puedes agregar una columna calculada como esta

alter table yourTable add geographyColumn as geography::STGeomFromText('POINT('+convert(varchar(20),Long)+' '+convert(varchar(20),Lat)+')',4326)

Agregué la conversión de lng o lat porque almaceno los números Long y Lats como números.

    
respondido por el Jamo 02.03.2012 - 02:15
9

Parece que quieres el STGeomFromText() o STPointFromText() método SQL:

DECLARE @g geography;
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.ToString();

o

DECLARE @g geography;
SET @g = geography::STPointFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.ToString();

Crea tu campo Geometry o Geography , luego usa SQL para completar ese campo usando tus valores de lat / lon.

    
respondido por el Chad Cooper 01.03.2012 - 17:28
2

SQL Server 2012

Puedes hacerlo así,

SELECT geography::Point(lat, long, 4326)

Para obtener más información, consulte mi publicación en Administradores de bases de datos, "SQL Server Point Constructor o la versión de ST_Point (x, y)? "

    
respondido por el Evan Carroll 11.10.2017 - 20:41
1

Si se produce el redondeo de los valores Long / Lat originales cuando se usa la declaración CONVERT(VARCHAR, .

Intenta usar:

GeoData = geometry:: STGeomFromText('POINT(' + CAST(CAST(X AS decimal(13, 2)) AS varchar) + ' '  + CAST(CAST(Y AS decimal(13, 2)) AS varchar) + ')', 4326)
    
respondido por el Liz 20.08.2013 - 04:08

Lea otras preguntas en las etiquetas