我在我的数据库中发现商店位置表示为geometry
数据类型。
是否可以转换为坐标lat
并将long
其用作 bing 地图的输入?
这适用于 sql server 中的几何类型
SELECT [Geometry].STX AS [Longitude],
[Geometry].STY AS [Latitude]
FROM YourTable
神奇的 8 球说“所有迹象都指向‘是’”。该文档显示了 Lat 和 Long 方法。所以,你会这样做:
select
Geometry.Lat as [Latitude],
Geometry.Long as [Longitude]
from dbo.your_table
顺便说一句,如果您有权更改该列的名称,请这样做;您不会调用数据类型为整数“int”的列。
2020 年 1 月:之前显示的格式引发了以下错误:
OperationalError: (1054, "Unknown column 'geometry_col.Long' in 'field list'")
但是,这种格式有效:
SELECT ST_X(geometry_col) AS longitude,
ST_Y(geometry_col) AS latitude
FROM yourTable;
帖子有点老了,但是...
您需要使用一些可以进行预测的资源。许多商店都可以访问 ESRI REST Geometry 服务,一个常见的公开服务是Project
.
以下是手动步骤,您可以使用普通的 DB 工具将它们重新打包到脚本/过程中:
--QA 数据来自一个名为 ShapeGeom 的 geom 已知点
select top 1 ShapeGeom.ToString(),Lat,Long from My_ADDRESS_POINTS
返回: POINT (5786835.7214864492 2235317.366254434) 35.10721420 -120.59089280
--从POINT中提取/重新格式化x,y:5786835.7214864492,2235317.366254434
--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&geometries= 5786835.7214864492%2C+2235317.366254434 &f=json
- 结果:
{
"geometries": [
{
"x": -120.59089279999577,
"y": 35.107214200388704
}
]
}
我在 .NET 中开发了一个库,可以从事务 sql 调用将 WGS84/UTM 坐标转换为纬度和经度
你可以从 github 下载它:
https://github.com/jv-garcia/UTM2LATITUDE
用法:
选择 dbo.UTM2LATITUDE(723399.51,4373328.5,'S',30) 作为纬度,dbo.UTM2LONGITUDE(723399.51,4373328.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>