我在弄清楚如何在坐标类型之间进行转换时遇到了一点麻烦。我有一个坐标集列表,其中包含以下描述。我一直在四处搜索,确实找到了一些代码来执行此操作,但它没有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
我抽查了许多地点,他们都在那里。