来自
STDistance
的返回值以度为单位,但我需要英里。此外,想象一下不是对 2 个变量进行这种计算,而是对具有 1000 行的表中的几何列进行计算。什么是最快的解决方案? SQL Server 2012、2014、2016 中是否有任何内置内容......?--Geometry
DECLARE @Point2m geometry = geometry::STGeomFromText('POINT(-80.23 26.2)', 4326),
@Point3m geometry = geometry::STGeomFromText('POINT(-80.229999999515712 26.193699999712408)', 4326)
SELECT @Point2m.STDistance(@Point3m) /* degrees */
GO
--Geography, for comparison
DECLARE @Point2g geography = geography::STGeomFromText('POINT(-80.23 26.2)', 4326),
@Point3g geography = geography::STGeomFromText('POINT(-80.229999999515712 26.193699999712408)', 4326)
SELECT @Point2g.STDistance(@Point3g) / 1609.344 /*meters to miles*/
GO
最佳答案
这可以用作 SP 的模板:
声明@geostart 地理
声明@geoend 地理
选择@geostart =
选择@geoend =
SELECT CAST(@geostart.STDistance(@geoend)/1609.344 AS DEC (8,1)) AS [以英里为单位的距离]
如果要计算多行 (table_a) 到另一个表 (table_b) 中特定地理值(键列值 = 100)的距离(以英里为单位),您可以使用以下方法:
选择
,'miles'= CAST(table_a_geo.STDistance(table_b_geo)/1609.344 AS DEC (8,1))
从表_a
JOIN table_b ON table_b_id = 100
关于以英里计算的 SQL Server 几何距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922039/