数据表中的c#geography列

时间:2014-01-09 23:12:36

标签: c# sql-server c#-4.0

我在c#中有一个数据表,我希望在此之后添加一个列以将地理格式的纬度和经度坐标存储到sql server中的批量复制。我应该以什么格式为此创建数据列?你能指导我吗?

2 个答案:

答案 0 :(得分:5)

我们必须使用位于下面的引用dll “C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ SDK \ Assemblies \ Microsoft.SqlServer.Types.dll”

using Microsoft.SqlServer.Types;

之后我们可以在datatable中创建列,存储一些数据并通过批量复制成功发送到sql server

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);

答案 1 :(得分:0)

每列应与Decimal(9,6)类似,其中9的长度和6的精确度。因此允许最大值可以是180°

如果你想真正挑剔它实际上可能是。

纬度:Decimal(8,6)(最大值为90°到0°北纬\赤道以南)

经度:Decimal(9,6)(最大180°至-180°)

C#中的十进制格式

###.######

编辑:每条评论。如果您要将它们组合在一起,则需要使用nvarchar(25)(可能小于25,但会留下复制格式的空间)。至于确切的批量复制声明,您需要提供数据样本。