我有一个地理纬度和经度(例如:39.6199,-79.9535)。如何在半径为1km的点周围用Java构建一个边界框?
答案 0 :(得分:8)
两条经度线之间的距离根据您所在的纬度线而变化。它可以计算为:
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)
。
答案 1 :(得分:4)
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);