簡體   English   中英

數據表中的 C# 地理列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM