2012-01-16 21 views
3

我想为80km x 80km的城市创建一组多边形。给定一个开始的纬度和长度,我的想法是我可以增加80公里到那个点,以便我得到4个点来创建多边形。如何创建具有特定大小的SQL Server地理多边形?

(X,Y) - >(X +80公里,Y) - >(X +80公里,Y +80公里) - >(X,Y +80公里) - >(X,Y)

在哪里我很难找到一种方法来计算点+ 80公里。我已经找到了SQL Server Spatial Tools,有一个功能

SqlGeography LocateAlongGeog(SqlGeography g, double distance) 

但到目前为止,我一直无法弄清楚如何使用它。我会继续玩这个游戏,但是如果有其他方法可以采用,或者如果有人知道如何正确使用这个功能,我会很感激。

+0

我也做过类似的事情为半径的搜索,但它远远从微不足道。我们在T-SQL中实现了Haversine公式,为此有一些解决方法。现在,你可以用CLR存储过程来做到这一点。无论如何,这并不容易,因为当你朝着两极移动时,经度的程度较小。祝你好运。 – 2012-02-20 21:06:21

+1

这可能有助于http://www.zodiacal.com/tools/lat_table.php – Aprillion 2012-03-16 21:58:28

+0

@deathApril - 感谢您的链接。有趣的是,无论你从赤道向北还是向南,距离都是一样的。 – brianestey 2012-03-18 13:24:34

回答

3

经度是一个“大圆圈”量度,也就是说,如果绘制一个代表特定经度圆的圆圈,它总是一个以地球中心为中心的圆圈 - 所以要以恒定的经度环绕地球,你始终行驶相同距离:

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

因此,移动北(即沿同一经度行驶)80会增加你的纬度:

360 * 80/(2 * PI * 6378) 

纬度是棘手COS的行驶距离,当你在山姆环游地球然而,该公式很简单,我看着它在:http://www.newton.dep.anl.gov/askasci/env99/env086.htm

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

所以,如果你是在纬度LAT和移动80公里东,你这取决于你正在行驶的纬度Ë纬度变化会增加你的经度:

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

几件事情需要注意: 一)6378只精确到公里 二)东/西你的两个北风点之间不能精确地80公里 - 不显著纬度在北纬80度和南纬80度之间不同 - 只要你是n找到高精度的精确度(我猜测你的基准测量值不超过80公里),它会很好地完成(并指向Bing或谷歌) c)SQL使用三角函数计算三角函数弧度不度 - 所以在SQL你的余弦将需要: COS(PI * LAT/180)

HTH,使某种意义

+0

我最终做了类似的事情。感谢您的意见。 – brianestey 2012-04-18 06:17:23

相关问题