已知經緯度和半徑,計算最大經緯度範圍

 1. 已知經緯度,計算兩點距離

 

#include <math.h>
#define PI                                                       3.1415926535898
#define EARTH_RADIUS_KM                                                 6378.137

static double rad(double d)
{
	//d*PI/180.0;
	return d * 0.017453292519943;
}

double get_distance_metre(double lat1, double lng1, double lat2, double lng2)
{
	double rad_lat1 = rad(lat1);
	double rad_lat2 = rad(lat2);
	double a = rad_lat1 - rad_lat2;
	double b = rad(lng1) - rad(lng2);
	double s = 2 * asin(sqrt(pow(sin(a/2),2) +
	cos(rad_lat1)*cos(rad_lat2)*pow(sin(b/2),2)))* EARTH_RADIUS_KM;
	return s*1000;
}


已知經緯度和半徑,計算最大經緯度範圍

void get_max_range(double *max_lat, double *min_lat, double *max_lng, double *min_lng, double lat, double lng, double r_metre) 
{
	double radius = r_metre / 1000; 
	double range = 180 / PI * radius / EARTH_RADIUS_KM; 
	double lng_r = range / cos(lat * PI / 180); 
	*max_lat = lat + range; 
	*min_lat = lat - range;
	*max_lng = lng + lng_r;
	*min_lng = lng - lng_r;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章