2008-11-25 78 views
1

我非常確定這不是正確的方法,因此我正在尋找一些建議。在SQL 2008中使用變量返回多個記錄

我不認爲我的問題太多了,我試圖解決一個空間問題。我只是不確定採取經緯度並在選擇語句中返回地理數據類型的好方法。我已經成功創建了一個地理列,然後輸入數據。

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 

回答

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作爲一組數據使用

1

幾何類型只能用於投影數據。由於您已經有未投影的經緯度數據,您應該使用地理類型。此外,還有一種創建點的靜態方法:

SELECT geography::Point(t.lat, t.lon, 0) FROM yourtable t