我在网上找到了一段代码。它通过给定的纬度/经度点和距离计算最小边界矩形。
private static void GetlatLon(double LAT, double LON, double distance, double angle, out double newLon, out double newLat)
{
double dx = distance * 1000 * Math.Sin(angle * Math.PI / 180.0);
double dy = distance * 1000 * Math.Cos(angle * Math.PI / 180.0);
double ec = 6356725 + 21412 * (90.0 - LAT) / 90.0;
double ed = ec * Math.Cos(LAT * Math.PI / 180);
newLon = (dx / ed + LON * Math.PI / 180.0) * 180.0 / Math.PI;
newLat = (dy / ec + LAT * Math.PI / 180.0) * 180.0 / Math.PI;
}
public static void GetRectRange(double centorlatitude, double centorLogitude, double distance,
out double maxLatitude, out double minLatitude, out double maxLongitude, out double minLongitude)
{
GetlatLon(centorlatitude, centorLogitude, distance, 0, out temp, out maxLatitude);
GetlatLon(centorlatitude, centorLogitude, distance, 180, out temp, out minLatitude);
GetlatLon(centorlatitude, centorLogitude, distance, 90, out minLongitude, out temp);
GetlatLon(centorlatitude, centorLogitude, distance, 270, out maxLongitude, out temp);
}
double ec = 6356725 + 21412 * (90.0 - LAT) / 90.0; //why?
double ed = ec * Math.Cos(LAT * Math.PI / 180); // why?
dx / ed //why?
dy / ec //why?
6378137是赤道半径,6356725是极半径,21412 =6378137 -6356725。从链接中,我知道了一些含义。但是这四行,我不知道为什么。你能帮忙提供更多信息吗?你能帮我知道公式的推导吗?
从链接中,在“目标点给定距离和距起点的方位”部分中,它给出了另一个公式来获得结果。公式的推导是什么?
由此链接,我知道了Haversine公式的推导,它非常有用。我不认为“目标点给定距离和距起点的方位”部分中的公式只是Haversine的简单回归。
非常感谢!