Sql server 从一组(横向/纵向)点计算点的凸包
我正在使用Google Map开发一个web应用程序,我希望通过创建一组给定地理坐标/点的多边形覆盖来显示“覆盖区域”/“地理区域” “覆盖区域”可以由存储在SQLServer表中的数千个地理坐标经纬度数据组成。理想情况下,我希望从sql server数据库2008 R2计算凸面外壳点,以便将结果点传递到Google地图以创建多边形覆盖 这里的示例正是我所要寻找的,只是如果可能的话,我想直接从SQL server获取右面板上的外壳点。原因是我可能需要处理数千个地理坐标。我不希望从数据库中检索大量数据,然后使用JavaScript发送到客户端以计算凸包点 任何帮助都将不胜感激Sql server 从一组(横向/纵向)点计算点的凸包,sql-server,google-maps,polygon,Sql Server,Google Maps,Polygon,我正在使用Google Map开发一个web应用程序,我希望通过创建一组给定地理坐标/点的多边形覆盖来显示“覆盖区域”/“地理区域” “覆盖区域”可以由存储在SQLServer表中的数千个地理坐标经纬度数据组成。理想情况下,我希望从sql server数据库2008 R2计算凸面外壳点,以便将结果点传递到Google地图以创建多边形覆盖 这里的示例正是我所要寻找的,只是如果可能的话,我想直接从SQL server获取右面板上的外壳点。原因是我可能需要处理数千个地理坐标。我不希望从数据库中检索大量
谢谢。您没有提到您使用的是哪个版本,但SQL 2012中有一个内置的起始版本,它应该完全满足您的需求 下面是链接到文档中示例的扩展,该文档获取凸面外壳角点的坐标。根据我的经验,它假设你有一个数字表,围绕着一个非常有用的东西
with cte as (
SELECT City, geography::ConvexHullAggregate(SpatialLocation) AS Hull
FROM Person.Address
WHERE City in ('Ottawa', 'Burnaby')
group by City
)
select City, Number, Edge.Long as Long, Edge.Lat as Lat
from cte
cross apply (
select Number, Hull.STPointN(Number) as Edge
from dbadmin.dbo.Numbers
where Number < Hull.STNumPoints()
) as HullEdges
谢谢,我正在使用2008R2,但如果我知道有一个内置功能可以使用,我可以将其升级到2012年。我很想听到更多的细节…谢谢,今天我将SQL升级到了2012开发版。有人能举一个例子说明ConvexHullAggregate函数如何根据查询的结果经纬度返回多边形所需的一组点吗?我无法让它工作。但我最终决定遵循这个思路,让它以合理的性能完成我想要的任务。谢谢你抽出时间来。