gpt4 book ai didi

以英里计算的 SQL Server 几何距离?

转载 作者:行者123 更新时间:2023-12-01 06:22:37 27 4
gpt4 key购买 nike

  • 系统:SQL Server 2008 R2
  • 两个几何变量,SRID 4326。

  • 来自 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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com