Sql server 将几何图形转换为lat和long

Sql server 将几何图形转换为lat和long,sql-server,Sql Server,我在数据库中发现,商店位置表示为geometrydatatype 是否可以转换为lat和long坐标,并将其用作bing地图的输入 魔法8号球上写着“所有的符号都指向‘是’”。显示Lat和Long方法。那么,你应该: select Geometry.Lat as [Latitude], Geometry.Long as [Longitude] from dbo.your_table 顺便说一句,如果你有权更改该列的名称,请这样做;您不会调用数据类型为整数“int”的列。这适用于s

我在数据库中发现,商店位置表示为
geometry
datatype

是否可以转换为
lat
long
坐标,并将其用作bing地图的输入

魔法8号球上写着“所有的符号都指向‘是’”。显示Lat和Long方法。那么,你应该:

select 
   Geometry.Lat as [Latitude],
   Geometry.Long as [Longitude]
from dbo.your_table

顺便说一句,如果你有权更改该列的名称,请这样做;您不会调用数据类型为整数“int”的列。

这适用于sql server中的几何体类型

SELECT  [Geometry].STX AS [Longitude],
    [Geometry].STY AS [Latitude]
FROM YourTable

这篇文章有点旧,但是

你需要使用一些可以做预测的资源。许多商店都可以使用ESRI REST Geometry服务,常见的公开服务是
Project

以下是手动步骤,您可以使用普通数据库工具将其重新打包到脚本/过程中:

--来自geom命名为ShapeGeom的已知点的QA数据

select top 1 ShapeGeom.ToString(),Lat,Long from My_ADDRESS_POINTS
返回值:点(5786835.7214864492 2235317.366254434)35.10721420-120.59089280

--从点5786835.72148644922235317.366254434提取/重新格式化x,y

--REST呼叫-您的路径将不同

--Use inSR with the SRID of your Geometry data
select top 1  ShapeGeom.STSrid from  My_ADDRESS_POINTS 
--http???/rest/services/Utilities/Geometry/GeometryServer/project?inSR=2229&outSR=4251&Geometry=5786835.7214864492%2C+2235317.366254434&f=json

--结果:

2020年1月:之前显示的格式引发以下错误:

操作错误:(1054,“字段列表”中的“未知列”几何图形\u col.Long)

但是,这种格式有效:

SELECT ST_X(geometry_col) AS longitude,
       ST_Y(geometry_col) AS latitude
FROM yourTable;

我在.NET中开发了一个库,可以从transact-sql调用它,将WGS84/UTM坐标转换为纬度和经度

您可以从github下载:

用法:

选择dbo.utm2纬度(723399.514373328.5,'S',30)作为纬度,选择dbo.utm2经度(723399.514373328.5,'S',30)作为经度

结果:

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>
39480565753054-0402592727245112
位置UTM X
位置UTM Y
纬度带网格区指定字母(参见http://www.dmap.co.uk/utmworld.htm) 
经度带栅格区域标识号(参见http://www.dmap.co.uk/utmworld.htm) 

他说的是几何数据类型而不是地理。那么,除了占卜就没有别的办法了。也就是说,几何体数据类型没有任何固有的东西表明它在地球上的位置。这是将地理数据类型用于地理数据的一个非常有说服力的原因。这些属性用于地理,而不是地理geometry@AnasAL-zghoul-是的。而且,还要使用正确的数据类型。如果数据表示地理数据(纬度和经度是有意义的概念),请使用地理数据类型。如果您决定使用几何图形来表示该数据,请提取输入的属性。也就是说,选择将纬度存储为x或y坐标,另一个存储为经度。与创建数据的人交谈,询问选择是什么,并根据需要提取。STX是经度而不是纬度。
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>