[英]C# geography column in datatable
我在 C# 中有一個數據表,我想添加一列以地理格式存儲緯度和經度坐標,然后在 SQL Server 中進行批量復制。
我應該以什么格式為此創建數據列?
我們必須使用位於“C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Types.dll”下的參考 DLL:
using Microsoft.SqlServer.Types;
之后,我們可以在 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);
每列的類型應與Decimal(9,6)
的類型相似,其中長度為9
,精度為6
。 因此允許最大值可以是180°
如果你想變得非常挑剔,它實際上可能是。
緯度: Decimal(8,6)
(赤道以北或以南 90° 至 0 的最大值)
經度: Decimal(9,6)
(最大值為 180° 至 -180°)
C#中的十進制格式
###.######
如果要將它們組合在一起,則需要使用nvarchar(25)
(它可能小於 25,但它為帶有格式的復制留出了空間)。 至於確切的批量復制聲明,您需要提供數據樣本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.