SQL Server 几何纬度/经度

问题描述 投票:0回答:1

我正在尝试从 SQL Server 几何表中获取纬度/经度。投影是Lambert Conformal Conic,坐标系是EPSG:4269,所以需要某种投影。

我知道这只能使用第 3 方工具来完成,因此我下载了 SQL Server Spatial Tools。根据工具的文档,类似这样的东西应该可以工作,但是我得到的坐标类型是无意义的。

select @LambertConformalConic.UnprojectWithSRID('POINT (-305577.363799997 94517.064100001)',4269).ToString()

有谁知道更好的方法或工具来完成我想要的事情?这需要使用 T-SQL 完成,因此我无法使用 Pro 或其他 ArcGIS 产品。

sql-server t-sql arcgis
1个回答
0
投票

我不太明白你的代码。

UnprojectWithSRID 接受几何图形并将其转换为第二个参数 SRID,请参阅 https://github.com/microsoft/SQLServerSpatialTools/blob/master/src/Types/SQL/SqlProjection.cs#L205

因此,如果您想将转换为常规墨卡托,第二个参数可能应该是:4326。第一个参数应为 4269 SRID。但是您传递的是字符串,该字符串将转换为 SRID 为 0 的几何图形,请参阅:

select cast('POINT (-305577.363799997 94517.064100001)' as geometry).STSrid -- Returns 0

您想要的可能是在创建几何体时明确设置 SRID:

select GEOMETRY::STGeomFromText('POINT (-305577.363799997 94517.064100001)', 4269) -- Returns 4269

最终代码:

select @LambertConformalConic.UnprojectWithSRID(
  GEOMETRY::STGeomFromText('POINT (-305577.363799997 94517.064100001)', 4269),4326
 ).ToString()
© www.soinside.com 2019 - 2024. All rights reserved.