You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过T-SQL将SQL Server Geometry的兰伯特投影坐标转EPSG:4269经纬度?

解决SQL Server中兰伯特投影转EPSG:4269的T-SQL方法

你的问题核心是未正确初始化兰伯特正形圆锥投影的参数,导致SQL Server Spatial Tools的转换结果无效。以下是两种可行的T-SQL实现方案:

方案1:正确配置SQL Server Spatial Tools的投影参数

兰伯特正形圆锥投影需要明确指定一系列关键参数(标准纬线、中央经线、原点坐标等),必须与原始数据的投影定义完全匹配才能得到正确结果。

示例代码

假设你的原始数据采用的是NAD83基准下的加拿大兰伯特投影(EPSG:3347),你可以替换为实际数据的投影参数:

DECLARE @LambertConformalConic LambertConformalConic;
-- 初始化兰伯特投影对象,参数需严格匹配原始数据的投影定义
SET @LambertConformalConic = LambertConformalConic::Create(
    4269,        -- 目标地理坐标系SRID(NAD83)
    49.0,        -- 标准纬线1
    77.0,        -- 标准纬线2
    -95.0,       -- 中央经线
    63.0,        -- 原点纬度
    0.0,         -- 假东偏移
    0.0          -- 假北偏移
);

-- 执行投影转换
SELECT @LambertConformalConic.UnprojectWithSRID('POINT (-305577.363799997 94517.064100001)', 4269).ToString();

关键注意事项

  • 必须从数据元数据或提供者处获取原始投影的精确参数,参数不匹配会导致坐标完全失真。
  • 如果原始数据的SRID已在EPSG数据库中注册,可以直接通过EPSG代码查询对应的投影参数。

方案2:利用SQL Server原生空间函数(需SRID已注册)

如果原始数据的投影SRID已在SQL Server的空间参考系统中注册,可以直接通过Geometry转Geography后调用STTransform完成转换:

示例代码

-- 假设你的表名为your_table,几何字段为geom,原始投影SRID为3347
SELECT 
    geography::STGeomFromText(geom.STAsText(), 3347)
        .STTransform(4269)
        .ToString() AS nad83_coords
FROM your_table;

关键注意事项

  • 如果原始投影的SRID未在SQL Server中注册,需要先通过sys.sp_addextendedproperty手动添加空间参考定义,否则STGeomFromText会报错。

内容的提问来源于stack exchange,提问作者MWInCO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:33:15