【问题标题】:How to use Convex Hull for SQL Server 2012 and newer如何在 SQL Server 2012 及更高版本中使用 Convex Hull
【发布时间】:2019-11-25 20:45:51
【问题描述】:

我很难在互联网上找到一个直截了当的答案。希望有人能帮我解决这个问题。

我有一个包含经度和纬度的客户位置数据集。每个客户都是销售区域的一部分。下面是我拥有的数据标题的示例。

表1:

SalesTerritory  -----  Customer -----   Longitude  -----  Latitude

我正在尝试创建一个 sql 查询,该查询将在销售区域详细信息级别围绕这些区域进行凸包。我的最终目标是使用地图上的输出来显示销售区域。

感谢您的帮助!

【问题讨论】:

    标签: sql sql-server geospatial convex-hull spatial-query


    【解决方案1】:

    将 lat/lng 转换为地理(或几何)值,然后使用 ConvexHullAggregateSalesTerritory 级别聚合。

    ;with geog_cte as
    (
        SELECT SalesTerritory, geography::Point([Longitude], [Latitude], 4326) as customer_geog
        from Table1
    )
    SELECT SalesTerritory , geography::ConvexHullAggregate(customer_geog) as territory_convex_hull
    FROM geog_cte 
    group by SalesTerritory  ;
    

    【讨论】:

    • 我会指出 (!!) 有一种“扩展”方法可以更轻松地从 lat/long 转换为地理数据类型:docs.microsoft.com/en-us/sql/t-sql/spatial-geography/…
    • 除了“好点”我还能说什么!
    • 这太棒了。谢谢!如果我有自定义坐标系,我需要将 4326 更改为什么?
    • SQL Server 支持 EPSG 坐标系,因此如果您有自定义坐标系,那么您将不会拥有 SQL 能够理解的 SRID。建议您查看 EPSG 系统以获得最佳匹配。
    • 感谢您提供有关如何执行此操作的指导。我将如何向凸包添加缓冲区?这样创建的多边形在最外面的点周围有 15 英里的缓冲区?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2012-05-17
    • 2016-06-10
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多