在 SQL Server 中精确计算地理点之间的距离
地图坐标之间准确的距离计算至关重要。 虽然某些公式提供近似值,但 SQL Server 的内置功能提供卓越的精度。
利用 SQL Server 的 geography
数据类型(SQL Server 2008 及更高版本)
geography
数据类型(在 SQL Server 2008 及更高版本中可用)为计算距离提供了强大的解决方案。 方法如下:
<code class="language-sql">DECLARE @source geography = 'POINT(0 51.5)' DECLARE @target geography = 'POINT(-3 56)' SELECT @source.STDistance(@target)</code>
此查询返回以米为单位的距离。
将 geography
类型与现有数据集成
如果您正在使用已建立的数据库模式,则可以无缝集成 geography
类型。 Point
方法有助于实现这一点:
<code class="language-sql">DECLARE @orig_lat DECIMAL(12, 9) DECLARE @orig_lng DECIMAL(12, 9) SET @orig_lat=53.381538; SET @orig_lng=-1.463526; DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326); SELECT *, @orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326)) AS distance FROM #orig dest;</code>
此示例保留现有数据结构,同时利用 geography
数据类型的准确性进行距离计算。
以上是SQL Server如何准确计算两个经纬度点之间的距离?的详细内容。更多信息请关注PHP中文网其他相关文章!