考虑到纬度和经度,我一直在寻找一种方法来了解距给定中心的某个点位于哪个季度。
西北东北 ……|…… ..X...|...... ……|…… - - - X - - - ……|…… ……|…… ……|…… 西南证券交易所
考虑到纬度和经度,我一直在寻找一种方法来了解距给定中心的某个点位于哪个季度。
西北东北 ……|…… ..X...|...... ……|…… - - - X - - - ……|…… ……|…… ……|…… 西南证券交易所
以度为单位计算从中心到点的方位(搜索航空公式主页)。那么如果方位在 [0,90) 范围内:NE,
[90,180) -> SE。其他两个方向相同。[180,270) -> 西南 [270, 360) -> 西北
您可以通过以下方式简化检查
double bearing = bearing(latCenter, lonCenter, lat, lon);
int index = bearing / 90;
String[] quadrants = new String[] {"NE", "SE", "SW", NW"};
String result = quadrant[index];
忽略两极和反子午线(经度 = +/- 180),这很简单:
if(lat > centerLat)
if(long < centerLong)
NW
if(long > centerLong
NE
if(lat < centerLat)
if(long < centerLong)
SW
if(long > centerLong
SE
如果您需要它在反子午线附近工作,请将您的整个系统向东平移,方法是将所有经度添加 180 度。