1

我很确定这不是正确的方法,所以我正在寻找一些建议。

我不认为我的问题是我试图解决空间问题。我只是不确定在选择语句中获取纬度和经度并返回地理数据类型的好方法。我已经成功创建了一个地理列并输入了数据。

Use thedatabase;
GO
Declare @Lat numeric(11,6)
Declare @Long numeric(11,6)
DECLARE @g geometry;




Select @Lat = Latitude, @Long = Longitude
from dbo.thetable

set @g = geometry::STGeomFromText('POINT (' + Cast(@Lat as varchar(30)) + ' ' + CAST(@Long as varchar(30)) + ')', 0);


select @g
4

2 回答 2

1

你能澄清你想做什么吗?

如果问题与使用文本有关 - 据我了解,WKT 格式在这里很正常,所以不是问题。

如果要返回多个几何值,例如:

SELECT geometry::STGeomFromText('POINT (' + CAST(Latitude as varchar(30))
     + ' ' + CAST(Longitude as varchar(30)) + ')', 0)
FROM dbo.thetable

如果您想使用多个几何图形,请声明一个表变量并插入此类查询的结果:

DECLARE @data TABLE (location geometry)
INSERT @data (location)
SELECT geometry::STGeomFromText('POINT (' + CAST(Latitude as varchar(30))
     + ' ' + CAST(Longitude as varchar(30)) + ')', 0)
FROM dbo.thetable

并使用@data 作为一组数据

于 2008-11-28T09:03:42.933 回答
1

几何类型应仅用于投影数据。由于您已经有未投影的纬度/经度数据,您应该改用地理类型。此外,还有一种创建点的静态方法:

SELECT geography::Point(t.lat, t.lon, 0) FROM yourtable t
于 2009-02-01T13:22:55.093 回答