我有一个地理纬度和经度(例如:39.6199,-79.9535)。如何在Java中围绕该点建立一个半径为1公里的边界框?
两条经线之间的距离会根据所在的纬度线而变化。它可以计算为:
3960 * 2 * pi /360 * cosine(latitude)
英里
两条纬线之间的距离在任何地方都是恒定的:69
英里。
因此,要在地理位置周围画一个1x1英里的正方形,您应该找到与该点纬度平行的两个纬线,其距离南部和北部的距离为0.5英里。然后找到两条距西部和东部0.5英里的经线。
例如,0.5英里意味着0.5/69的纬度差异。如果给定点的纬度为39.6199,则正方形的上下两侧的纬度值分别为:36.6199+(0.5/69)
和 36.6199-(0.5/69)
。
double latitude = location.getLatitude();
double longitude = location.getLongitude();
// 6378000 Size of the Earth (in meters)
double longitudeD = (Math.asin(1000 / (6378000 * Math.cos(Math.PI*latitude/180))))*180/Math.PI;
double latitudeD = (Math.asin((double)1000 / (double)6378000))*180/Math.PI;
double latitudeMax = latitude+(latitudeD);
double latitudeMin = latitude-(latitudeD);
double longitudeMax = longitude+(longitudeD);
double longitudeMin = longitude-(longitudeD);