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

3
我想创建一个城市的多边形组,大小为80km x 80km。给定起始纬度和经度,我的想法是可以在该点上加上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)

但是到目前为止,我还没有弄清楚如何使用它。我将继续尝试,但如果有其他方法可以采用,或者任何人知道如何正确使用该函数,我将不胜感激。


我曾经为半径搜索做过类似的事情,但这绝非易事。我们在 T-SQL 中实现了 Haversine 公式,并有一些解决方法。如今,你可以通过 CLR 存储过程来实现这个。不管怎样,这并不容易,因为随着接近极地,经度的每个单位会变得更小。祝好运。 - Pittsburgh DBA
1
这可能会有所帮助:http://www.zodiacal.com/tools/lat_table.php - Aprillion
@deathApril - 感谢提供链接。有趣的是,从赤道向北或向南行进距离相同。 - brianestey
1个回答

4

经度是一个“大圆”度量,也就是说,如果你在地球上绕着特定的经线画一个圆,它总是一个以地球中心为中心的圆 - 所以要以恒定的经度环游地球,你总是走相同的距离:

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

因此,向北移动(即沿着相同的经线旅行)80公里将使您的纬度增加:

360 * 80 / (2 * PI * 6378) 

纬度比较棘手,因为在相同纬度下绕地球一周行程的距离取决于您行进的纬度。但是,公式很简单,我在以下网址查找: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))

需要注意的几点: a)6378只能精确到最近的公里数 b)你的两个北极点之间的东/西不会精确到80公里 - 在大约北纬80度和南纬80度之间的纬度范围内差别不大 - 只要你不需要高精度的精确定位(基于80公里的基本测量,我猜想你并不需要),这将做得很好(并指向Bing或Google) c)SQL使用弧度而不是角度计算三角函数 - 所以在SQL中,你的余弦值应该是:COS(PI * LAT / 180)
希望这对你有所帮助并且能够讲得通。

我最终做了类似于这个的事情。感谢你的意见。 - brianestey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接