如何创建特定大小的SQL Server Geography多边形?

时间:2012-01-16 09:39:16

标签: sql sql-server tsql geography

我想为一个80公里x 80公里的城市创建一组多边形。鉴于Lat和Long的起点,我的想法是我可以向该点添加80km,这样我就可以得到4个点来创建多边形。

(x,y) - > (x + 80km,y) - > (x + 80km,y + 80km) - > (x,y + 80km) - > (X,Y)

我遇到困难的地方是找到一种计算点+ 80km的方法。我找到了SQL Server Spatial Tools并且有一个函数

SqlGeography LocateAlongGeog(SqlGeography g, double distance)

但到目前为止,我还没弄清楚如何使用它。我会继续玩这个,但如果有任何其他方法我可以采取,或者如果有人知道如何正确使用这个功能,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

经度是一个很棒的圈子"测量,即如果你绘制一个代表地球特定经度的圆圈,它总是一个圆心,其中心是地球的中心 - 所以为了以恒定的经度环绕地球,你总是行进相同的距离:

2 * PI * 6378 /* 6378 is the radius of the Earth in km */

因此,向北行驶(即沿同一经度行驶)80公里将增加您的纬度:

360 * 80 / (2 * PI * 6378) 

当您在同一纬度环绕地球环绕时,纬度变得更加棘手,这取决于您旅行的纬度:但是,公式很简单,我查了一下:{{3} }

2 * PI * 6378 * COS(LAT)   /* where LAT is your Latitude */

所以,如果你在纬度LAT,并向东移动80公里,你将增加你的经度:

360 * 80 / (2 * PI * 6378 * COS(LAT))

需要注意的事项: a)6378仅精确到最近的km b)你的两个北方点之间的东/西不会精确地为80公里 - 对于北纬80度到南纬80度之间的纬度没有显着差异 - 只要你不寻找高精度的精确定位点(我猜测基准测量值为80公里你不会这么做得很好(并指出Bing或Google的优点) c)SQL使用弧度而非度数来计算三角函数 - 所以在SQL中你的余弦需要是:     COS(PI * LAT / 180)

HTH并且有某种意义