我想为一个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)
但到目前为止,我还没弄清楚如何使用它。我会继续玩这个,但如果有任何其他方法我可以采取,或者如果有人知道如何正确使用这个功能,我将不胜感激。
答案 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并且有某种意义