无法将 SSMS 中的列转换为地理数据类型

Unable to convert column in SSMS to data type geography

我目前有一项任务需要比较特定位置的经纬度距离,我有一个 Excel 电子表格,其中包含大量经纬度数据,需要将这些数据类型转换为geography.

问题是,在找出距离之前,我需要将列转换为 geography。我尝试使用 SSMS 的导入向导,但不幸的是,我没有将数据类型更改为地理的选项。将数据类型设置为 decimal 并尝试手动更改会出现错误:

Explicit conversion from data type decimal to Test.sys.geography is not allowed.

我想手动创建一个 table,但问题是纬度和经度的行数很大。

请协助我将列转换为 geography

将您的 Excel 电子表格作为工作 table 导入,然后制作 INSERT INTO SELECT that transform to geometry you decimal

看看这里对你有帮助:

您可以创建一个名为 GeoLocation 的新列,它将把经纬度列转换为地理信息。也许您可以将此列创建为计算列。

ALTER TABLE [dbo].[Your Table Name]
ADD [GeoLocation] GEOGRAPHY

然后使用以下 SQL 查询更新此列

UPDATE [dbo].[Your Table Name]
SET [GeoLocation] = geography::STPointFromText('POINT(' + CAST([Longitude] AS VARCHAR(20)) + ' ' + 
                    CAST([Latitude] AS VARCHAR(20)) + ')', 4326)

可以在此处找到更多详细信息link http://www.sql-server-helper.com/sql-server-2008/convert-latitude-longitude-to-geography-point.aspx

https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/point-geography-data-type?view=sql-server-ver15