如何在 SQL Server 中将 wgs 84 转换为经度/经度



我在弄清楚如何在坐标类型之间进行转换时遇到了一点麻烦。我有一个坐标集列表,其中包含以下描述。我一直在四处搜索,确实找到了一些代码来执行此操作,但它没有SQL查询。

"坐标始终在WGS84系统中。所有坐标 a 表示为十进制值 x 和 y。

举个例子:

Ellipsoid:
wgs84 (world geodetic system 1984)
UTM Zone:
39 - 48E to 54E
UTM Projection:
X, m: 702964.0000     ------->   latitude : 27.7818550282488
Y, m: 3074740.0000    ------->   longitude : 53.0598812425032

查询应为 SQL Server Query。

好吧,我需要将它们转换为长/纬度
任何人都可以提供一些代码来执行此操作?

这是一个数据库<>小提琴。

您可能可以使用上一个答案中的UF_utm_to_lat()函数。

向东向北到经度纬度

我还没有找到合适的 t-sql 代码,所以我终于在 .NET 中开发了一个库,可以从事务处理 sql 调用 将 WGS84/UTM 坐标转换为纬度和经

度你可以从github下载它:

https://github.com/j-v-garcia/UTM2LATITUDE

usage:
SELECT dbo.UTM2LATITUDE(723399.51,4373328.5,'S',30) AS Latitude, dbo.UTM2LONGITUDE(723399.51,4373328.5,'S',30) AS Longitude
result: 
39,4805657453054    -0,402592727245112
<param name="XUTM">pos UTM X</param>
<param name="YUTM">pos UTM Y</param>
<param name="LatBand">Latitude band grid zone designation letter (see http://www.dmap.co.uk/utmworld.htm) </param>
<param name="LongBand">Longitude band grid zone designation number (see http://www.dmap.co.uk/utmworld.htm) </param>

这个T-SQL改编自Xander Bakker在ESRI提供的一些JavaScript代码(用你自己的地理形状字段替换[column_name](。

180.0 / PI() * (2.0 * ATAN(EXP(([column_name].Shape.STY / (2.0 * PI() * 6378137.0 / 2.0) * 180.0) * PI() / 180.0)) - PI() / 2.0) as Latitude, -- Convert Y to Latitude
([column_name].Shape.STX / (2.0 * PI() * 6378137.0 / 2.0) * 180.0)  as Longitude, -- Convert X to Longitude

我抽查了许多地点,他们都在那里。

最新更新