2014-01-09 25 views
1

我在c#中有一個數據表,並且我想添加一列來存儲地理格式的經度和緯度座標,然後在sql server中批量複製。我應該以什麼格式爲此創建數據列?你能指導我嗎?在數據表中的c#geography列

回答

3

我們必須使用位於 下參考DLL 「C:\ Program Files文件(x86)的\ Microsoft SQL Server的\ 100 \ SDK \組件\ Microsoft.SqlServer.Types.dll」

using Microsoft.SqlServer.Types; 

之後,我們可以創建數據表中的列,存儲一些數據,併成功通過批量發送將它們發送到sql服務器

DataTable dataTable = new DataTable(); 
dataTable.Columns.Add("Geom", typeof(SqlGeometry)); 

DataRow newRow = datatable.NewRow(); 
newRow["Geom"] = SqlGeometry.Point(lat, lon, 4326); 

datatable.Rows.Add(newRow); 

SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection); 
sqlBulkCopy.DestinationTableName = "MySpatialDataTable"; 
sqlBulkCopy.WriteToServer(dataTable); 
0

每列的類型應該與Decimal(9,6)類似,其中您的長度爲9,預編號爲6。因此,允許的最大值可能是180°

如果你想得到真正的挑剔,它實際上可能是。

緯度:​​(90°最大赤道0北\南)

經度:Decimal(9,6)(180°最大至-180°)在C#

十進制格式

###.######

編輯:每個評論。如果你想將它們結合在一起,你將需要使用一個nvarchar(25)(可能小於25,但留下格式化複製空間)。至於確切的批量複製聲明,您需要提供數據樣本。

+0

嗨尼科!我怎樣才能將Lat,Long的兩列結合起來,通過批量拷貝將它存儲在sql geography列中? – George

+0

@George更新每個評論的問題。 – Nico