数据表中的c#地理列
我在c#中有一个数据表,我想添加一列以地理格式存储纬度和经度坐标,然后在sql server中进行批量复制。我应该以什么格式为此创建datacolumn?您能为我指点一下吗?每一列都应该是类似于数据表中的c#地理列,c#,sql-server,c#-4.0,C#,Sql Server,C# 4.0,我在c#中有一个数据表,我想添加一列以地理格式存储纬度和经度坐标,然后在sql server中进行批量复制。我应该以什么格式为此创建datacolumn?您能为我指点一下吗?每一列都应该是类似于十进制(9,6)的类型,其中长度为9,预测值为6。因此,允许最大值为180° 如果你真的想挑三拣四的话,其实也可以 纬度:十进制(8,6)(赤道以北/以南最大90°) 经度:十进制(9,6)(最大180°到-180°) C语言中的十进制格式# 。 编辑:按评论。如果要将它们组合在一起,则需要使用nvarc
十进制(9,6)
的类型,其中长度为9
,预测值为6
。因此,允许最大值为180°
如果你真的想挑三拣四的话,其实也可以
纬度:十进制(8,6)
(赤道以北/以南最大90°)
经度:十进制(9,6)
(最大180°到-180°)
C语言中的十进制格式#
。
编辑:按评论。如果要将它们组合在一起,则需要使用
nvarchar(25)
(可以小于25,但留出空间进行格式复制)。至于确切的bulkcopy语句,您需要提供一个数据样本。我们必须使用位于
“C:\Program Files(x86)\Microsoft SQL Server\100\SDK\Assembly\Microsoft.SqlServer.Types.dll”
之后,我们可以在datatable中创建列,存储一些数据,并通过bulkcopy成功地将它们发送到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);
嗨,尼科!我如何组合Lat的两列,以便通过bulkcopy将其存储在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);