【发布时间】:2015-04-07 14:28:17
【问题描述】:
更新:这已报告给 Microsoft。
在一个简单的 (SQL Server 2012) 表中,该表具有一个 geography 列(名称 geopoint),其中填充了一些与此类似的简单行点。 POINT (-0.120875610750927 54.1165118880234)等正在执行
select [geopoint].[STAsText](),
[geopoint].Lat lat,
[geopoint].Long long
from mytable
产生这个
Untitled1 lat long
POINT (-0.120875610750927 54.1165118880234) 54.1165118880234 -0.120875610750927
这看起来像一个错误,但它太基础了,应该在发布之前就被捕获。那我做错了吗?
添加信息
IT 专业人员应在 MSDN 上查找 Microsoft 实施 SQL Server 的详细信息。因为实施上可能存在差异。按照这个案例。为了证明这一点,我刚刚检查了 PostGist 的 ST_AsText 实现以获取 geographic 列。这很好用!结果正如人们所期望的那样。因此,该错误在 SQL 的实现中。上面例子的正确结果应该是
POINT (54.1165118880234 -0.120875610750927 ) 54.1165118880234 -0.120875610750927
我敢说很有可能还有其他与工作geographic 列的函数相关的错误。由于该领域的基本功能尚未经过全面测试。
【问题讨论】:
-
为什么你认为有一些错误,我觉得很好!
-
“我做错了吗?” - 猜测一下,您假设
POINT的参数是纬度后经度,而不是经度后纬度。 -
当显示 [geopoint].[STAsText]() Lat 和 Long 应该是其他方式。我仔细检查了地理点和几何点的 STAsText() 返回值。对于几何点,根据 STX 和 STY 属性扩展,返回的值是正确的。对于地理点 [STAsText]() 返回错误的 POINT 值。它应该是 POINT (lat, long) 这是一个我会报告的错误。
-
好的。我们会尝试用另一种方式说出来。看
STPointFromText中的例子:SET @g = geography::STPointFromText('POINT(-122.34900 47.65100)', 4326);。如果您可以向我提供显示该点在地球上位置的地图链接(如您所声称的,在-122的纬度),那么您可能有一个点。 -
@Farjad - 我已经向您指出了一个示例,其中使用
-122.34900的第一个参数从 众所周知的文本构造地理。你认为这个点在地球上的什么地方? WKT 中的约定是long lat,而不是lat long。这与您可能期望的约定不同,但它不是 一个错误。它可能表明因为您假设它是lat long,所以您输入的数据不正确。
标签: sql-server geospatial