Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为SQL Server 2012及更新版本使用凸包_Sql_Sql Server_Geospatial_Convex Hull_Spatial Query - Fatal编程技术网

如何为SQL Server 2012及更新版本使用凸包

如何为SQL Server 2012及更新版本使用凸包,sql,sql-server,geospatial,convex-hull,spatial-query,Sql,Sql Server,Geospatial,Convex Hull,Spatial Query,我正努力在互联网上找到一个直截了当的答案。希望有人能帮我解决这个问题 我有一个带有经度和纬度的客户位置数据集。每个客户都是销售区域的一部分。下面是我拥有的数据头的一个示例 表1: SalesTerritory ----- Customer ----- Longitude ----- Latitude 我正在尝试创建一个sql查询,该查询将在Sales Territory详细级别围绕这些区域进行凸包查询。我的最终目标是使用地图上的输出显示销售区域 谢谢你的帮助 将lat/lng转换为

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

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

表1:

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


谢谢你的帮助

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

;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到地理数据类型的转换更容易:除了“Good point”之外,我还能说什么呢!这太棒了。非常感谢。如果我有一个自定义坐标系,我需要将4326更改为什么?SQL Server支持EPSG坐标系,因此如果您有一个自定义坐标系,那么您就不会有SQL可以理解的SRID。建议您查看EPSG系统以获得最佳匹配。感谢您提供有关如何进行此操作的指导。我如何向凸面外壳添加缓冲区?因此,创建的多边形在最外面的点周围有一个15英里的缓冲区?